1. 程式人生 > >linux下springboot專案jar包部署

linux下springboot專案jar包部署

一、springboot中jar包啟動停止指令碼

指令碼備註說明: java -jar app.jar 執行jar包

java -jar -Dspring.config.location="" app.jar 指定配置檔案執行jar包

備註:spring載入配置檔案優先順序為:

Spring程式會按優先順序從下面這些路徑來載入application.properties配置檔案
當前目錄下的/config目錄
當前目錄
classpath裡的/config目錄
classpath 跟目錄


#!/bin/bash 
#這裡可替換為你自己的執行程式,其他程式碼無需更改 
APP_NAME=demo1-0.0.1-SNAPSHOT.jar 
JVM="-server -Xms512m -Xmx512m -XX:PermSize=64M -XX:MaxNewSize=128m -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
APPFILE_PATH="-Dspring.config.location=/usr/local/demo/config/application-demo1.properties"
#使用說明,用來提示輸入引數 
usage() { 
    echo "Usage: sh 執行指令碼.sh [start|stop|restart|status]" 
    exit 1 
} 
#檢查程式是否在執行 
is_exist(){ 
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` 
    #如果不存在返回1,存在返回0 
    if [ -z "${pid}" ]; then 
        return 1 
    else 
        return 0 
    fi 
} 
#啟動方法 
start(){ 
    is_exist 
    if [ $? -eq "0" ]; then 
        echo "${APP_NAME} is already running. pid=${pid} ." 
    else 
        nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1 &
    fi
} 
#停止方法 
stop(){ 
    is_exist 
    if [ $? -eq "0" ]; then 
        kill -9 $pid 
    else 
        echo "${APP_NAME} is not running" 
    fi 
} 
#輸出執行狀態 
status(){ 
    is_exist 
    if [ $? -eq "0" ]; then 
        echo "${APP_NAME} is running. Pid is ${pid}" 
    else 
        echo "${APP_NAME} is NOT running." 
    fi 
} 
#重啟 
restart(){ 
    stop 
    start 
} 
#根據輸入引數,選擇執行對應方法,不輸入則執行使用說明 
case "$1" in 
"start") 
start 
;; 
"stop") 
stop 
;; 
"status") 
status 
;; 
"restart") 
restart 
;; 
*) 
usage 
;; 
esac

指令碼解釋說明:

執行jar包方式:
1.java -jar XXX.jar  當前ssh視窗被鎖定,可按CTRL + C打斷程式執行,或直接關閉視窗,程式退出
2.java -jar XXX.jar &  當前ssh視窗不被鎖定,但是當視窗關閉時,程式中止執行。
3.nohup java -jar XXX.jar &  nohup 意思是不掛斷執行命令,當賬戶退出或終端關閉時,程式仍然執行
4.nohup java -jar XXX.jar >temp.txt &  與3相同  日誌資訊會重定向到檔案中

nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1 &

解釋說明:
    nohup:不掛斷運行當前命令
    java $jvm -jar $appFile $app_name 指定java虛擬機器配置和yml配置執行jar包
    >/dev/null 不輸出任何內容
    2>&1 將標準錯誤重定向到標準輸出
    & 表示視窗不被鎖定 即視窗一直顯示應用執行狀態,無法做其他事情

二、tomcat部署springboot專案遇到問題處理

1.linux環境下springboot的war和jar如何部署

war包部署:直接將war包丟在tomcat下的webapps目錄下面
           或者將war包解壓 在server.xml檔案中指定訪問路徑
           
jar包部署:直接寫指令碼 執行jar檔案

2.springboot專案配置檔案外部配置

可以在執行時指定配置檔案,配置檔案存放目錄以及啟動記載優先順序都有說明

3.mysql遠端主機連線收取

遠端mysql伺服器授權命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.50.182' IDENTIFIED BY '123456' WITH GRANT OPTION;

4.應用已經啟動,本機可以訪問,遠端不能訪問,檢查埠或者防火牆設定

處理:開放埠或者關閉防火牆
開放埠:
新增
firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,沒有此引數重啟後失效)
重新載入
firewall-cmd --reload
檢視
firewall-cmd --zone= public --query-port=80/tcp
刪除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

關閉防火牆:
啟動: systemctl start firewalld
關閉: systemctl stop firewalld