spring boot打包以及centos下部署

spring boot打包以及部署

一、打包

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

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

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>
  • 在idea工具中可视化工具打包,如图

  • 通过命令行来打包

    mvn clean package -Dmaven.test.skip=true

二、部署

官网文档部署说明

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

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

  1. XXX.sh,此sh放到和jar统一目录即可
#!/bin/sh
### BEGIN INIT INFO
# Provides:          lanwei
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: XXX service
# Description:       XXX service
### END INIT INFO
echo "Starting...."
APP_NAME=$(echo $(basename $0) | sed -e ‘s/^[SK][0-9]*//‘ -e ‘s/\.sh$//‘)
APP_HOME=/usr/software/${APP_NAME}
#这里需要配置环境,dev test stg prd
APP_ENV="dev"
#配置jar
APP_JAR=${APP_HOME}/XXXX.jar
usage() {
    echo "Usage: sh ${APP_NAME} [start|stop|restart]"
    exit 1
}
##################################################
# Some utility functions
##################################################
findDirectory()
{
  local L OP=$1
  shift
  for L in "[email protected]"; do
    [ "$OP" "$L" ] || continue
    printf %s "$L"
    break
  done
}
echo "APP_ENV   :   ${APP_ENV}"
echo "APP_HOME  :   ${APP_HOME}"
echo "APP_NAME  :   ${APP_NAME}"
echo "APP_JAR   :   ${APP_JAR}"
#####################################################
# Find a location for the pid file
#####################################################
if [ -z "$APP_RUN" ]
then
  APP_RUN=$(findDirectory -w /var/run /usr/var/run /tmp)
fi
#APP_RUN=/var/run
echo "APP_RUN   :   ${APP_RUN}"
#####################################################
# Find a pid
#####################################################
if [ -z "$APP_PID" ]
then
  APP_PID="$APP_RUN/${APP_NAME}.pid"
fi
echo "APP_PID   :   ${APP_PID}"
LOG=${APP_HOME}/logs/${APP_ENV}.log
ERROR_LOG=${APP_HOME}/logs/${APP_ENV}_err.log
case $1 in
    start)
        echo "Starting ${APP_NAME} ..."
        if [ ! -f $APP_PID ]; then
            cd ${APP_HOME}
            nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG 2> $ERROR_LOG &
                        echo $! > $APP_PID
            echo "$APP_NAME started ..."
        else
            echo "$APP_NAME is already running ..."
        fi
    ;;
    stop)
        if [ -f $APP_PID ]; then
            PID=$(cat $APP_PID);
                        echo "$APP_NAME PID is ${PID}"
            echo "$APP_NAME stoping ..."
            kill $PID;
            echo "$APP_NAME stopped ..."
            rm $APP_PID
        else
            echo "$APP_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $APP_PID ]; then
            PID=$(cat $APP_PID);
                        echo "$APP_NAME PID is ${PID}"
            echo "$APP_NAME stopping ...";
            kill $PID;
            echo "$APP_NAME stopped ...";
            rm $APP_PID
            echo "$APP_NAME starting ..."
            cd ${APP_HOME}
            nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG 2> $ERROR_LOG &
                        echo $! > $APP_PID
            echo "$APP_NAME started ..."
        else
            echo "$APP_NAME is not running ..."
            echo "$APP_NAME starting ..."
                        cd ${APP_HOME}
            nohup java -jar $APP_JAR --spring.profiles.active=${APP_ENV} > $LOG 2> $ERROR_LOG &
                        echo $! > $APP_PID
            echo "$APP_NAME started ..."
        fi
    ;;
esac
  1. /etc/init.d/下创建自己的服务名称文件这里比如myapp.sh
#!/bin/sh
#
# /etc/init.d/sms-web
# chkconfig: 345 63 37
# description: activemq servlet container.
# processname: activemq 5.14.1

# Source function library.
#. /etc/init.d/functions
# source networking configuration.
#. /etc/sysconfig/network

export JAVA_HOME=/usr/local/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export MYAPP_WEB_HOME=/usr/software/myapp

