前言
最近在搭建一個自己的網站,網站框架搭好了要把專案放到伺服器執行,但是每次更新網站內容就要手動部署一次,實在很麻煩,於是就想搭建一套自動化部署的服務。看了一些案例最後選用現在比較主流的Jenkins + Github + Nginx的方案來搭建,於是跟著教程去做,順便把自己搭建的過程分享出去。以下操作預設大家已經申請自己的伺服器,並開放所需要的埠。我自己的伺服器是阿里雲CentOS。
注意:ubuntu使用(apt-get install 軟體名) 來安裝軟體,redhat(即CentOS)伺服器使用(yum install 軟體名) 命令安裝,使用的是xhell遠端控制工具。
自動化部署原理
簡單的說就是當我們寫好程式碼build完成後,把程式碼提交到github上,jenkins監測到程式碼變化就會自動構建專案,把程式碼拉取到伺服器,從而實現自動部署。
安裝Jenkins
一、安裝 Jenkins 前的環境準備(CentOS7)
1.新增yum倉庫源
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
若是報錯提示:bash:wget:command not found
,說明沒有安裝它,執行安裝命令即可;
yum install -y wget
安裝完成之後,在執行以上命令。
Saving to: '/etc/yum.repos.d/jenkins.repo'
為儲存目錄。
2.匯入倉庫源的key(祕鑰)
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
3.保證系統Java版本為8.0或8.0以上(JDK1.8以上)
yum -y install java
java -version #檢視版本驗證是否安裝成功
4. 關閉firewalld防火牆
如果是阿里雲伺服器的話,一般都會關閉防火牆,此步可以省略。但需要開放自己的埠,再到阿里雲伺服器的後臺,配置安全組,入內網配置即可訪問。
systemctl stop firewalld // 關閉當前的防火牆服務
systemctl disable firewalld // 禁用防火牆開機啟動
getenforce
檢視是否禁用成功
二. Jenkins 安裝與初始化配置
1.Yum源安裝 Jenkins 最新版本
yum install jenkins -y
2. 更改 Jenkins 啟動使用者與埠
vi /etc/sysconfig/jenkins
需要把JENKINS_USER="jenkins"
改為JENKINS_USER="root"
,埠號8080若是沒有被佔用,預設即可。若是阿里雲伺服器,需要在安全組中新增8080埠。
3.啟動 Jenkins 並檢視是否啟動成功
systemctl start jenkins //啟動Jenkins
systemctl status jenkins //檢視Jenkins狀態
systemctl stop jenkins //停止Jenkins
若使用systemctl status jenkins
檢視Jenkins狀態,綠色文字顯示和圖中的不一致,如active(exited)
,
表示並沒有啟動成功,可以先停止systemctl stop jenkins
,然後在重啟systemctl start jenkins
即可。
補充:
使用systemctl 檢視Jenkins服務的狀態,返回的狀態有以下幾種:
1. loaded ##系統服務已經初始化完成,載入過配置
2. active(running) ##正有一個或多個程式正在系統中執行, vsftpd就是這種模式
3. atcive(exited) ##僅執行一次就正常結束的服務, 目前並沒有任何程式在系統中執行
4. atcive(waiting)##正在執行當中,不過還在等待其他的事件才能繼續處理
5. inactive #服務關閉
6. enbaled ##服務開機啟動
7. disabled ##服務開機不自啟
8. static ##服務開機啟動項不可被管理
9. failed ##系統配置錯誤
對於 active(exited) 狀態的補充說明
在作業系統中,有某些服務只需要初始化一下就可以了;不需要在伺服器中啟動一個守護程序。這種服務初始化完成後就直接退出,其服務的狀態就是active(exited)。
4.瀏覽器開啟頁面
在瀏覽器中輸入 ip:port即可,如 http://192.168.1.188:8080,使得可以通過域名方式訪問。
注:8080埠需要提前開放。
通過該頁面中的路徑獲取管理員到初始密碼。
cat /var/lib/jenkins/secrets/initialAdminPassword
輸入得到到密碼,進入安裝外掛頁面
選擇安裝推薦到外掛,進入到安裝頁面
安裝完成進入建立使用者頁面
儲存並完成,安裝至此完成
安裝nginx
系統平臺:CentOS release 6.6(Final) 以上版本 64位。
在 CentOS 上,可直接用 yum
來安裝 Nginx: yum install -y nginx
安裝完成後,使用 nginx
命令啟動 Nginx: nginx
設定 Nginx 開機啟動: systemctl enable nginx.service
開啟 Nginx 的預設配置檔案 /etc/nginx/nginx.conf
,修改 Nginx 配置,將預設的 root /usr/share/nginx/html;
修改為: root /data/static;
,如下:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /data/static;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
注:若要把靜態檔案放在
root
資料夾的根目錄下,不僅需要把root /usr/share/nginx/html;
修改為:root /root;
還需要把頭部的user nginx;
改為user root;
。
配置檔案將 /data/static
作為所有靜態資源請求的根路徑,如訪問: http://你的ip地址/index.html
,將會去 /data/static
目錄下去查詢 index.html
。
可能需要重啟 Nginx 讓新的配置生效,如: nginx -s reload
重啟後,重啟後應該已經可以訪問到靜態伺服器了,可以新建一個靜態檔案,檢視服務是否執行正常。
配置成功後,開啟站點如下圖:
Jenkins配置
在上文中我們安裝好了Jenkins,現在開始進行Jenkins配置。
一、github配置
在github中選擇settings
選擇Developer settings
選擇Personal Access Token --> Generate new token, 新建一個有讀寫許可權的使用者。 如下勾選選項:
確定後生成token,複製下來儲存好。
二、jenkins配置
基本配置
登入進jenkins後選擇系統管理 => 系統設定 => Github Server 新增資訊
新增jenkins憑據
其中secret是填寫剛剛github的token
完成後點選連線測試,連線成功資訊如下:
選擇系統管理 => 全域性工具配置 在JDK安裝中去掉勾選自動安裝,在JAVA_HOME中輸入java jdk安裝的根目錄,我的安裝根目錄是/usr/
完成後回到首頁新建任務,填寫任務名稱,選擇構建自由風格的軟體專案,點選確定。
常規設定
原始碼管理
新增憑據
若是在原始碼管理輸入github專案地址的時候,出現了jenkins提示:Failed to connect to repository : Error performing command: git ls-remote -h
,如下圖:
可能是jenkins伺服器未安裝git或者git版本過低;
重新安裝git即可。
yum install git -y
安裝完成之後,再重新整理後正常。
構建觸發器
選擇輪詢SCM,輸入出發時間
構建
選擇執行shell,輸入構建指令碼
最後儲存,點選立即構建,然後專案會有構建進度。
可以在構建歷史檢視構建狀態,圓球是藍色並且出現success表示構建成功。
總結
整個專案搭建下來踩了很多的坑,尤其是在安裝Jenkins的時候,由於自己不熟悉Linux操作命令,即使自己照葫蘆畫瓢也沒有安裝成功,後來晚上在室友的幫助下,成功啟動了8080埠頁面。後來自己又解除安裝重新走了一遍流程。在此感謝室友的幫助!