云计算百科
云计算领域专业知识百科平台

Springboot打包部署到服务器(宝塔面板)

目的:java项目打包成jar包, 放在服务器上去运行,并且使用域名作为后端接口

 

一、编写打包配置

1. pom.xml

在项目中的pom.xml文件里面修改<build>…</build>的代码

<build>
<!–打包配置–>
<finalName>p-school-api</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.0.RELEASE</version>
<!– 正确打包本地加密jar包,不可删除–>
<configuration>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<fork>true</fork>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!–可以把依赖的包都打包到生成的Jar包中–>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<!– 使用默认的变量标记方法即${*} –>
<useDefaultDelimiters>true</useDefaultDelimiters>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>

<resources>
<!– <resource>–>
<!– <directory>src/main/resources</directory>–>
<!– &lt;!&ndash; 处理文件时替换文件中的变量 &ndash;&gt;–>
<!– <filtering>true</filtering>–>
<!– <excludes>–>
<!– &lt;!&ndash; 打包时排除文件 &ndash;&gt;–>
<!–&lt;!&ndash; <exclude>application.yml</exclude>&ndash;&gt;–>
<!– <exclude>application-{profile}.yml</exclude>–>
<!–&lt;!&ndash; <exclude>application-beta.yml</exclude>&ndash;&gt;–>
<!–&lt;!&ndash; <exclude>application-prod.yml</exclude>&ndash;&gt;–>
<!– </excludes>–>
<!– </resource>–>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<!– <resource>–>
<!– <directory>src/main/resources.${spring.profiles.active}</directory>–>
<!– <filtering>false</filtering>–>
<!– </resource>–>
<!–这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。–>
<resource>
<!– 描述存放资源的目录,该路径相对POM路径–>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>

<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.woff</exclude>
<exclude>**/*.ttf</exclude>
<exclude>**/*.eot</exclude>
<exclude>**/*.svg</exclude>
</excludes>
</resource>
</resources>
</build>

2. 编写application-prod.yml文件

 

26d7433bb1bfd894418e466db9511d5c.png

application-prod.yml文件和application.yml文件的代码基本一致,只需要把一些本地的地址改成线上的, 例如:数据库地址,Redis地址这些以及用户名密码

二、打包项目

在idea中,使用maven进行打包

 

215b321a676c1bc9d31937069d8ac3e9.png

打包过程

 

45627f257a1c4ebb863cfd359101737b.png

打包完成

 

835010c1ec972eebfeb6e4b61f7a8f1a.png

打包好的文件

在你项目中的target文件夹里面

 

7ce0834eb11884c33160aa47a3424fc9.png

三、上传到服务器

确保已安装了java环境

没有安装的话就按下图提示安装

 

ff95b54766c49fbfd42005b67c963765.png

 

cb0e1f706cf47bb7ee3803d46c955408.png

1. 建立后端站点

 

44ef25ae1d75e0a82cd79e4c934fb4b5.png

 

1b24fbb206ff143f575e21e6ff9850cf.png

域名需要解析

2. 设置反向代理

 

e32332dd1456f75dbfe549612ef2c425.png

端口号是application-prod.yml文件里面的端口号

 

7b38bd37d6483a0b04352be36d548e3e.png

3. 上传打包的好jar包到刚刚创建好的文件夹里面

 

e51fc7f54e0a60afc84463ffdf9e28f9.png

四、编写启动/停止脚本

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. 进入终端

 

959d8b9f76825861f8b9f9f7066bc275.png

2. 进入存放jar的目录

2.1. 使用命令进入相应的目录

cd /www/wwwroot/你的jar包路径

2.2. 启动脚本

./startAdmin.sh

 

14b9f86797548b83aeb5e7c4c0276501.png

如果一直停留在这里, 可以去看看日志文件是否已经启动成功了

 

b6651c20dfedfdcb3f36fdde8e388fae.png

然后后端的就以及启动成功了, 域名就可以使用了

 

赞(0)
未经允许不得转载:网硕互联帮助中心 » Springboot打包部署到服务器(宝塔面板)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!