手動部署
Spring Boot 的部署很簡單卫玖,無論使用maven還是gradle構(gòu)建成jar包之后,上傳到服務(wù)器上攒霹,運行 java -jar *.jar
即可完成簡單的部署涂臣。如果想使用外部的配置文件直接在后面加參數(shù)就行了 --spring.config.location=application-production.yml
如果想關(guān)閉終端還在后臺啟動的話加上 nohup 就可以了
nohup java -jar *.jar --spring.config.location=application-production.yml
殺掉進程
普通情況只要關(guān)閉終端或ctrl+c即可結(jié)束應(yīng)用,如果使用nohup部署的話先要找到進程號搞糕,然后殺掉進程。
lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 2417 root 26u IPv6 1672621 0t0 TCP *:webcache (LISTEN)
kill -9 2417
使用service
如果每一次部署和殺死都要手動的話曼追,頻率多了其實也挺麻煩的窍仰,可以使用腳本來解決這個問題。
在 etc/init.d
先建一個腳本拉鹃,把這個項目作為service來運行
例如 新建etc/init.d/test
內(nèi)容如下
#!/bin/sh
SERVICE_NAME=test
HOME=/root/webserver/test
PATH_TO_JAR=$HOME/*.jar
PID_PATH_NAME=/tmp/test.pid
LOG=$HOME/production.log
ERROR_LOG=$HOME/production.err
CONFIG=$HOME/application-production.yml
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
cd $HOME
nohup java -jar $PATH_TO_JAR --spring.config.location=application-production.yml > $LOG 2> $ERROR_LOG &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is already running ..."
fi
;;
stop)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stoping ..."
kill $PID;
echo "$SERVICE_NAME stopped ..."
rm $PID_PATH_NAME
else
echo "$SERVICE_NAME is not running ..."
fi
;;
restart)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stopping ...";
kill $PID;
echo "$SERVICE_NAME stopped ...";
rm $PID_PATH_NAME
echo "$SERVICE_NAME starting ..."
cd $HOME/current
nohup java -jar $PATH_TO_JAR --spring.config.location=application-production.yml > $LOG 2> $ERROR_LOG &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
esac
保存腳本
賦予腳本可執(zhí)行權(quán)限 sudo chmod +x etc/init.d/test
把需要部署的jar包放到腳本中HOME
的目錄下,然后就可以使用service的方式部署或殺死項目了鲫忍。
sudo service test start
sudo service test stop
sudo service test restart