No.1 启停脚本
#!/bin/bash
## 加载配置,避免获取不到java_home
source /etc/profile
SERVICE_HOME=项目路径
SERVICE_NAME=服务名称
cd $SERVICE_HOME/$SERVICE_NAME
PROG=$SERVICE_HOME/$SERVICE_NAME
PIDFILE=$SERVICE_HOME/$SERVICE_NAME/$SERVICE_NAME.pid
JARFILE=$SERVICE_HOME/$SERVICE_NAME/$SERVICE_NAME.jar
status() {
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE)
if [ ! -x /proc/${PID} ]; then
return 1
else
return 0
fi
else
return 1
fi
}
case "$1" in
start)
status
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "-----$PIDFILE exists, process is already running or crashed"
exit 1
fi
##检测 java环境
if [ ! -n $JAVA_HOME ]; then
echo "-----Please check JAVA_HOME!"
echo "-----Exist"
exist 1
else
echo "-----Jave home: $JAVA_HOME"
echo "-----Starting $PROG ..."
nohup java -server -Xms512m -Xmx512m -jar $JARFILE > $SERVICE_NAME.log 2>&1 &
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "-----$PROG is started"
echo $! > $PIDFILE
exit 0
else
echo "-----Stopping $PROG"
rm -f $PIDFILE
exit 1
fi
fi
;;
stop)
status
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "-----Shutting down $PROG"
kill -9 `cat $PIDFILE`
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
rm -f $PIDFILE
else
echo "-----Failed to stopping $PROG"
fi
fi
;;
status)
status
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
PID=$(cat $PIDFILE)
echo "-----$PROG is running ($PID)"
else
echo "-----$PROG is not running"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac
No.2 配合jenkins 自动部署脚本
#!/bin/bash
## jenkins 自动部署脚本 jekins 项目 Post Steps设置 启动该脚本,配置如下:
# BUILD_ID=DONTKILLME
# bash auto_deploy.sh
SERVICE_NAME=服务名称
JARPATH=jenkins打包后的jar包地址
echo "service name:$SERVICE_NAME"
SERVICE_HOME=服务跟路径/$SERVICE_NAME
JARFILE=$SERVICE_HOME/$SERVICE_NAME.jar
BOOTSTRAP_FILE=$SERVICE_HOME/bootstrap.sh
echo "=====service name: $SERVICE_NAME"
echo "=====service home: $SERVICE_HOME"
echo "=====service resouce jar path: $JARPATH"
echo "=====service bootstrap file: $BOOTSTRAP_FILE"
echo "=====service jar: $JARFILE"
##停止原来的服务
echo "-----Stop service"
bash $BOOTSTRAP_FILE stop
echo "-----Delete source jar file path: $JARFILE"
rm -rf JARFILE
echo "-----Copy $JARPATH to $SERVICE_HOME"
cp $JARPATH $SERVICE_HOME
COPYRULST=$?
if [ $COPYRULST -eq 0 ];
then
echo "-----Copy success,wait start service....."
bash $BOOTSTRAP_FILE start
RETVAL=$?
if [ $RETVAL -eq 0 ];
then
echo "-----$SERVICE_NAME started!"
else
echo "-----$SERVICE_NAME start failed!"
fi
else
echo "-----Not exist $SERVICE_NAME jar"
exit 1
fi
No.3 jenins自动远程部署脚本
#!/bin/bash
## jenkins 自动部远程署脚本,需要配置两个服务器之间免密登录
## 免登陆配置参考:https://blog.csdn.net/u011186019/article/details/51737760?utm_source=blogxgwz4
##jekins 项目 Post Steps设置 启动该脚本,配置如下:
#BUILD_ID=DONTKILLME -- 表示Jenkins执行完后不杀死该进程,否则会再jenkins执行完后杀死启动的进程
#bash 远程脚本
SERVICE_NAME=服务名称
REMOTE_SERVICES_HOME=服务器HOME
REMOTE_SERVICE_IP=远程服务器IP
REMOTE_SERVICE_HOME=$REMOTE_SERVICES_HOME/$SERVICE_NAME
REMOTE_SERVICE_JAR=$REMOTE_SERVICE_HOME/$SERVICE_NAME.jar
REMOTE_SERVICE_BOOTSTRAP=$REMOTE_SERVICE_HOME/bootstrap.sh
LOCAL_JAR_PATH=jenkins打包后的路径
echo "=============Service name: $SERVICE_NAME"
echo "=============Remote services home: $REMOTE_SERVICES_HOME"
echo "=============Remote server ip: $REMOTE_SERVICE_IP"
echo "=============Remote service home: $REMOTE_SERVICE_HOME"
echo "=============Remote service jar: $REMOTE_SERVICE_JAR"
echo "=============Remote service bootstrap file: $REMOTE_SERVICE_BOOTSTRAP"
echo "-----Stop and Delete remote service: $SERVICE_NAME"
ssh -T root@$REMOTE_SERVICE_IP << remotessh
sh $REMOTE_SERVICE_BOOTSTRAP stop
rm -rf $REMOTE_SERVICE_JAR
exit
remotessh
echo "-----Scp $LOCAL_JAR_PATH to $REMOTE_SERVICE_HOME"
scp $LOCAL_JAR_PATH root@$REMOTE_SERVICE_IP:$REMOTE_SERVICE_HOME
echo "-----Start remote service"
ssh -T root@$REMOTE_SERVICE_IP << remotessh
sh $REMOTE_SERVICE_BOOTSTRAP start
exit
remotessh
Git传送门:https://github.com/Xlinlin/spring-cloud-demo/tree/master/SpringCloud-Common/script