原创

SpringBoot 项目部署到服务器


一、jar包(官方推荐)

jar包方式启动,也就是使用spring boot内置的tomcat运行。服务器上面只要你配置了jdk1.8及以上,就ok。不需要外置tomcat。

(一)打包成jar

  1. 打包前确认项目可以正常运行,打开Project Structure 快捷键 Ctrl+Shift+Alt+S,或者点击下图图标:
  1. 首先,要注意的是要打包的项目pom文件中的packaging值应为“war”war,如图所示。 SpringDeployment2.png

  2. 点击idea右侧的“maven”按钮,如图所示。
    SpringDeployment3.png

  3. 选择打包项目,一般是选择root项目,也就是maven聚合项目的父项目,如图所示。
    SpringDeployment4.png

  4. 点击打开之后,会有三个选项,选择其中的“Lifecycle”,如图所示。 SpringDeployment5.png

  5. 如果是刚刚修改了项目,可以先选择其中的“clean”,鼠标双击
    SpringDeployment6.png

  6. 然后双击其中的“package”选项,如图所示。
    SpringDeployment7.png

  7. 打包成功之后,会在控制台出现“BUILD SUCCESS”的字样,如图所示。
    SpringDeployment8.png

    然后去项目中的“target”目录下就可以找到打好的war包了。

(二)部署到服务器

  1. 将jar包放到任意目录,执行下面的命令
$ nohup java -jar test.jar >temp.txt & 
#这种方法会把日志文件输入到你指定的文件中,没有则会自动创建。进程会在后台运行。

SpringDeployment9.png ps:Linux jar包运行命令详细说明,请查看这篇博客:Linux后台运行Jar方法 2. 阿里云服务器需要放开对应的端口 添加安全组:我的项目中配置的启动端口是18080,故这里需要放开18080端口,才能访问。
SpringDeployment10.png 3. 访问swagger访问格式:服务器ip:启动端口/swagger-ui.html如:http://59.110.155.32:18080/swagger-ui.html SpringDeployment11.png 我的项目配置: SpringDeployment12.png


我们再看看进程:
执行jps,如下图,我们可以看到jar 进程有两个,原因是我这里使用java -jar 启动了两个项目。
SpringDeployment13.png

二、WAR包

传统的部署方式:将项目打成war包,放入tomcat 的webapps目录下面,启动tomcat,即可访问。

(一)打包成WAR

这里可以直接到项目根目录下面:运行 maven package命令,打包。我这里直接使用idea打包,如下图:
SpringDeployment14.png

(二)部署

  1. 将war放入外部tomcat的webapps目录下: SpringDeployment15.png
  2. 启动tomcat SpringDeployment16.png 会弹出一个黑框,你会看到项目启动,启动完成后,直接访问:localhost:8080/demo1(即:ip:端口/项目名称,这里的端口是外部tomcat配置的端口,项目名称是war包得名称),浏览器输出“hello 朋友”,表示运行成功!

一定注意:我这里访问的端口是8080,也就是外部tomcat设置的端口。而不是项目,application.yml中配置的server.port。

小结

  1. 对比两种打包方式,jar更加简单,方便。具体使用哪种方式,应视应用场景而定。

  2. 再说一次,将项目打成war包,部署到外部的tomcat中,这个时候,不能直接访问spring boot 项目中配置文件配置的端口。application.yml中配置的server.port配置的是spring boot内置的tomcat的端口号, 打成war包部署在独立的tomcat上之后, 你配置的server.port是不起作用的。一定要注意这一点!! 其实我们从tomcat的启动界面,已经可以看出,是启动的哪个端口:
    SpringDeployment17.png 很明显,日志告诉我们,我们应该访问8080端口。下图是使用spring boot 内置tomcat启动日志,可以看出配置的server.port是生效了的!
    SpringDeployment18.png

  3. 如果你用的spring boot + gradle。基本一样。。这里就不详细说了。

SpringBoot
  • 作者:Daozhi(联系作者)
  • 发表时间:2020-07-21 05:19
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论