springboot打包以及centos下部署

lanwei      2022-04-13     538

关键词:

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

 

centos7下部署springboot项目

1.将打包好的项目传到Linux下(如利用xftp)2.找到文件目录,执行以下命令:  nohupjava-jarxxxx.war>xxxx.log2>&1&  解释:    以上命令后台运行项目,并将输出信息打印到xxxx.log文件3.注意  项目pom.xml文件里需添加插... 查看详情

springboot简单打包部署(附工程)

前言本文主要介绍SpringBoot的一些打包事项和项目部署以及在其中遇到一些问题的解决方案。SpringBoot打包在SpringBoot打包这块,我们就用之前的一个web项目来进行打包。首先需要明确的是,该项目打包的形态是可执行的jar包,还是... 查看详情

linux(centos7)部署springboot打包的jar文件

安装JDK1.8参考检查jdk版本,查看是否已经安装java-version系统环境:centos-7.4安装方式:rpm安装软件:jdk-8u161-linux-x64.rpm下载地址下载jdk*.rpm文件到当前目录下wget-chttp://download.oracle.com/otn-pub/java/jdk/8u161-b12/2 查看详情

centos7/8系统下,使用jenkins实现springboot+vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示(代码片段)

Win10+CentOS7/8操作系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,从GitLab拉取代码,一键编译打包,跨服务器部署(阿里云服务器,物理服务器,虚拟机下亲测)一,安装配置J... 查看详情

centos7/8系统下,使用jenkins实现springboot+vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示(代码片段)

Win10+CentOS7/8操作系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,从GitLab拉取代码,一键编译打包,跨服务器部署(阿里云服务器,物理服务器,虚拟机下亲测)一,安装配置J... 查看详情

centos7/8系统下,使用jenkins实现springboot+vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示(代码片段)

Win10+CentOS7/8操作系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,从GitLab拉取代码,一键编译打包,跨服务器部署(阿里云服务器,物理服务器,虚拟机下亲测)一,安装配置J... 查看详情

打包springboot项目部署到云服务器以及其他一些操作

1.项目打包:https://blog.csdn.net/qq_34409900/article/details/805612772.添加yum源:https://help.aliyun.com/document_detail/51853.html?spm=a2c4g.11186623.6.820.RaToNY3.通过yum装jdk1.8:https://blog.csdn.net/a360616 查看详情

docker部署springboot项目

Docker相关安装dockeryum-yinstalldocker(centos下)运行docker服务servicedockerstart或者/bin/systemctlstartdocker.serviceIdea新建web项目编写测试controller,打包成jar包,测试可运行访问并输出内容;编写DockerfileFROMjava:8EXPOSE86VOLUME/tmpADDdock 查看详情

docker打包springboot项目war包镜像并部署(代码片段)

docker事先有centos:7镜像,本地文件需要有一个war包和一个jdk压缩包docker可以自己添加本地镜像也可以拉取dockerpullcentos:7或dockerload-icentos_xxx.tar.gz1.创建文件夹/home/app/warimage2.把war包和jdk压缩包放在warimage下3.在warimage目录创建Docke... 查看详情

centos7上部署springboot

...https://www.cnblogs.com/yufeng218/p/8370670.html三、在自己机器上把springboot项目打包成一个可执行jar包  我本地用的maven构建,官方支持 查看详情

打包springboot工程并部署

  使用工具:Eclipse  Linux下JDK版本:jdk-7u79-linux-x64.tar.gz一、打包成jar并部署   步骤如下:  首先上pom.xml:1<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"2xsi 查看详情

linux(centos7)部署springboot打包的jar文件

安装JDK1.8参考检查jdk版本,查看是否已经安装java-version系统环境:centos-7.4安装方式:rpm安装软件:jdk-8u161-linux-x64.rpm下载地址下载jdk*.rpm文件到当前目录下wget-chttp://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a... 查看详情

linux下部署springboot项目的步骤及过程

最近在研究将springboot项目部署到Linux服务器上,由于springboot是内嵌了tomcat,所以可以直接将项目打包上传至服务器上。我是在idea上的项目,所以我就基于此说下过程。(一)打包你的项目1、在pom文件中添加springboot的maven插件&nb... 查看详情

centos7/8系统下,使用jenkins实现springboot+vue前后端分离项目持续集成,一键编译打包跨设备部署,完整详细教学演示(代码片段)

Win10+CentOS7/8操作系统下,使用Jenkins实现SpringBoot+Vue前后端分离项目持续集成,从GitLab拉取代码,一键编译打包,跨服务器部署(阿里云服务器,物理服务器,虚拟机下亲测)一,安装配置J... 查看详情

intellijidea下springboot项目打包

SpringBoot自带Tomcat插件,可以直接编写启动类,开启Tomcat服务springboot适合前后端分离,打成jar进行部署更合适application.properties配置端口server.port=8089marven的配置文件pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://ma 查看详情

docker部署springboot项目

Docker相关安装dockeryum-yinstalldocker(centos下)运行docker服务servicedockerstart或者/bin/systemctlstartdocker.serviceIdea新建web项目编写测试controller,打包成jar包,测试可运行访问并输出内容;编写DockerfileFROMjava:8EXPOSE86VOLUME/tmpADDdocker_demo-0.0.1-SN... 查看详情

用docker+nginx部署springboot+vue项目,以及部署mysql

参考技术Aspringboot打包容器运行容器nginxdockerrun--namenignx-d-p80:80-v/usr/nginx/html:/usr/share/nginx/html-v/usr/nginx/conf/nginx.conf:/etc/nginx/nginx.conf-v/usr/nginx/conf.d:/etc/nginx/conf.dnginx 查看详情

springboot应用部署到外部tomcat

一、前言    SpringBoot内置tomcat使用很方便,打包成可执行jar文件后可以直接运行,然后内置Tomcat配置终究没有外部独立Tomcat方便,并且如果有多个web应用,使用外部独立Tomcat管理起来也更加方便。因此,这边文章... 查看详情