# Spring Boot项目打包部署

Spring Boot Web + Maven 构建打包;

开发环境:window10、java@20、Maven@4.0.0、intellij idea;

线上环境:CentOS、java@20;

以下内容讲解,默认你已经安装好相关工具和环境。

# 打包

对于Spring Boot,Spring官方的建议是将Spring Boot应用打包成一个fat jar(Java ARchive),通过java命令来启动运行。

# idea

如果使用 intellij idea打包。idea 会自带 Maven,通过 idea 右侧中的 Maven,找到相关项目,双击Lifecycle下的package,即运行打包构建,jar包会被放在target目录下。

image.png

# 命令行

如果想要命令行打包,本地记得安装Maven。进入项目目录:

#清理已存在的编译结果
mvn clean

#打包
mvn package
1
2
3
4
5

目标jar包会被放在target目录下。

# 测试

进入到jar包存放目录

java -jar 打包名称.jar

#运行成功后会输出如下信息

[main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.12]
[main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
[main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 947 ms
[main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8989 (http) with context path ''
[main] com.example.demo.Demo1Application        : Started Demo1Application in 1.581 seconds (process running for 1.909)

1
2
3
4
5
6
7
8
9
10

# 部署

先将构建好的 jar包 上传到服务器上,可使用 Filezilla (opens new window) 上传,至于上传到那个目录下,这个自己确定。

# 日志

#修改文件夹权限
sudo chmod 777 /webapp/demo/
sudo chmod 777 /webapp/demo/logs
1
2
3

# 启动

#创建启动脚本start.sh
sudo vi /webapp/demo/start.sh

#启动
sh /webapp/demo/start.sh
1
2
3
4
5

start.sh 文件内容:

#!/bin/sh

#指定JDK目录&AppName
export JAVA_HOME=/usr/java20
APP_NAME=demo1-0.0.1-SNAPSHOT.jar
echo $JAVA_HOME
echo $APP_NAME

#nohup命令后台启动jar包并写入日志
nohup  java -jar $APP_NAME >>logs/start.log 2>>logs/startError.log &

#sleep等待15秒后,判断包含AppName的线程是否存在
sleep 15

if test $(pgrep -f $APP_NAME|wc -l) -eq 0
then
   echo "Start Failed"
else
   echo "Start Successed"
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 停止

#创建停止脚本文件
sudo vi /webapp/demo/stop.sh

#停止
sh /webapp/demo/start.sh
1
2
3
4
5

stop.sh文件内容:

#!/bin/sh

#指定AppName
APP_NAME=demo1-0.0.1-SNAPSHOT.jar

#找到包含AppName的进程
PROCESS=`ps -ef|grep $APP_NAME|grep -v grep  |awk '{ print $2}'`

#循环停用进程直到成功
while :
do
  kill -9 $PROCESS > /dev/null 2>&1
  if [ $? -ne 0 ];then
   break
  else
   continue
fi
done

echo 'Stop Successed'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 访问

在开启之后,可以直接通过ip+端口访问,也可以通过nginx配置添加域名代理访问。

如果是ip+端口访问,记得配置防火墙开放端口。

如果是域名访问,http域名记得开放80端口。

🥰Me

男性,武汉工作,会点Web,擅长Javascript.

技术或工作问题交流,可联系微信:1169170165.

🚀小程序&公众号
🚀运行
2024年2月19日星期一下午2点01分
博客已运行:--天--时--分--秒
上次更新: 12/25/2023, 11:44:09 AM

评 论: