Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spring Boot项目打包部署 #46

Open
HerryLo opened this issue Oct 25, 2023 · 0 comments
Open

Spring Boot项目打包部署 #46

HerryLo opened this issue Oct 25, 2023 · 0 comments
Assignees
Labels
Blog 文章

Comments

@HerryLo
Copy link
Member

HerryLo commented Oct 25, 2023

Spring Boot项目打包部署

Spring Boot Web + Maven 构建打包;

开发环境:window10、java@20、[email protected]、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端口。

@HerryLo HerryLo added the Blog 文章 label Oct 25, 2023
@HerryLo HerryLo self-assigned this Oct 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Blog 文章
Projects
None yet
Development

No branches or pull requests

1 participant