【Linux学习笔记】Linux 系统下部署SpringBoot应用

Linux系统下部署SpringBoot应用

  • 一、概述
  • 二、项目部署
    • 2.1、项目打包成jar文件
    • 2.2、在Linux服务器上创建项目文件夹
    • 2.3、创建restart.sh文件
    • 2.3、给restart.sh文件添加权限
    • 2.4、使用
  • 三、restart.sh文件中的命令行说明
  • 四、踩到的坑

一、概述

在这之前,需要在机子上准备好java的运行环境。

二、项目部署

2.1、项目打包成jar文件

项目部署前需要将项目打包成jar文件,这部分的话具体不再阐述。如果你是标准的SpringBoot项目可以参见下图。
【Linux学习笔记】Linux 系统下部署SpringBoot应用_第1张图片

2.2、在Linux服务器上创建项目文件夹

使用如下的命令创建文件夹

mkdir supervision

创建后的文件夹的目录结构如下图所示
【Linux学习笔记】Linux 系统下部署SpringBoot应用_第2张图片

2.3、创建restart.sh文件

## 创建文件
vim restart.sh

文件内容

#!/bin/bash
base_home='/home/supervision'
app_name='supervision'

pid=`ps -ef|grep ${app_name}|grep -v grep|grep -v restart|awk '{print$2}'`
if [ -n "${pid}" ] ;then
        kill -9 ${pid}
        sleep 10
fi

gclog_file=$base_home/log/gc.log
dump_dir=$base_home/heapdump
errorlogs_dir=$base_home/log


java -Xmx1g -Xms1g -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation  -XX:GCLogFileSize=128M  -XX:NumberOfGCLogFiles=1  -Xloggc:${gclog_file} -XX:HeapDumpPath=${dump_dir} -jar $base_home/app/${app_name}.jar --Dspring.config.location=$base_home/config/application.yml >> $base_home/log/${app_name}_$(date +'%Y%m%d').log &

2.3、给restart.sh文件添加权限

chmod +x restart.sh

2.4、使用

sh restart.sh

三、restart.sh文件中的命令行说明

base_home='/home/supervision' : supervision项目的根路径

app_name='supervision' : 项目名称(即/home/supervision/app/supervision.jar的文件名)

pid=`ps -ef|grep ${app_name}|grep -v grep|grep -v restart|awk '{print$2}'` : 找到supervision项目当前运行的进程号(若有)

if [ -n "${pid}" ] ;then kill -9 ${pid} sleep 10 fi : 若supervision项目已运行,根据上一步骤获得的pid可以杀死当前运行supervision项目的进程

-Xmx1g : 设置JVM最大可用内存为1g。
-Xms1g : 设置JVM促使内存为1g。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-XX:+UseParallelGC : 选择垃圾收集器为并行收集器。
-XX:+UseParallelOldGC : 配置年老代垃圾收集方式为并行收集。
-XX:+PrintGCDetails : 可以详细了解GC中的变化。
-XX:+PrintGCTimeStamps : 配合上面的PrintGCDetails,可以了解这些垃圾收集发生的时间,自JVM启动以后以秒计量。
-XX:+UseGCLogFileRotation : 启用GC日志文件的自动转储。
-XX:GCLogFileSize=128M : 控制GC日志文件的大小。
-XX:NumberOfGCLogFiles=1 : GC日志文件的循环数目。
-Xloggc:${gclog_file} : 把gc日志信息记录到文件gclog_file=$base_home/log/gc.log。
-XX:HeapDumpPath=${dump_dir} : 将Heap Dump信息保存到dump_dir=$base_home/heapdump。
--spring.config.location=$base_home/config/application.yml : 运行的配置文件,若没有config/application.yml,则用jar里的配置文件。
>> $base_home/log/${app_name}_$(date +'%Y%m%d').log 将运行的log信息保存到$base_home/log 文件夹下,log文件会以日期命名${app_name}_$(date +'%Y%m%d').log 最终的名字可能是supervision_20190213.log 。
&:符号是为了让程序能在后台运行。

四、踩到的坑

restart.sh文件中,配置了jar运行时的配置文件的读取位置。如下图部分
【Linux学习笔记】Linux 系统下部署SpringBoot应用_第3张图片
但是实际运行的时候出现了,无法读取到配置文件的情况。如下图
【Linux学习笔记】Linux 系统下部署SpringBoot应用_第4张图片
这个时候可以将设置读取外部配置的代码去掉。

PS:我实际在用的时候发现,后来不知道怎么就可以了。

你可能感兴趣的:(Linux)