Shell脚本自动部署项目

自动部署项目

在本地项目中,通过git将最新代码推送到远程仓库,在linux中通过git拉取远程仓库的SpringBoot项目代码,通过maven进行编译、打包处理成jar包,最后通过java -jar 项目jar包名进行启动

前提:Linux系统已经搭建了JDK和mysql服务,项目所关联的sql文件已经初始化。

操作步骤:

  • 在Linux中安装Git
    • 在线安装git
    • 克隆项目代码
1
2
3
4
5
6
# 安装git
yum list git # 列出git安装包
yum install git*** # 在线安装git
# 克隆项目代码
cd /usr/local
git clone https://gitee.com/liu-renwei/reggie_take_out.git
  • 安装maven
    • 安装maven
    • 设置环境变量
    • 修改settings.xml配置文件
1
2
3
4
5
6
7
8
9
10
# 安装maven
tar -zxvf appche-maven-3.5.4-bin.tar.gz -C /usr/local
# 设置环境变量
vim /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.5.4 # maven安装目录
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH # 加入到PATH
source /etc/profile # 重新加载
# 修改settings.xml
vim /usr/local/appche-maven-3.5.4/conf/settings.xml
<localRepository>/usr/local/myrepository</localRepository> # 设置maven仓库
  • 编辑shell脚本文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================

echo 停止原来运行中的工程
APP_NAME=reggie_take_out

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/reggie_take_out

echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成

echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`

cd target

echo 启动项目
nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar &> reggie_take_out.log &
echo 项目启动完成
  • 为当前用户授权

    • 查看当前用户对shell脚本所拥有的权限
    • 为用户授权,可执行该脚本
    1
    2
    ll # 列出当前目录文件及显示用户所拥有的权限
    chmod 744 bootStart.sh # 修改用户对shell脚本文件的权限
  • 运行脚本

    • ./bootStart.sh

权限设置

linux系统一切皆文件,所以本身通过权限管理控制不同用户对文件的读、写、执行操作。

静态网络设置

在实际的工作里,linux服务器都是使用静态ip地址,ip地址都是固定的,防止系统重启或网络变得改变linux的ip地址。

  • 修改网络配置文件
  • 重启网络服务:systemctl restart network