为什么写这篇文章
记录一下Alibaba Cloud Toolkit的使用流程,也是分享给同事和朋友.有使用的问题欢迎大家提出.
本文会介绍的主要内容:
- 一键部署Spring Boot项目到服务器
- 分享Spring Boot脚本,拒绝使用
kill -9
关闭服务 - 一些使用Toolkit的小技巧分享给大家
Alibaba Cloud Toolkit Deploy To Host
- 下载插件 -> IDEA Plugin HomePage
- 配置自己的Host服务器 记得进行TestConnection
这里在配置完毕后是可以Upload和Terminal,方便大家进行相关操作。
3.在项目下准备一个目录
test-server就是你要部署到服务器的目录,他会完全copy到服务器的。
分享下spring-boot.sh文件
记得改成LF
否则脚本会启动不成功
脚本太长,就放到文章末尾了.
3.
command
cd /usr/local/test-server; chmod +x spring-boot.sh; ./spring-boot.sh restart;
问题来了,package的时候如何把jar包放到test-server目录下呢?
修改pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<outputDirectory>
${deploy-path}
</outputDirectory>
</configuration>
</plugin>
</plugins>
<finalName>${deploy-name}</finalName>
</build>
邀请码
我的Alibaba Cloud Toolkit 邀请码 7ZSUVA
spring-boot.sh
#!/bin/sh
##项目服务名称
SERVICE_NAME=test-server
JAR_NAME=$SERVICE_NAME\.jar
JAR_HOME=jar/
#PID 代表是PID文件
PID=$SERVICE_NAME\.pid
## 日志文件名称
LOG_NAME=catalina.out
#服务目录
SERVICE_HOME=$(cd "$(dirname "$0")"; pwd)
#日志目录
SERVICE_LOGS=$SERVICE_HOME/logs
#java虚拟机启动参数
JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $JAR_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 ">>> ${JAR_NAME} is already running PID=${pid} <<<"
else
nohup java $JAVA_OPTS -jar $JAR_HOME$JAR_NAME >$SERVICE_LOGS/$LOG_NAME 2>&1 &
echo $! > $PID
echo ">>> start $JAR_NAME successed PID=$! <<<"
fi
}
#停止方法
stop(){
#is_exist
pidf=$(cat $PID)
#echo "$pidf"
echo ">>> api PID = $pidf begin kill $pidf <<<"
kill -15 $pidf
rm -rf $PID
sleep 2
is_exist
if [ $? -eq "0" ]; then
echo ">>> api 2 PID = $pid begin kill -9 $pid <<<"
kill -9 $pid
sleep 2
echo ">>> $JAR_NAME process stopped <<<"
else
echo ">>> ${JAR_NAME} is not running <<<"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo ">>> ${JAR_NAME} is running PID is ${pid} <<<"
else
echo ">>> ${JAR_NAME} is not running <<<"
fi
}
#重启
restart(){
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
exit 0