Shell指令碼自動部署Springboot專案
一、 介紹
前面介紹的專案部署是手動部署,也就是部署過程中的每一步操作都需要我們手動操作。接下來,我們需要再講解一下專案的自動部署,從而來簡化專案部署的操作,那麼我們先來整體上了解一下專案自動部署的流程及操作步驟。
操作步驟如下:
1). 在Gitee上建立遠端倉庫,並將本地的專案程式碼推送到遠端倉庫中
2). 在Linux中安裝Git,克隆程式碼
3). 在Linux中安裝maven
4). 編寫Shell指令碼(拉取程式碼、編譯、打包、啟動)
5). 為使用者授予執行Shell指令碼的許可權
6). 執行Shell指令碼
二、Centos 7 軟體安裝
2.1 Git軟體安裝
通過yum命令線上安裝git,執行如下指令:
yum list git 列出git安裝包
yum install git 線上安裝git
通過上述指令,安裝好git之後,我們就可以通過 git --version去驗證git的環境。
2). Git克隆程式碼
cd /usr/local/
git clone git地址
2.2 Maven安裝
由於我們的工程是maven工程,我們要想進行專案的編譯打包,需要用到maven的指令,所以需要安裝maven。具體操作步驟如下:
1). 上傳maven的安裝包
2). 解壓maven安裝包到/usr/local目錄
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
3). 在/etc/profile配置檔案中配置環境變數
vim /etc/profile
修改配置檔案,進入到命令模式,按G切換到最後一行,按a/i/o進入插入模式,然後在最後加入如下內容 :
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
然後按ESC進入到命令模式,輸入 :wq 儲存並退出
要想讓配置的環境變數生效,還需要執行如下指令:
source /etc/profile
4). 修改maven的settings.xml配置檔案,配置本地倉庫地址
A. 切換目錄
cd /usr/local/apache-maven-3.5.4/conf
B. 編輯settings.xml配置檔案
vim settings.xml
在其中增加如下配置,配置本地倉庫地址: 這裡我建議使用自己配置的本地倉庫地址
<localRepository>/usr/local/repo</localRepository>
並在settings.xml中的
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
2.3 Linux許可權
Shell指令碼
#!/bin/sh
echo =================================
echo 自動化部署指令碼啟動
echo =================================
echo 停止原來執行中的工程
APP_NAME=helloworld
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
echo 準備從Git倉庫拉取最新程式碼
cd /usr/local/helloworld
echo 開始從Git倉庫拉取最新程式碼
git pull
echo 程式碼拉取完成
echo 開始打包
output=`mvn clean package -Dmaven.test.skip=ture`
cd target
echo 啟動專案
nohup java -jar hellowprld.jar &> helloworld.log &
echo 專案啟動完成
但是Shell指令碼要想正常的執行,還需要給Shell指令碼分配執行許可權。 由於linux系統是一個多使用者的作業系統,並且針對每一個使用者,Linux會嚴格的控制操作許可權。接下來,我們就需要介紹一下Linux系統的許可權控制。
1). chmod(英文全拼:change mode)命令是控制使用者對檔案的許可權的命令
2). Linux中的許可權分為三種 :讀(r)、寫(w)、執行(x)
3). Linux檔案許可權分為三級 : 檔案所有者(Owner)、使用者組(Group)、其它使用者(Other Users)
4). 只有檔案的所有者和超級使用者可以修改檔案或目錄的許可權
5). 要執行Shell指令碼需要有對此指令碼檔案的執行許可權(x),如果沒有則不能執行
chmod命令可以使用八進位制數來指定許可權(0 - 代表無 , 1 - 執行x , 2 - 寫w , 4 - 讀r):
值 | 許可權 | rwx |
---|---|---|
7 | 讀 + 寫 + 執行 | rwx |
6 | 讀 + 寫 | rw- |
5 | 讀 + 執行 | r-x |
4 | 只讀 | r-- |
3 | 寫 + 執行 | -wx |
2 | 只寫 | -w- |
1 | 只執行 | --x |
0 | 無 | --- |
舉例:
chmod 777 bootStart.sh 為所有使用者授予讀、寫、執行許可權
chmod 755 bootStart.sh 為檔案擁有者授予讀、寫、執行許可權,同組使用者和其他使用者授予讀、執行許可權
chmod 210 bootStart.sh 為檔案擁有者授予寫許可權,同組使用者授予執行許可權,其他使用者沒有任何許可權
注意:
三個數字分別代表不同使用者的許可權
- 第1位表示檔案擁有者的許可權
- 第2位表示同組使用者的許可權
- 第3位表示其他使用者的許可權
2.2.7 授權並執行指令碼
在測試階段,我們可以給所有的人都賦予執行該shell指令碼的許可權。所以可以執行如下指令:
chmod 777 bootStart.sh
注意: 在執行maven指令進行打包時,第一次執行可能會耗時比較長,因為在進行maven工程的打包時,需要到中央倉庫下載工程依賴的jar包和外掛(可以在settings.xml中配置阿里雲私服加速下載)。