spring boot打包以及centos下部署

时间:2023-03-08 20:11:23
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工具中可视化工具打包,如图

spring boot打包以及centos下部署

spring boot打包以及centos下部署

  • 通过命令行来打包

    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:
# Default-Stop:
# Short-Description: XXX service
# Description: XXX service
### END INIT INFO
echo "Starting...."
APP_NAME=$(echo $(basename $) | 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
}
##################################################
# Some utility functions
##################################################
findDirectory()
{
local L OP=$
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 $ 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 > $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 > $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 > $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:
# description: activemq servlet container.
# processname: activemq 5.14. # Source function library.
#. /etc/init.d/functions
# source networking configuration.
#. /etc/sysconfig/network export JAVA_HOME=/usr/local/jdk1..0_144
export PATH=$JAVA_HOME/bin:$PATH
export MYAPP_WEB_HOME=/usr/software/myapp case $ 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
  1. /etc/init.d/chmod +x myapp.sh赋权限

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

  3. 设置开机启动chkconfig myapp on