Springboot打包部署到服务器(宝塔面板)
目的:java项目打包成jar包, 放在服务器上去运行,并且使用域名作为后端接口
一、编写打包配置
1. pom.xml
在项目中的pom.xml文件里面修改
p-school-api
org.springframework.boot
spring-boot-maven-plugin
2.3.0.RELEASE
-Dfile.encoding=UTF-8
true
true
repackage
org.apache.maven.plugins
maven-resources-plugin
true
woff
woff2
eot
ttf
svg
src/main/resources
true
src/main/java
**/*.xml
true
src/main/resources
**/*.woff
**/*.ttf
**/*.eot
**/*.svg
2. 编写application-prod.yml文件
application-prod.yml文件和application.yml文件的代码基本一致,只需要把一些本地的地址改成线上的, 例如:数据库地址,Redis地址这些以及用户名密码
二、打包项目
在idea中,使用maven进行打包
打包过程
打包完成
打包好的文件
在你项目中的target文件夹里面
三、上传到服务器
确保已安装了java环境
没有安装的话就按下图提示安装
1. 建立后端站点
域名需要解析
2. 设置反向代理
端口号是application-prod.yml文件里面的端口号
3. 上传打包的好jar包到刚刚创建好的文件夹里面
四、编写启动/停止脚本
1. 启动脚本
#!/bin/bash
#开始时间 时间戳
startTime=`date +'%Y-%m-%d %H:%M:%S'`
#接口项目站点路径(目录按照各自配置)
APP_PATH=/www/wwwroot/存放jar的路径
#jar包文件名称
APP_NAME=$APP_PATH/自己打包好jar包的名字.jar
#日志文件名称
LOG_FILE=$APP_PATH/deco_out.log
#启动环境 # 如果需要配置数据和redis,请在 application-prod.yml中修改, 用jar命令修改即可
APP_YML=--spring.profiles.active=prod
#数据库配置
rm -rf $LOG_FILE
echo "开始停止 deco 项目进程"
#查询进程,并杀掉当前jar/java程序
pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
if [ $pid ];then
echo "pid: $pid"
kill -9 $pid
echo "deco 项目进程进程终止成功"
fi
sleep 2
#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME;then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件 --spring.profiles.active=prod 启动 prod环境
nohup java -jar $APP_NAME $APP_YML > deco_out.log 2>&1 &
echo "正在发布中,请稍后......"
sleep 10s
#通过检测日志来判断
while [ -f $LOG_FILE ]
do
success=`grep "Started KxtAdminApplication in " $LOG_FILE`
if [[ "$success" != "" ]]
then
# echo "deco start ........."
break
else
# echo "deco Running ......."
sleep 1s
fi
# echo "开始检测启动失败标记"
fail=`grep "Fail" $LOG_FILE`
if [[ "$fail" != "" ]]
then
echo "项目启动失败"
tail -f $LOG_FILE
break
else
# echo "KXT Running ......."
sleep 1s
fi
done
echo "deco Started Success"
endTime=`date +'%Y-%m-%d %H:%M:%S'`
startSecond=$(date --date="$startTime" +%s);
endSecond=$(date --date="$endTime" +%s);
total=$((endSecond-startSecond))
# shellcheck disable=SC2027
echo "本次运行时间: "$total"s"
# shellcheck disable=SC2086
echo "当前时间:"$endTime
else
echo '$APP_NAME 文件不存在,请检查。'
fi
#在 $APP_NAME 同级目录下运行 ./startAdmin.sh 命令即可启动项目。
2. 停止脚本
#接口项目站点路径(目录按照各自配置)
APP_PATH=/www/wwwroot/存放jar的路径
#jar包文件名称
APP_NAME=$APP_PATH/自己打包好jar包的名字.jar
echo "开始停止 deco-admin 项目进程"
#查询进程,并杀掉当前jar/java程序
pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
echo "pid: $pid "
if [ $pid ];then
echo "pid: $pid"
kill -9 $pid
echo "deco 项目进程进程终止成功"
else
echo "未找到对应服务"
fi
五、启动项目
1. 进入终端
2. 进入存放jar的目录
2.1. 使用命令进入相应的目录
cd /www/wwwroot/你的jar包路径
2.2. 启动脚本
./startAdmin.sh
如果一直停留在这里, 可以去看看日志文件是否已经启动成功了
然后后端的就以及启动成功了, 域名就可以使用了