spring boot打包以及部署

一、打包

springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。这里主要介绍如何打成jar进行部署。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。

需要在pom.xml中增加主程序入口

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. <configuration>
  7. <executable>true</executable>
  8. </configuration>
  9. </plugin>
  10. </plugins>
  11. </build>
  • 在idea工具中可视化工具打包,如图

  • 通过命令行来打包

    mvn clean package -Dmaven.test.skip=true

二、部署

官网文档部署说明

按照这上面部署被坑惨了。。

下面整理下自己部署的sh脚本

  1. XXX.sh,此sh放到和jar统一目录即可

  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: lanwei
  4. # Required-Start: $local_fs $network
  5. # Required-Stop: $local_fs
  6. # Default-Start:
  7. # Default-Stop:
  8. # Short-Description: XXX service
  9. # Description: XXX service
  10. ### END INIT INFO
  11. echo "Starting...."
  12. APP_NAME=$(echo $(basename $) | sed -e 's/^[SK][0-9]*//' -e 's/\.sh$//')
  13. APP_HOME=/usr/software/${APP_NAME}
  14. #这里需要配置环境,dev test stg prd
  15. APP_ENV="dev"
  16. #配置jar
  17. APP_JAR=${APP_HOME}/XXXX.jar
  18. usage() {
  19. echo "Usage: sh ${APP_NAME} [start|stop|restart]"
  20. exit
  21. }
  22. ##################################################
  23. # Some utility functions
  24. ##################################################
  25. findDirectory()
  26. {
  27. local L OP=$
  28. shift
  29. for L in "$@"; do
  30. [ "$OP" "$L" ] || continue
  31. printf %s "$L"
  32. break
  33. done
  34. }
  35. echo "APP_ENV : ${APP_ENV}"
  36. echo "APP_HOME : ${APP_HOME}"
  37. echo "APP_NAME : ${APP_NAME}"
  38. echo "APP_JAR : ${APP_JAR}"
  39. #####################################################
  40. # Find a location for the pid file
  41. #####################################################
  42. if [ -z "$APP_RUN" ]
  43. then
  44. APP_RUN=$(findDirectory -w /var/run /usr/var/run /tmp)
  45. fi
  46. #APP_RUN=/var/run
  47. echo "APP_RUN : ${APP_RUN}"
  48. #####################################################
  49. # Find a pid
  50. #####################################################
  51. if [ -z "$APP_PID" ]
  52. then
  53. APP_PID="$APP_RUN/${APP_NAME}.pid"
  54. fi
  55. echo "APP_PID : ${APP_PID}"
  56. LOG=${APP_HOME}/logs/${APP_ENV}.log
  57. ERROR_LOG=${APP_HOME}/logs/${APP_ENV}_err.log
  58. case $ in
  59. start)
  60. echo "Starting ${APP_NAME} ..."
  61. if [ ! -f $APP_PID ]; then
  62. cd ${APP_HOME}
  63. nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG > $ERROR_LOG &
  64. echo $! > $APP_PID
  65. echo "$APP_NAME started ..."
  66. else
  67. echo "$APP_NAME is already running ..."
  68. fi
  69. ;;
  70. stop)
  71. if [ -f $APP_PID ]; then
  72. PID=$(cat $APP_PID);
  73. echo "$APP_NAME PID is ${PID}"
  74. echo "$APP_NAME stoping ..."
  75. kill $PID;
  76. echo "$APP_NAME stopped ..."
  77. rm $APP_PID
  78. else
  79. echo "$APP_NAME is not running ..."
  80. fi
  81. ;;
  82. restart)
  83. if [ -f $APP_PID ]; then
  84. PID=$(cat $APP_PID);
  85. echo "$APP_NAME PID is ${PID}"
  86. echo "$APP_NAME stopping ...";
  87. kill $PID;
  88. echo "$APP_NAME stopped ...";
  89. rm $APP_PID
  90. echo "$APP_NAME starting ..."
  91. cd ${APP_HOME}
  92. nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG > $ERROR_LOG &
  93. echo $! > $APP_PID
  94. echo "$APP_NAME started ..."
  95. else
  96. echo "$APP_NAME is not running ..."
  97. echo "$APP_NAME starting ..."
  98. cd ${APP_HOME}
  99. nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG > $ERROR_LOG &
  100. echo $! > $APP_PID
  101. echo "$APP_NAME started ..."
  102. fi
  103. ;;
  104. esac
  1. /etc/init.d/下创建自己的服务名称文件这里比如myapp.sh

  1. #!/bin/sh
  2. #
  3. # /etc/init.d/sms-web
  4. # chkconfig:
  5. # description: activemq servlet container.
  6. # processname: activemq 5.14.
  7.  
  8. # Source function library.
  9. #. /etc/init.d/functions
  10. # source networking configuration.
  11. #. /etc/sysconfig/network
  12.  
  13. export JAVA_HOME=/usr/local/jdk1..0_144
  14. export PATH=$JAVA_HOME/bin:$PATH
  15. export MYAPP_WEB_HOME=/usr/software/myapp
  16.  
  17. case $ in
  18. start)
  19. sh $MYAPP_WEB_HOME/myapp.sh start
  20. ;;
  21. stop)
  22. sh $MYAPP_WEB_HOME/myapp.sh stop
  23. ;;
  24. restart)
  25. sh $MYAPP_WEB_HOME/myapp.sh restart
  26. ;;
  27.  
  28. esac
  29. exit
  1. /etc/init.d/chmod +x myapp.sh赋权限

  2. chkconfig --list查看服务列表,如果没有, 添加chkconfig --add myapp到服务中。

  3. 设置开机启动chkconfig myapp on