case $1 in
    start)
        sh $MYAPP_WEB_HOME/myapp.sh start
    ;;
    stop)
        sh $MYAPP_WEB_HOME/myapp.sh stop
    ;;
    restart)
        sh $MYAPP_WEB_HOME/myapp.sh restart
    ;;

esac
exit 0
  1. /etc/init.d/chmod +x myapp.sh赋权限
  2. chkconfig --list查看服务列表,如果没有, 添加chkconfig --add myapp到服务中。
  3. 设置开机启动chkconfig myapp on

原文地址:https://www.cnblogs.com/lanweijava/p/9701247.html

时间: 2024-10-09 22:48:02

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

spring/boot 打包,资源/配置/业务文件分离

spring/boot打包,将业务jar包和资源配置文件进行分离打包,打包后的资源在target/release文件夹下面 注意:添加以下配置后,注意修改自己的入口类 <!--相关编译打包依赖--> <build> <plugins> <!--打包jar--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-p

Spring boot打包为可部署在tomcat下运行的war文件的方法(使用Gradle、Intellij IDEA)

使用Gradle: dependencies { compile("org.springframework.boot:spring-boot-starter-web") providedCompile("org.springframework.boot:spring-boot-starter-tomcat")//此处使用providedCompile,则生成的jar包可放入tomcat内运行// compile("org.springframework.b

Spring boot 打包瘦身方法

背景 随着spring boot 的流行.越来越多的来发着选择使用spring boot 来发 web 应用. 不同于传统的 web 应用 需要 war 包来发布应用. spring boot 应用可以把整个项目打包成一个可执行的 jar .同时也导致 jar 越来越庞大. 对于现在高速迭代项目.上传如此庞大的 jar 对来发人员来说是一件极其痛苦的事情. 本章介绍如何将项目中变化的不大的 jar 提取到外部. 具体步骤: 1: 通常我们是用spring-boot-maven-plugin 进行

spring boot打包,依赖、配置文件分离,拷贝启动脚本

一.最终打包的目录结构 二.项目结构 三.开始 1.最终打包的目录,可根据自己需要修改. <properties> <mzservice.path>${project.build.directory}/mzservice</mzservice.path> </properties> 2.配置清理插件,每次打包前,清理之前生成的打包目录. <plugin> <artifactId>maven-clean-plugin</artif

Centos下部署Flask

尝试在Centos6.5下部署Flask应用并成功,记录一下步骤,参数为什么这样配置还需要再研究uwsgi和Nginx才能回答. Python版本升级2.7 测试机器centos6.5默认自带的python版本是2.6.6,因此需要升级.我们采用Anacond的方式进行升级. 升级过程: 下载anaconda https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 下载Anaconda2-4.3.1-Linux-x86_64.sh 拉到服务器

Spring Boot项目在Mac下使用Maven启动时碰到的神奇问题:Unregistering JMX-exposed beans on shutdown

错误如下: ? springboottest1 mvn spring-boot:run [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building springboottest1 0.0.1-SNAPSHOT [INFO] ---------------------------------

Spring Boot事务管理(下)

在上两篇 Spring Boot事务管理(上)和Spring Boot事务管理(中)的基础上介绍注解@Transactional. 5 @Transactional属性 属性 类型 描述 value String 指定使用的事务管理器 propagation enum: Propagation 可选的事务传播行为设置 isolation enum: Isolation 可选的事务隔离级别设置 readOnly boolean 读写或只读事务,默认读写 timeout int,unit secon

Spring Boot引入某个包下部分Bean

Spring Boot环境下,假如有个第三方包third.jar,内有com.xxx.config目录,在com.xxx.config目录下有3个被@Component注释的类分别是A, B, C,现在我们需要在应用中让A注册到Spring容器中,而B,C不注册进来.有2个方法: 使用@ComponetScan的Filter,类似这样:@ComponentScan(basePackageClasses = A.class, useDefaultFilters = false, includeFi

Spring Boot打包部署修改jar文件名

只需要在pom.xml的<build>标签中加上这个即可: 1 <build> 2 <finalName>my-spring-boot</finalName> <!-- 指定package生成的文件名为my-spring-boot.jar --> 3 4 <plugins> 5 ...... 6 </plugins> 7 </build> 原文地址:https://www.cnblogs.com/import-