如何在 Ubuntu 20.04 上使用 Nginx 背後的 SSL 配置 Jenkins

Jenkins 是一個開源工具自動化工具,用於設置整個軟件交付管道——持續交付。 這使開發人員能夠在整個生命週期內管理和控制軟件交付流程,例如可靠地構建、測試和部署他們的軟件。

Jenkins 擁有一個可擴展且充滿活力的活躍社區。 它是用Java編寫的。 通常,Jenkins 作為獨立的內置 Java servlet 應用程序運行。 也可以在 Java servlet 容器中運行,例如 Apache Tomcat 或 GlassFish。

在本教程中,我們將學習如何 配置詹金斯Nginx 背後的 SSLUbuntu 20.04.

先決條件

  • 一個 Ubuntu 20.04 服務器
  • 一個用戶 sudo 規定
  • 最少 1 GB RAM
  • 已安裝 Oracle JDK 11 或更高版本。

第 1 步:在 Ubuntu 上安裝 Jenkins

默認 Ubuntu 存儲庫中可用的 Jenkins 包很可能落後於最新版本。 建議從官方存儲庫中提供的計劃維護包中安裝 Jenkins。

我們將首先將存儲庫密鑰添加到系統中。

$ 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

然後復制key

$ 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 衍生產品。 您可以根據您的網絡服務器要求使用和優化。

現在創建配置文件的符號以啟用它

$ 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 用戶。

創建詹金斯 admin 用戶

現在驗證 Jenkins 的 URL。

現在你可以開始使用你的 Jenkins

詹金斯歡迎頁面

結論

在本教程中,我們學習瞭如何在 Ubuntu 20.04 上使用 Nginx 後面的 SSL 配置 Jenkins。 您可以開始配置 CI/CD 流程的作業和管道。