spring boot打包以及centos下部署的更多相关文章

  1. spring boot (2):spring boot 打包tomcat、tomcat 部署多个项目、服务器部署项目SSL 设置(阿里云)

    一.spring boot 内置tomcat配置https: 关于自签名证书可以看下上一篇 spring boot1 更详细的可以看转载 https://www.jianshu.com/p/8d4ab ...

  2. Spring Boot打包部署

    date: 2018-11-19 15:30:11 updated: 2018-11-21 08:28:37 Spring Boot打包部署 第一种方式 打包成jar包部署在服务器上 1.1 添加插件 ...

  3. Spring Boot打包war jar 部署tomcat

    概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 4.项目 ...

  4. spring boot 打包war后 部署到外部 tomcat 的具体正确操作【包括修改端口 与 去除请求路径的工程名】

    1.前言 工程做好了,总不能放在idea运行吧?不然怎么把项目放到云服务器呢?[这一篇随笔不讲解发布的云服务器的操作,在其他随笔有详细记载.] 解决的方案是把springboot 工程 打包成war文 ...

  5. 一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题

    Java 执行命令行命令 这个没技术含量的东西耗费了我半个多小时 String command = ....; Process process = Runtime.getRuntime().exec( ...

  6. 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!

    最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一把全新的开发模式!虽然中间也碰到了一些问题,但整体的体验透露着未来感,因为整个过程都不需要使用我们最常用的IDEA,仅依靠浏览器就把一个Spri ...

  7. Spring Boot打包总结

    环境配置信息 -** JDK 1.8 -** Spring Boot 1.5.3.RELEASE -** IDE: STS 3.4 Spring Boot下打包过程 基于STS创建Spring boo ...

  8. Linux CentOS下部署Java Web项目

    本文讲解如何在Linux CentOS下部署Java Web项目的步骤. 一.环境准备: (1)Linux CentOS (2)apache-tomcat-9.0.10 (3)XShell 二.启动t ...

  9. Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?

    前两天被人问到这样一个问题: "松哥,为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?" 大伙有这样的疑问,就是因为还没搞清楚 ...

随机推荐

  1. 手工实现HttpBasic校验

      HttpBasic: 是RFC中定义的一种控制HTTP协议访问资源的方式.具体当HTTP请求受限资源时,就需要在请求头中添加以"Authorization"为key的heade ...

  2. mybatis+oracle 批量插入,若数据库中有则做更新操作

    1.只批量插入: insert into WXPAY_ACCOUNT(id ,out_trade_no ,transaction_id)select SEQ_WXPAY_ACCOUNT.nextval ...

  3. SCRUM 是一个用于开发和维护复杂产品的框架

    转自:http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html#tab-id-1 Scrum 是一个用于开发和维护复杂产品的框架 ...

  4. Java 程序员必备的一些流程图

    1.spring的生命周期 2.TCP三次握手,四次挥手 3.线程池执行流程图 4.JVM内存结构 5.Java内存模型 6.springMVC执行流程图 7.JDBC执行流程 8.spring cl ...

  5. linux环境下安装python3的方法(转)

    Linux 安装python3.7.0   我这里使用的时centos7-mini,centos系统本身默认安装有python2.x,版本x根据不同版本系统有所不同,可通过 python --V 或 ...

  6. 测试clang-format的格式化效果

    我自己写的业余框架已告一段落,主体功能已完成,剩下的就是优化.第一个要优化的,就是代码格式.我一直是用编辑器写代码的,从之前的UltraEdit到notepad++到sublime text,再到现在 ...

  7. springboot无法获取证书内容

    最近项目里面在接第三方验证的时候,需要用到生成的公钥和私钥证书.在demo测试的时候,发现在resources里面直接建立一个key文件夹放入证书文件,然后使用文件方式去获取,大概代码如下: File ...

  8. Jmeter官方插件实现Dubbo接口测试

    目前主流的分布式框架有Dubbo和SpringCloud, SpringCloud是基于Http协议的分布式框架,Dubbo是基于RPC的分布式框架,Jmeter没有内置对Dubbo接口的支持,很难直 ...

  9. sql 语句用法

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 ...

  10. [SHOI2013]阶乘字符串

    题目描述 给定一个由前\(n\)个小写字母组成的串\(S\). 串\(S\)是阶乘字符串当且仅当前\(n\)个小写字母的全排列(共\(n!\)种)都作为\(S\)的子序列(可以不连续)出现. 由这个定 ...