背景
- 完成新需求,关联的服务过多(均以spring boot为服务),本机电脑启动太多,无法调试,过于卡(卑微)
- 希望能放在自己的服务器上进行处理,但是想打debug,希望能在idea里面调试。
- 不希望进行服务器太多操作
工具
- idea(2018版之后的,因为远程链接支持2018之后的)
- 一台服务器,随便什么,自己测试用的(端口也要开放)
- 远程装jdk,我用的都是1.8,如果是超过8的,或者低于4的下面java_opt参数要选择下的
第一步:完成自动部署
- 这里利用一个插件Alibaba Cloud Toolkit帮助完成自动部署
- 安装插件,File | Settings | Plugins 下,搜索Alibaba Cloud Toolkit,安装,重启
- 然后配置,
- 新增一个
- 编写脚本(注:所有的{东西}包含大括号都要改的)
#!/bin/sh
APP_NAME={这里填写jar包的名字}
APP_PORT={这里是jar包跑起来的端口}
APP_LISTTEN={这里是idea本地的端口监听}
APP_LOG={这里是日志输出路径}
# 这里是关闭当前jar包
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 5
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
rm -f tpid
# 这里是启动jar
if [ ! -d $APP_LOG ];then
touch $APP_LOG
fi
nohup java -Xms256m -Xmx256m -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$APP_PORT $APP_NAME --server.port=$APP_PORT > $APP_LOG 2>&1 &
echo $! > tpid
echo Start Success!
- 上述完成,则成功,idea运行则可以自动打包上传,部署(不是正式的)
idea远程debug
出现上述两个图标,先运行上面那个,然后再运行下面那个,则成功
问题:还有一个日志查看,我是idea直接链接过去查看,不太方便
方法二:还有一种就是不依靠插件,直接通过idea自带,远程服务器装maven,将项目代码同步到服务器上面,然后maven直接跑起来,本地再连接(不想把代码扔到上面,所以没这么去操作,看个人喜欢)
稍微升级下,共用一个脚本命令启动(之前每个都设置多个脚本命令,太痛苦了,所以,就用单个的就行了)
#!/bin/sh
echo 'start sh'
while getopts ":a:b:c:d:" opt
do
case $opt in
a)
echo "参数a的值$OPTARG"
APP_NAME=$OPTARG
;;
b)
echo "参数b的值$OPTARG"
APP_PORT=$OPTARG
;;
c)
echo "参数c的值$OPTARG"
APP_LISTEN=$OPTARG
;;
d)
echo "参数d的值$OPTARG"
APP_LOG=$OPTARG
;;
?)
echo "未知参数"
exit 1;;
esac
done
stauts(){
echo "进入查询"
pid=`ps -ef|grep $APP_NAME|grep -v grep|grep java |awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
echo "不存在"
return 1
else
echo "存在"
return 0
fi
}
stopService(){
echo "进入关闭"
stauts
echo $?
if [ $? == 0 ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
startService(){
echo "进入启动"
stauts
if [ $? == 0 ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
echo "启动项目"
nohup java -Xms256m -Xmx256m -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$APP_LISTEN $APP_NAME --server.port=$APP_PORT > $APP_LOG 2>&1 &
echo "${APP_NAME} start success"
fi
}
restartService(){
echo "进入重启"
stopService
sleep 5
startService
}
restartService
其中启动的参数在Deploy To Host里面启动脚本命令后面设置下就行
sh 路径/xxx.sh -a jar包名 -b 启动的端口号 -c 远程监听的端口号 -d 日志输出路径