一、前言 Spring Boot的打包与部署有何特点? Java Web应用在Spring Boot之前,通常是打包成war(Web application ARchive)包,结合Tomcat来完成部署。 对于Spring Boot,Spring官方的建议是将Spring Boot应用打包成一个fat jar(Java ARchive),通过java命令来启动运行。这个fat jar会把Tomcat内置进来,所以部署时也不需要单独配置Tomcat。 Spring官方的打包说明: https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#getting-started-first-application-executable-jar 本篇环境信息 开发环境: 用途 工具&版本 操作系统 Windows 10 开发工具 IntelliJ IDEA 2017 打包工具 Maven 3.X JDK 1.8.x 传输工具 FlashFxp 生产环境: 用途 工具&版本 操作系统 CentOS 7 JDK 1.8.x 传输工具 Vsftp CentOS 7快速上手教程:https://ken.io/serie/centos7-quickstart 二、打包 打包工具的话如前面提到的,我们使用的是Maven 首先需要在pom.xml文件build节点增加如下配置: springboot-courseorg.springframework.bootspring-boot-maven-plugin 另外,需要确认pom.xml文件的package节点配置: jar 本篇ken.io会介绍两种打包方式,一个是Maven命令打包。一个是IDEA+Maven插件打包。 1、 Maven命令打包 准备工作 配置Java、Maven环境变量 参考: cmd:进入项目目录 本次项目目录是:D:\Projects\GitHub\springboot-course\package-maven d: & cd D:\Projects\GitHub\springboot-course\package-maven 清理package #清理已存在的编译结果 mvn clean #清理成功后输出信息示例 [INFO] ----------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] ----------------------------------------------------------- 打包 #打包 mvn package #清理成功后输出信息示例 [INFO] ----------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] ----------------------------------------------------------- #清理成功后会在项目根目录生成target文件夹 #查看是否生成target文件夹 ls #查看是否生了jar文件 ls target #根据pom.xml文件的配置,生成的jar文件名是:springboot-course.jar 2、IDEA + Maven插件打包 通过View->Tool Windows->Maven projects 呼出Maven工具栏 或者通过IDEA右侧工具栏呼出Maven工具栏 Maven工具栏 图形化操作就很简单了。两个步骤: clean package 成功之后也会在IDEA 控制台显示以下输出: [INFO] -------------------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] -------------------------------------------------------------------- [INFO] Total time: 7.839 s [INFO] Finished at: 2017-12-09T13:36:40+08:00 [INFO] Final Memory: 21M/218M [INFO] -------------------------------------------------------------------- 生成的jar包路径:项目根目录\target\springboot-course.jar 3、本地运行测试 通过java命令运行jar包 #进入jar包所在目录 d: & cd D:\Projects\GitHub\springboot-course\package-maven\target #执行 java -jar springboot-course.jar #运行成功后会输出如下信息(部分信息略去) [main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup [main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) [main] i.k.springboot.course.CourseApplication : Started CourseApplication in 5.569 seconds (JVM running for 6.363) 通过浏览器访问:localhost:8080,验证是否正常 端口号 在/src/main/resources下新建配置文件application.yml 文件内容: server: port: 8081 配置完成之后,重新打包即可 参考:https://ken.io/note/springboot-course-basic-helloworld 三、部署 1、 准备工作 JDK 1.8部署 https://ken.io/note/centos-java-setup FTP服务端部署 https://ken.io/note/centos-quickstart-ftpserver 通过FTP将jar包上传到CentOS的 /webroot/helloweb 目录 创建日志目录: #创建应用目录&日志目录 sudo mkdir /webroot/helloweb sudo mkdir /webroot/helloweb/logs #修改文件夹权限 sudo chmod 777 /webroot/helloweb sudo chmod 777 /webroot/helloweb/logs 开放端口 #添加可访问端口 sudo firewall-cmd --add-port=8081/tcp --permanent #重新加载防火墙策略 sudo firewall-cmd --reload 2、启动&停止脚本 创建启动脚本 #创建启动脚本start.sh sudo vi /webroot/helloweb/start.sh 脚本内容: #!/bin/sh #指定JDK目录&AppName export JAVA_HOME=http://www.likecs.com/usr/java/jdk1.8.0_151 APP_NAME=springboot-course.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 /webroot/helloweb/stop.sh 脚本内容: #!/bin/sh #指定AppName APP_NAME=springboot-course.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' 启动/停止站点 #启动 sh /webroot/helloweb/start.sh #停止 sh /webroot/helloweb/stop.sh 3、CentOS 7 开机自动Spring Boot应用 将站点启动脚本标记为可执行文件 chmod +x /webroot/helloweb/start.sh 将/etc/rc.d/rc.local标记为可执行文件 CentOS 7中,默认/etc/rc.d/rc.local文件加载时不能执行可执行文件 chmod +x /etc/rc.d/rc.local 将启动文件添加到/etc/rc.d/rc.local文件中 #修改文件 vi /etc/rc.d/rc.local #增加以下内容 /webroot/helloweb/start.sh 本篇文章所用到的源代码:https://github.com/ken-io/springboot-course/tree/master/package-maven
Spring Boot应用 打包与部署指南
内容版权声明:除非注明,否则皆为本站原创文章。