【Linux學習筆記】Linux 系統下部署SpringBoot應用

一、概述

在這之前,需要在機子上準備好java的運行環境。

二、項目部署

2.1、項目打包成jar文件

項目部署前需要將項目打包成jar文件,這部分的話具體不再闡述。如果你是標準的SpringBoot項目可以參見下圖。
在這裏插入圖片描述

2.2、在Linux服務器上創建項目文件夾

使用如下的命令創建文件夾

mkdir supervision

創建後的文件夾的目錄結構如下圖所示
在這裏插入圖片描述

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運行時的配置文件的讀取位置。如下圖部分
在這裏插入圖片描述
但是實際運行的時候出現了,無法讀取到配置文件的情況。如下圖
在這裏插入圖片描述
這個時候可以將設置讀取外部配置的代碼去掉。

PS:我實際在用的時候發現,後來不知道怎麼就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章