spring boot 项目部署方式(jar & war)

应该可以通过其他方式部署,由于本身见识有限,暂时总结出两种部署方式。欢迎评论告知更多方式,相互交流。

方式一 jar包部署

  1. 请确保目标服务器有java环境,执行用户配置好java目录

  2. 检查pom.xml配置文件中是否有

    <packaging>jar</packaging>
    

    若没有,则在project内添加(与项目的artifactId、parent 和 groupId 同级)

  3. 编译+运行(在idea中直接运行项目)完成后可以在target目录中找到目标jar包

  4. 将 jar 上传到服务器 或 运行目录中

  5. 通过命令运行jar包

    # 若需要窗口内运行请执行
    java -jar 目标jar包名称.jar
    # 若需要一直后台运行(包括此次会话连接断开后,即关闭terminal窗口后)
    nohup java -jar 目标jar包名称.jar &
    

    在命令后面加 & 意味着需要将其后台运行。若单纯后台运行,在此次会话连接断开后,会停止此次会话期间后台的任务。

    nohup 为不挂断运行,即使收到回话连接结束的命令也不会影响命令执行(不是后台执行)。

    为了实现一直启用服务的功能,因此两个命令都需要使用

方式二 war包部署

  1. 请确保目标服务器有java环境,执行用户配置好java目录,并有tomcat

  2. 检查pom.xml配置文件中是否有

    <packaging>war</packaging>
    

    若没有,则在project内添加(与项目的artifactId、parent 和 groupId 同级)

  3. 修改springBoot的主方法

    @SpringBootApplication
    public class MainApplication extends SpringBootServletInitializer {
      // 继承SpringBootServletInitializer类,重写父类的configure方法
    	@Override
    	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    		return builder.sources(MainApplication.class);
    	}
    
    	public static void main(String[] args) {
            SpringApplication.run(MainApplication.class, args);
    	}
    }
    
  4. 编译+运行(在idea中直接运行项目)完成后可以在target目录中找到目标war包

  5. 将 war 上传到服务器或本地 的 搭载运行的tomcat的webApp目录下

  6. 启动tomcat bin/startup.sh

附注:结束运行jar的方式

  • 若使用窗口内运行(即运行jar包的第一种方式)

    1. 直接关闭窗口或在窗口内执行 ctrl + c 即可
    2. 参照一直运行的关闭方法⬇️
  • 若需要一直后台运行(运行jar包第二种方式,或运行war包)

    1. 使用 ps/lsof 查询进程号(pid)

      # 使用ps查询pid
      ps -ef | grep 关键字或文件名
      # 使用lsof查看端口占用(将8080替换为jar占用的端口)
      lsof -i :8080
      
    2. kill -9 进程号(pid) ,如 kill -9 4096

  • 关闭tomcat

    • 直接运行 bin/shutdown.sh
    • 使用上述的ps / lsof方法
posted @ 2020-07-13 11:35  wgh0807  阅读(261)  评论(0编辑  收藏  举报