Java-通过shell脚本自动部署项目
Java-通过shell脚本自动部署项目
- 本地开发SpringBoot项目,上传到GitHub仓库。
- 在Linux中安装Git
- 进入存储项目的目录,使用
git clone 你的项目仓库地址
从github仓库拉取你的项目到Linux服务器中 - 在Linux中安装maven
- 编写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=true`
cd target
echo 启动项目
nohup java -jar helloworld-1.0-SNAPSHOT.jar &> helloworld.log &
echo 项目启动完成
- 为用户授予执行Shell脚本的权限
- 执行Shell脚本
- 将服务器的IP地址设置为静态。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
, 文件内容如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR="192.168.138.100" # 设置的静态IP地址
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.138.2" # 网关地址
DNS1="192.168.138.2" # DNS服务器
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=afd0baa3-8bf4-4e26-8d20-5bc426b75fd6
DEVICE=ens33
ONBOOT=yes
ZONE=public
上述我们所设置的网段为138,并不是随意指定的,需要和我们虚拟机中的虚拟网络编辑器中的NAT模式配置的网关保持一致。
9. 重启网络服务,systemctl restart network
。