最近在搭建一個本身的網站,網站框架搭好了要把項目放到服務器運行,可是每次更新網站內容就要手動部署一次,實在很麻煩,因而就想搭建一套自動化部署的服務。看了一些案例最後選用如今比較主流的Jenkins + Github + Nginx的方案來搭建,因而跟着教程去作,看了不少教程其實不是太完整,搭建過程一波三折,就想寫下本身搭建的過程分享出去。如下操做默認你們已經申請本身的服務器,並開放所須要的端口。我本身的服務器是ubuntu。注意:ubuntu使用(apt-get install 軟件名) 來安裝軟件,redhat(即CentOS)服務器使用(yum install 軟件名) 命令安裝,使用的是xhell遠程控制工具。html
簡單的說就是當咱們寫好代碼build完成後,把代碼提交到github上,jenkins監測到代碼變化就會自動構建項目,把代碼拉取到服務器,從而實現自動部署。java
jenkins須要java環境,須要安裝java jdk,第一種安裝方式是從包管理工具中安裝,即執行如下命令,這裏我裝的是jdk8. 第二種是從官網下載安裝包解壓到指定文件夾下,這種方式比較容易出錯,不建議使用。linux
sudo apt-get update
sudo apt-get install openjdk-8-jdk
複製代碼
安裝完成後配置環境變量,執行sudo vi ~/.bashrc,在文件的最後添加如下信息,注意把JAVA_HOME改爲你本身的java路徑,個人默認安裝路徑是/usr/lib/jvm/java-8-openjdk-amd64nginx
#set oracle jdk environment
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
JRE_HOME=$JAVA_HOME/jre
JAVA_BIN=$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME PATH CLASSPATH
複製代碼
使配置當即生效git
source ~/.bashrc
複製代碼
在執行source ~/.bashrc命令的時候遇到問題 syntax error: unexpected end of file,檢查了fileformat=unix沒有問題, 最後經過cp /etc/skel/.bashrc ~命令還原.bashrc文件, 配置環境變量後執行source ~/.bashrc無報錯,輸入java -version輸出java jdk版本號信息,安裝成功。github
執行如下命令安裝nginxshell
sudo apt-get update
sudo apt-get install nginx
複製代碼
安裝完成後nginx默認打開,在瀏覽器輸入你的服務器ip,就能夠看到頁面,頁面默認路徑是/var/www/html,若是沒看到,請檢查安裝時是否報錯,以及檢查是否已經開放80端口。ubuntu
首先,將存儲庫祕鑰添加到系統瀏覽器
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
複製代碼
添加密鑰後,系統將返回OK 。 接下來,咱們將Debian包存儲庫地址附加到服務器的sources.list :bash
echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
複製代碼
而後更新包存儲庫
sudo apt-get update
複製代碼
最後安裝Jenkins,出現選擇輸入y便可
sudo apt-get install jenkins
複製代碼
可能遇到的狀況: apt-get install jenkins報 ERROR: No Java executable found in current PATH: /bin:/usr/bin:/sbin:/usr/s 解決: 一、檢查你的PATH_HOME路徑是否正確,不正確的話從新配置,執行echo $PATH看一下是否有東西
二、執行如下命令,關聯一下java的可執行文件。
update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk-12.0.1/bin/java" 1 #換成你的安裝路徑
update-alternatives --config java
複製代碼
問題解決沒有問題後,在瀏覽器輸入服務器ip+8080(如:128.22.26.108:8080),一切正常的話能夠顯示如下頁面:
根據提示路徑獲取解鎖密碼,解鎖jenkins遇到問cd: secrets/: Permission denied,緣由是secrets沒有讀取權限,給文件夾賦權便可
sudo chmod 777 secrets
複製代碼
進入目錄,打開文件,複製密碼
sudo vi initialAdminPassword
複製代碼
解鎖進去後選擇安裝建議插件
接着等待插件安裝完成後,建立一個管理員帳戶,輸入信息,肯定便可。
在github中選擇settings
選擇Developer settings
選擇Personal Access Token --> Generate new token, 新建一個有讀寫權限的用戶。 以下勾選選項:
肯定後生成token,複製下來保存好。
登陸進jenkins後選擇系統管理 => 系統設置 => Github Server 添加信息
添加jenkins憑據
完成後點擊鏈接測試,鏈接成功信息以下:
而後選擇系統管理 => 全局工具配置 在JDK安裝中去掉勾選自動安裝,在JAVA_HOME中輸入java jdk安裝的根目錄,個人安裝根目錄是/usr/
完成後回到首頁新建任務,填寫任務名稱,選擇構建自由風格的軟件項目,點擊肯定。
添加憑據
選擇輪詢SCM,輸入出發時間
選擇執行shell,輸入構建腳本
最後保存,點擊當即構建,而後項目會有構建進度。
能夠在構建歷史查看構建狀態,圓球是藍色而且出現success表示構建成功。
在構建時遇到一個報錯是執行sudo 命令要輸密碼,因此沒有繼續構建下去,最後找到方法是執行sudo visudo,在文件的最後面加上如下信息
jenkins ALL=(ALL) NOPASSWD: ALL
複製代碼
而後按下ctrl+o保存,接着按下回車Enter,最後ctrl+x退出。 從新構建應該能夠成功,成功後能夠在/var/lib/jenkins/workspace/路徑下看到你的項目了,而後嘗試修改本地項目,git push提交後,發現jenkins響應執行構建,服務器文件也更新了,說明項目搭建完成,好好獎勵一下本身吧!
整個項目搭建下來踩了不少的坑,也遇到不少的小問題,不少時間都是在解決問題,總的來講其實不是很難,若是不熟悉linux的話會有點吃力。以上是我在搭建的過程以及遇到的問題,若是哪裏寫的不到位,還請大佬們指正。