Jenkins+Github+Nginx實現前端項目自動部署

前言

最近在搭建一個本身的網站,網站框架搭好了要把項目放到服務器運行,可是每次更新網站內容就要手動部署一次,實在很麻煩,因而就想搭建一套自動化部署的服務。看了一些案例最後選用如今比較主流的Jenkins + Github + Nginx的方案來搭建,因而跟着教程去作,看了不少教程其實不是太完整,搭建過程一波三折,就想寫下本身搭建的過程分享出去。如下操做默認你們已經申請本身的服務器,並開放所須要的端口。我本身的服務器是ubuntu。注意:ubuntu使用(apt-get install 軟件名) 來安裝軟件,redhat(即CentOS)服務器使用(yum install 軟件名) 命令安裝,使用的是xhell遠程控制工具。html

自動化部署原理

簡單的說就是當咱們寫好代碼build完成後,把代碼提交到github上,jenkins監測到代碼變化就會自動構建項目,把代碼拉取到服務器,從而實現自動部署。java

安裝java sdk

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

安裝nginx

執行如下命令安裝nginxshell

sudo apt-get update
sudo apt-get install nginx
複製代碼

安裝完成後nginx默認打開,在瀏覽器輸入你的服務器ip,就能夠看到頁面,頁面默認路徑是/var/www/html,若是沒看到,請檢查安裝時是否報錯,以及檢查是否已經開放80端口。ubuntu

安裝Jenkins

首先,將存儲庫祕鑰添加到系統瀏覽器

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配置

在github中選擇settings

選擇Developer settings

選擇Personal Access Token --> Generate new token, 新建一個有讀寫權限的用戶。 以下勾選選項:

肯定後生成token,複製下來保存好。

jenkins配置

登陸進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的話會有點吃力。以上是我在搭建的過程以及遇到的問題,若是哪裏寫的不到位,還請大佬們指正。

相關文章
相關標籤/搜索