環境:
os版本:centos7.6
jdl版本:jdk1.8
項目類型:spring-boot 其他也一樣
安裝路徑: /opt/application/
步驟:
1、配置java啟動腳本
2、配置啟動腳本
boot.sh 通用啟動腳本 注意腳本要有執行權限:chmod +x boot.sh
#!/bin/bash # Java ENV export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64 export JRE_HOME=${JAVA_HOME}/jre # Apps Info # 應用存放地址 APP_HOME=/opt/application # 應用名稱 APP_NAME=$1 # jvm參數配置 JAVA_OPTS="-verbosegc" JAVA_OPTS="${JAVA_OPTS} -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+DisableExplicitGC" JAVA_OPTS="${JAVA_OPTS} -Dspring.profiles.active=prod" # Shell Info # 使用說明,用來提示輸入參數 usage() { echo "Usage: sh boot [APP_NAME] [start|stop|restart|status]" exit 1 } # 檢查程序是否在運行 is_exist(){ # 獲取PID PID=$(ps -ef |grep ${APP_NAME} | grep -v $0 |grep -v grep |awk '{print $2}') # -z "${pid}"判斷pid是否存在,如果不存在返回1,存在返回0 if [ -z "${PID}" ]; then # 如果進程不存在返回1 return 1 else # 進程存在返回0 return 0 fi } # 定義啟動程序函數 start(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is already running, PID=${PID}" else nohup ${JRE_HOME}/bin/java ${JAVA_OPTS} -jar ${APP_HOME}/${APP_NAME} >/dev/null 2>&1 & PID=$(echo $!) echo "${APP_NAME} start success, PID=$!" fi } # 停止進程函數 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 ${PID} echo "${APP_NAME} process stop, PID=${PID}" else echo "There is not the process of ${APP_NAME}" fi } # 重啟進程函數 restart(){ stop start } # 查看進程狀態 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running, PID=${PID}" else echo "There is not the process of ${APP_NAME}" fi } case $2 in "start") start ;; "stop") stop ;; "restart") restart ;; "status") status ;; *) usage ;; esac exit 0
啟動腳本:start.sh
#!/bin/bash sh /opt/application/boot.sh proxyee-endpoint-server-2.2.1.RELEASE.jar $1
配置systemctl的文件 vim /lib/systemd/system/endpoint.service
[Unit] Description=endpoint-server After=network.target [Service] Type=forking ExecStart=/opt/application/start.sh start ExecReload=/opt/application/start.sh restart ExecStop=/opt/application/start.sh stop [Install] WantedBy=multi-user.target
執行命令:
修改服務配置重新生效:systemctl daemon-reload
systemctl enable endpoint 使配置生效,注意endpoint是項目名,start.sh需要改jar文件的名字,boot.sh需要修改項目的路徑和spring環境變量配置
完成后reboot執行重啟命令,看服務是否已經啟動成功。
附贈:
開機啟動:systemctl enable endpoint
啟動:systemctl start endpoint
關閉:systemctl stop endpoint
重啟:systemctl restart endpoint
查看狀態:systemctl status endpoint
修改服務配置重新生效:systemctl daemon-reload
查看所有的開機啟動項:
systemctl list-unit-files|grep enabled