Ubuntu20.04でNginxの背後にSSLを使用してJenkinsを構成する方法

Jenkinsは、ソフトウェア配信パイプライン全体(継続的配信)をセットアップするためのオープンソースのツール自動化ツールです。 これにより、開発者は、ソフトウェアの確実なビルド、テスト、展開など、ライフサイクル全体を通じてソフトウェア配信プロセスを管理および制御できます。

Jenkinsには、拡張可能で活気に満ちた活発なコミュニティがあります。 Javaで書かれています。 通常、Jenkinsはスタンドアロンの組み込みJavaサーブレットアプリケーションとして実行されます。 次のようなJavaサーブレットコンテナで実行することもできます。 Apache TomcatまたはGlassFish。

このチュートリアルでは、 Jenkinsを構成するNginxの背後にあるSSL オン Ubuntu 20.04

前提条件

  • Ubuntu20.04サーバー
  • のユーザー sudo 提供
  • 最小1GBのRAM
  • Oracle JDK11以降がインストールされています。

ステップ1:UbuntuにJenkinsをインストールする

デフォルトのUbuntuリポジトリで利用可能なJenkinsパッケージは、最新バージョンよりも遅れている可能性があります。 公式リポジトリにある計画されたメンテナンスパッケージからJenkinをインストールすることをお勧めします。

まず、リポジトリキーをシステムに追加します。

$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

このガイドを書くとき、手順はバージョンをインストールします 2.303.3 ジェンキンスの

次に、パッケージリポジトリをに追加しましょう sources.list ファイル:

$ sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

リポジトリのキャッシュを更新する必要があります

$ sudo apt update

これで、Jenkinsをインストールできます。

$ sudo apt install jenkins

その後、サービスを開始します

$ sudo systemctl start jenkins

サーバーで自動的に開始するようにサービスを構成しましょう

$ sudo systemctl enable jenkins

サービスの状況を確認できます

$ sudo systemctl status jenkins

ファイルを見ればバージョンが確認できます /var/lib/jenkins/config.xml

$ cat /var/lib/jenkins/config.xml

<?xml version='1.1' encoding='UTF-8'?>
<hudson>
<disabledAdministrativeMonitors/>
<version>2.303.3</version>
...
...
</hudson>

ステップ2:SSL証明書を使用してNginxを構成する

Nginxを使用して通信をプロキシするため、最初にインストールする必要があります

$ sudo apt install nginx

次に、使用するフォルダーに証明書をコピーする必要があります。 すでにSSL証明書をお持ちであるとみなします。

証明書をコピーします

$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt

次に、キーをコピーします

$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key

Nginxのデフォルト構成との競合を回避するために、デフォルト構成を sites-enabled ディレクトリ

sudo rm /etc/nginx/sites-enabled/default

それでは、Jenkinsの構成ファイルを作成しましょう。 Jenkinsは通常ポート8080を使用して実行しますが、Nginxを使用しているため、ポート80と443でリッスンし、ドメイン名情報を使用して、Jenkinsのポート8080で内部的に通信をプロキシします。

設定する構成により、すべてのHTTPリクエストがHTTPSに自動的に強制されます

$ sudo vim /etc/nginx/sites-available/jenkins.conf

upstream jenkins.domain.com {
server SERVER_IP:8080;
}
server {
server_name jenkins.domain.com;
listen 80 ;
access_log /var/log/nginx/jenkins.log;
return 301 https://$host$request_uri;
}
server {
server_name jenkins.domain.com;
listen 443 ssl http2 ;
access_log /var/log/nginx/jenkins.log;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_certificate /etc/nginx/certs/jenkins.domain.com.crt;
ssl_certificate_key /etc/nginx/certs/jenkins.domain.com.key;
add_header Strict-Transport-Security "max-age=31536000";
location / {
proxy_pass https://jenkins.domain.com;
}
}

Jenkins Nginx構成に加えて、必要なnginx派生物のいくつかを追加しました。 Webサーバーの要件に応じて使用および最適化できます。

次に、構成ファイルのシンボリックを作成して有効にします

$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf

Nginxサービスを開始します

$ sudo systemctl start nginx

次に、起動時に有効にします

$ sudo systemctl enable nginx

これで、Nginx構成をテストできます

$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

次に、Nginxサービスを再起動して、構成を考慮します

$ sudo systemctl restart nginx

次に、ファイアウォールのポート80と443を開きます。

$ sudo ufw allow 80,443/tcp

また、UFWを有効にする前に必ずsshポートを開いてください。そうしないと、問題が発生した場合にssh接続が失われる可能性があります。

$ sudo ufw allow 'OpenSSH'

まだ有効になっていない場合は、UFWを有効にします

$ sudo ufw enable

ステップ3:Jenkinsにアクセスして構成する

URL https://jenkins.domain.comでブラウザを開くと、Jenkinsのページでパスワードの入力を求められます。

パスワードを取得するには、示されたファイルの内容を表示する必要があります

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

88ba484d8cff4150a90683a07c89ea7c

次に、パスワードを貼り付けて、次のページに進みます。 これで、デフォルトのプラグインをインストールするか、インストールするプラグインを選択するかを尋ねるページが表示されます。 この場合、デフォルトのものを残します

インストールするプラグインを選択します

次に、インストールプロセスが表示されます

インストールプロセス

次に、を作成する必要があります admin ユーザー。

Jenkinsを作成する admin ユーザー

次に、JenkinsのURLを検証します。

これで、Jenkinsの使用を開始できます

ジェンキンスウェルカムページ

結論

このチュートリアルでは、Ubuntu20.04でNginxの背後にSSLを使用してJenkinsを構成する方法を学習しました。 CI / CDプロセスのジョブとパイプラインの構成を開始できます。