环境准备
docker安装应用程序环境(ubuntu)
打开docker,选择刚下载的ubuntu映像(双击安装),安装时最重要的一点「端口映射」 需要开放出启动应用端口的映射信息(用于外部访问),我的端口映射如下(docker容器中的应用端口80**,映射到本地的端口1****):
jenkins服务器与应用服务器之间进行免密登陆
- 缘由:由于jenkins服务器部署了jenkins,如果jenkins和应用程序部署在同一机器上,会导致应用程序资源不足,因此将jenkins和应用程序分不同机器部署
- 原理:jenkins服务器从git上拉取代码之后使用maven插件打包,然后将包上传scp到应用程序服务器,jenkins先ssh连接应用程序服务器,然后scp进行拷贝;所以jenkins服务器需要安装ssh(apt install openssh-server)
- 实践:
- 先登录到jenkins服务器,生成jenkins服务器的密钥,命令(ssh-keygen –t rsa)三连回车直接生成即可,默认放在/root/.ssh目录下,cd到/root/.ssh目录下,cat id_rsa.pub >> authorized_keys
- 登录到应用程序服务器,创建.ssh目录(mkdir /root/.ssh),增加权限(chmod +700 .ssh),将jenkins服务器中生成的id_rsa.pub拷贝到应用服务器(scp root@jenkins服务器ip:/root/.ssh/id_rsa.pub .),拷贝过来之后,执行命令:cat id_rsa.pub >> authorized_keys
- 免密登陆设置结束
编辑启动脚本
set -e #任何命令出错就退出
set -o pipefail
APP_ID=youjia
APP_DIR="/data/app"
for element in `ls ${APP_DIR}/${APP_ID}/application`
do
nohup java -jar ${APP_DIR}/${APP_ID}/application/${element} < /dev/null
>> ${element}_release_out.log 2>&1 &
start_ok=false
if [[ $? = 0 ]];then
sleep 3
tail -n 10 ${element}_release_out.log
sleep 5
tail -n 50 ${element}_release_out.log
fi
aaa= ‘grep "Started" release_out.log | awk '{print $1}'’
if [[ -n "${aaa}"]];then
echo "Application started ok"
continue
else
echo "Application started error"
exit 1
fi
done
echo "启动成功"