Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Spring Boot项目打包部署 #46

Open
Assignees
Labels
Blog文章

Description

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

目标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)

部署

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

日志

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

启动

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

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

停止

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

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'

访问

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

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

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

Metadata

Metadata

Assignees

Labels

Blog文章

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      AltStyle によって変換されたページ (->オリジナル) /