这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
前面记录了如何在linux上安装一些常用软件。liunx上运行的软件有很多,就不一一记录了。本节记录如何在linux上部署项目,正好大项目要部署到Linux上
手工部署
- 将项目打包成jar包
- 将打包好的jar包上传到linux服务器
- 给项目程序运行时对应的端口号关闭防火墙
- 项目启动:
java -jar <jar包名> - 改为后台运行SpringBoot,并将日志输出到日志文件:
nohup命令- 作用:不挂断地运行指定命令,退出终端不会影响程序的运行
- 语法格式:
nohup Command [Arg...][&] - 参数说明:
- Command:要执行的命令
- Arg:一些参数,可以指定输出文件
- &:让命令在后台运行
shell脚本部署
手工部署的话,每次都要手动打包,然后上传到linux再手动关闭原程序并运行新程序,有点麻烦。利用shell脚本就可以实现自动拉取、自动编译、自动运行。
- 在Linux安装Git
//1.安装git yum list git//列出git安装包 yum install git//在线安装git //2.拉取项目 cd <目标路径> git clone <url> - 在linux安装maven
- 编写Shell脚本(拉取代码、编译、打包、启动)
- 为用户授权执行Shell脚本的权限:
chmod 777 xxx.sh - 执行Shell脚本
./xxx.sh
通过如上步骤就可以很方便的重新部署项目了,下面提供了一段shell脚本代码作为参考。
#git地址
git_path=""
#项目路径
code_path=""
#项目名称,与giturl那一致
projectName=""
#生成的jar包的名称,不用后缀
projectName3=""
env="master"
#如果项目文件夹不存在说明没有下载过改项目代码,需要检出该项目
if [ ! -d ${code_path}${projectName} ];
then
echo ${projectName}"不存在,检出该项目"
cd $code_path
# git地址
git clone ""
else
echo ${projectName}"存在,更新代码"
cd ${code_path}${projectName}
git reset --hard
git pull
fi
#删除项目
echo "删除项目"
rm -rf "${code_path}${projectName}/${projectName3}/target"
# 删除原本的jar包
echo "删除原本的jar包"
rm -rf "${code_path}${projectName3}"
# 再打项目包
echo "maven开始打包"
cd ${code_path}${projectName}
mvn install -Dmaven.test.skip=true -Denv=$env -U
#如果打包出错直接退出
if [ $? -ne 0 ]; then
echo "打包出错"
exit 1
fi
echo "maven打包success"
#关闭jar服务
echo "关闭jar服务"
查询jar包服务进程ID,并杀掉该进程
pidList=$(ps aux | grep $projectName3 | grep -v grep | awk '{print $2}')
for pid in $pidList
do
kill -9 $pid
echo 'kill pid '$pid
done
echo "关闭jar服务success"
#复制打包好的jar包到项目路径下面
echo "复制打包好的jar包到项目路径下面"
cd ${code_path}
rm -rf "${projectName3}.jar"
cp "${code_path}${projectName}/target/${projectName3}.jar" ${code_path}
echo "复制打包好的jar包到项目路径下面success"
#启动jar包
echo "启动jar包"
java -jar "${projectName3}.jar" &
echo "启动jar包success"
echo "success"