如何在Ubuntu16.04中用Apache部署Jenkins自動化服務器
Jenkins 是從 Hudson 項目衍生出來的自動化服務器。Jenkins 是一個基于服務器的應用程序,運行在 Java servlet 容器中,它支持包括 Git、SVN 以及 Mercurial 在內的多種 SCM(源碼控制工具(Source Control Management))。Jenkins 提供了上百種插件幫助你的項目實現自動化。Jenkins 由 Kohsuke Kawaguchi 開發,在 2011 年使用 MIT 協議發布了***個發行版,它是個自由軟件。
在這篇指南中,我會向你介紹如何在 Ubuntu 16.04 中安裝***版本的 Jenkins。我們會用自己的域名運行 Jenkins,在 apache web 服務器中安裝和配置 Jenkins,而且支持反向代理。
前提
- Ubuntu 16.04 服務器 - 64 位
- Root 權限
***步 - 安裝 Java OpenJDK 7
Jenkins 基于 Java,因此我們需要在服務器上安裝 Java OpenJDK 7。在這里,我們會從一個 PPA 倉庫安裝 Java 7,首先我們需要添加這個倉庫。
默認情況下,Ubuntu 16.04 沒有安裝用于管理 PPA 倉庫的 python-software-properties 軟件包,因此我們首先需要安裝這個軟件。使用 apt 命令安裝 python-software-properties。
- apt-get install python-software-properties
下一步,添加 Java PPA 倉庫到服務器中。
- add-apt-repository ppa:openjdk-r/ppa
用 apt 命令更新 Ubuntu 倉庫并安裝 Java OpenJDK。
- apt-get update
- apt-get install openjdk-7-jdk
輸入下面的命令驗證安裝:
- java -version
你會看到安裝到服務器上的 Java 版本。
在 Ubuntu 16.04 上安裝 Java OpenJDK 7
第二步 - 安裝 Jenkins
Jenkins 給軟件安裝包提供了一個 Ubuntu 倉庫,我們會從這個倉庫中安裝 Jenkins。
用下面的命令添加 Jenkins 密鑰和倉庫到系統中。
- wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
- echo 'deb https://pkg.jenkins.io/debian-stable binary/' | tee -a /etc/apt/sources.list
更新倉庫并安裝 Jenkins。
- apt-get update
- apt-get install jenkins
安裝完成后,用下面的命令啟動 Jenkins。
- systemctl start jenkins
通過檢查 Jenkins 默認使用的端口(端口 8080)驗證 Jenkins 正在運行。我會像下面這樣用 netstat 命令檢測:
- netstat -plntu
Jenkins 已經安裝好了并運行在 8080 端口。
已經將 Jenkins 安裝到 8080 端口
第三步 - 為 Jenkins 安裝和配置 Apache 作為反向代理
在這篇指南中,我們會在一個 Apache web 服務器中運行 Jenkins,我們會為 Jenkins 配置 apache 作為反向代理。首先我會安裝 apache 并啟用一些需要的模塊,然后我會為 Jenkins 用域名 my.jenkins.id 創建虛擬主機文件。請在這里使用你自己的域名并在所有配置文件中出現的地方替換。
從 Ubuntu 倉庫安裝 apache2 web 服務器。
- apt-get install apache2
安裝完成后,啟用 proxy 和 proxy_http 模塊以便將 apache 配置為 Jenkins 的前端服務器/反向代理。
- a2enmod proxy
- a2enmod proxy_http
下一步,在 sites-available 目錄創建新的虛擬主機文件。
- cd /etc/apache2/sites-available/
- vim jenkins.conf
粘貼下面的虛擬主機配置。
- <Virtualhost *:80>
- ServerName my.jenkins.id
- ProxyRequests Off
- ProxyPreserveHost On
- AllowEncodedSlashes NoDecode
- <Proxy http://localhost:8080/*>
- Order deny,allow
- Allow from all
- </Proxy>
- ProxyPass / http://localhost:8080/ nocanon
- ProxyPassReverse / http://localhost:8080/
- ProxyPassReverse / http://my.jenkins.id/
- </Virtualhost>
保存文件。然后用 a2ensite 命令激活 Jenkins 虛擬主機。
- a2ensite jenkins
重啟 Apache 和 Jenkins。
- systemctl restart apache2
- systemctl restart jenkins
檢查 Jenkins 和 Apache 正在使用 80 和 8080 端口。
- netstat -plntu
檢查 Apache 和 Jenkins 是否在運行
第四步 - 配置 Jenkins
Jenkins 用域名 'my.jenkins.id' 運行。打開你的 web 瀏覽器然后輸入 URL。你會看到要求你輸入初始管理員密碼的頁面。Jenkins 已經生成了一個密碼,因此我們只需要顯示并把結果復制到密碼框。
用 cat 命令顯示 Jenkins 初始管理員密碼。
- cat /var/lib/jenkins/secrets/initialAdminPassword
- a1789d1561bf413c938122c599cf65c9
獲取 Jenkins 管理員密碼
將結果粘貼到密碼框然后點擊 Continue。
安裝和配置 Jenkins
現在為了后面能比較好的使用,我們需要在 Jenkins 中安裝一些插件。選擇 Install Suggested Plugin,點擊它。
安裝 Jenkins 插件
Jenkins 插件安裝過程:
Jenkins 安裝完插件
安裝完插件后,我們需要創建一個新的管理員密碼。輸入你的管理員用戶名、密碼、電子郵件等,然后點擊 ‘Save and Finish’。
創建 Jenkins 管理員賬戶
點擊 start 開始使用 Jenkins。你會被重定向到 Jenkins 管理員面板。
重定向到管理員面板
成功完成 Jenkins 安裝和配置。
Jenkins 管理員面板
第五步 - Jenkins 安全
在 Jenkins 管理員面板,我們需要為 Jenkins 配置標準的安全,點擊 ‘Manage Jenkins’ 和 ‘Configure Global Security’。
Jenkins 全局安全設置
Jenkins 在 ‘Access Control’ 部分提供了多種認證方法。為了能夠控制所有的用戶權限,我選擇了 ‘Matrix-based Security’。在復選框 ‘User/Group’ 中啟用 admin 用戶。通過勾選所有選項給 admin 所有權限,給 anonymous 只讀權限。現在點擊 ‘Save’。
配置 Jenkins 權限
你會被重定向到面板,如果出現了登錄選項,只需輸入你的管理員賬戶和密碼。
第六步 - 測試一個簡單的自動化任務
在這一部分,我想為 Jenkins 服務測試一個簡單的任務。為了測試 Jenkins 我會創建一個簡單的任務,并用 top 命令查看服務器的負載。
在 Jenkins 管理員面板上,點擊 ‘Create New Job’。
在 Jenkins 中創建新的任務
輸入任務的名稱,在這里我輸入 ‘Checking System’,選擇 Freestyle Project 然后點擊 OK。
配置 Jenkins 任務
進入 Build 標簽頁。在 Add build step,選擇選項 Execute shell。
在輸入框輸入下面的命令。
- top -b -n 1 | head -n 5
點擊 Save。
啟動 Jenkins 任務
現在你是在任務 ‘Project checking system’ 的任務頁。點擊 Build Now 執行任務 ‘checking system’。
任務執行完成后,你會看到 Build History,點擊***個任務查看結果。
下面是 Jenkins 任務執行的結果。
構建和運行 Jenkins 任務
到這里就介紹完了在 Ubuntu 16.04 中用 Apache web 服務器安裝 Jenkins 的內容。