-
Notifications
You must be signed in to change notification settings - Fork 21
Spring Boot项目打包部署 #46
Open
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目录下。
命令行
如果想要命令行打包,本地记得安装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
Type
Fields
Give feedbackNo fields configured for issues without a type.