前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 项目打包部署

SpringBoot 项目打包部署

作者头像
AI码真香
发布2022-09-13 17:37:49
1.4K0
发布2022-09-13 17:37:49
举报
文章被收录于专栏:AI码真香
一、背景

SpringBoot 项目部署到服务器常见的方式就是,打包成 jar 包,通过 nohup java -jar 命令去运行项目,这也是官方推荐的一种方式。但是,每次项目代码修改更新的时候,重新打包上传服务器,覆盖原项目,需要把原来项目运行进程 kill ,再运行新的项目。这个过程是在有点繁琐。后面,网上查寻和学习了下脚本,决定整合一个脚本文件,简化项目部署过程。以下是整个教程!

二、详细步骤
2.1、打包项目

通过 IDEA 中 Maven 插件打包,先 clean 整个项目 然后 install。打包之前,先要排除单元测试类,避免把测试类也打包,这样也更快。POM.XML 中添加如下配置:

代码语言:javascript
复制
<properties>
        <skipTests>true</skipTests>
	</properties>

或者直接写个maven 打包命令:clean package -DskipTests=true ,每次打包的时候点击 package 就可以了。

如果不想通过 IDEA 来打包,也可以直接通过 maven 打包命令来(全部环境通用),前提是已经安装过 maven:

代码语言:javascript
复制
mvn install -Dmaven.test.skip=true
2.2、上传项目到服务器

我的是 win10 环境,使用的是 FileZilla 工具上传文件。很方便,操作也很直观,推荐使用。选中本地需要上传的项目,右击点击上传即可。

三、项目部署运行
3.1、部署多个SpringBoot项目

通过服务器如果需要部署多个spring-boot项目,端口不一样。那怎么通过域名来访问呢?这就需要 Nginx 来出手了,通过Nginx的反向代理实现。我博客之前也介绍过关于Nginx相关的(CentOS 下 配置Nginx 和相关使用配置),这里便不进一步说明了,直接给出 nginx.conf 的主要配置:

代码语言:javascript
复制
server {
    listen       80; #nginx默认监听 80 端口
    server_name  www.xmlvhy.com; #这里添加自己服务器的域名或ip
    access_log logs/book.log;
    error_log logs/book.error;

    upstream spring-boot {
        server www.xmlvhy.com:8081;
    }

	upstream boot {
        server www.xmlvhy.com:8082;
    }

    #将/blog1请求转发给http://www.xmlvhy.com:8082 处理
    location /blog {
        proxy_pass http://spring-boot;
    }

	 location /blog1 {
        proxy_pass http://boot;
    }
	......
}

当然,项目配置文件中(application.properties)需要指定 context path 和端口:

代码语言:javascript
复制
server.port=8081
server.servlet.context-path=/blog/

备注:

如果部署多个项目且不同端口,阿里云那边记得开放对应端口,另外每个项目最好都分好包,可以根据设置的context path 来分,再将所有的SpringBoot 项目都整理到一个文件夹,这样管理起来清晰明了!

3.2、SpringBoot项目启动脚本
代码语言:javascript
复制
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=blog.jar
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
    exit 1
}
#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup java -jar $APP_NAME >> catalina.out 2>&1 &
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

存放位置,我喜欢这样放:

脚本相关命令:

代码语言:javascript
复制
sh springboot.sh start 启动服务
sh springboot.sh stop 停止服务
sh springboot.sh restart 重启服务
sh springboot.sh status 查看运行状态

以上,便完成了SpringBoot项目打包到部署脚本的教程!

参考学习链接:

代码语言:javascript
复制
https://blog.csdn.net/lj1314ailj/article/details/80580233

本文作者: AI码真香

本文标题: SpringBoot 项目打包部署

本文网址: https://www.xmlvhy.com/article/73.html

版权说明: 自由转载-非商用-非衍生-保持署名 署名-非商业性使用4.0 国际 (CC BY-NC 4.0)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、详细步骤
    • 2.1、打包项目
      • 2.2、上传项目到服务器
      • 三、项目部署运行
        • 3.1、部署多个SpringBoot项目
          • 3.2、SpringBoot项目启动脚本
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档