目的
做完毕设没事就买个服务器玩玩,把项目部署了上去,并通过IP可以外网访问。但是项目后期还要根据导师建议做出调整,所以每次部署都太麻烦了,前后端分开打包再上传再运行。于是就通过脚本自动拉取GitHub项目下来通过maven和vue-cli分别打包,最后再运行。可以一行代码解放双手
问题
1.脚本执行流程
2.怎么实现每一步
3.遇到的疑难杂症
解决思路
1.脚本执行流程
- 通过管道符查询pid联合kill杀死进程
- 拉取代码
- 打包
- 将所有用到的jar包和前端文件移动到指定目录(方便管理)
- 启动项目
2.怎么实现每一步
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=ruoyi-admin.jar
tpid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
echo 准备从GitHub仓库拉取最新代码
cd /usr/local/src/project/dissertation
echo 开始从GitHub仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包后端项目中...
output=`mvn clean package -Dmaven.test.skip=true`
echo 开始将jar包移动到指定目录
echo 正在移动ruoyi-admin.jar中...
mv /usr/local/src/project/dissertation/ruoyi-admin/target/ruoyi-admin.jar /usr/local/src/project
echo 正在移动ruoyi-common-3.8.6.jar中...
mv /usr/local/src/project/dissertation/ruoyi-common/target/ruoyi-common-3.8.6.jar /usr/local/src/project
echo 正在移动ruoyi-framework-3.8.6.jar中...
mv /usr/local/src/project/dissertation/ruoyi-framework/target/ruoyi-framework-3.8.6.jar /usr/local/src/project
echo 正在移动 ruoyi-generator-3.8.6.jarr中...
mv /usr/local/src/project/dissertation/ruoyi-generator/target/ruoyi-generator-3.8.6.jar /usr/local/src/project
echo 正在移动ruoyi-quartz-3.8.6.jar中...
mv /usr/local/src/project/dissertation/ruoyi-quartz/target/ruoyi-quartz-3.8.6.jar /usr/local/src/project
echo 正在移动ruoyi-system-3.8.6.jar中...
mv /usr/local/src/project/dissertation/ruoyi-system/target/ruoyi-system-3.8.6.jar /usr/local/src/project
echo 开始打包前端项目中...
cd /usr/local/src/project/dissertation/ruoyi-ui
output=`npm run build:prod`
echo 正在删除dist旧目录...
rm -rf /usr/local/src/project/dist
echo 正在移动dist目录中...
mv /usr/local/src/project/dissertation/ruoyi-ui/dist/ /usr/local/src/project/
cd /usr/local/src/project
echo 后端项目启动中...
nohup java -jar ruoyi-admin.jar &> /usr/local/src/project/log/article.log &
echo 前端项目启动中...
cd /usr/local/nginx/sbin
output=`./nginx -s reload`
echo 项目启动完成
3.遇到的疑难杂症
1.前置条件
- maven、vue-cli
2.mv移动目标文件显示目录非空
- 在移动前先删除之前的旧目录
-
echo 正在删除dist旧目录... rm -rf /usr/local/src/project/dist echo 正在移动dist目录中... mv /usr/local/src/project/dissertation/ruoyi-ui/dist/ /usr/local/src/project/
3.前端使用nginx部署后刷新或退出nginx404
# 在location 块添加刷新页面重定向规则
location / {
root /usr/local/src/project/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
4.Nginx 413 Request Entity Too Large
存在的问题因为上传文件大于Nginx默认的大小会被Nginx给拦截下来,修改配置文件即可
# 在http块添加代码 大小看需求设置一个合适的数值
client_max_body_size 20m;