1. 程式人生 > 其它 >Shell指令碼自動部署Springboot專案

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中配置阿里雲私服加速下載)。