zoukankan      html  css  js  c++  java
  • 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 "$@"; 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

  • 相关阅读:
    函数指针与函数声明
    long和int的区别
    pthread_create传递参数
    C语言中的static 详细分析
    linux 读写锁应用实例
    linux使用读写锁pthread_rwlock_t
    linux的<pthread.h>
    时间:UTC时间、GMT时间、本地时间、Unix时间戳
    等号赋值与memcpy的效率问题
    单链表带头结点&不带头结点
  • 原文地址:https://www.cnblogs.com/lanweijava/p/9701247.html
Copyright © 2011-2022 走看看