天天看點

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