我们在其中一台服务器上运行构建,我们将战争单独复制到5台远程服务器,然后ssh到这些盒子并手动部署战争。我正在寻找一种可以通过运行shell脚本来部署所有5个war文件的方法吗?
scp 123.war xyzserver:~/.
ssh xyzserver -t “
sudo su
sudo /etc/init.d/tomcat7 stop
rm -fr /usr/share/tomcat7/webapps/123*
cp ./xyz.war /usr/share/tomcat7/webapps/
sudo /etc/init.d/tomcat7 start”
exit
这样的事情有用吗?我不确定cp是否会等到tomcat停止?有更好的方法吗?
答案 0 :(得分:2)
在服务器上,您可以在sudo cron上运行一个进程,该进程将监视war文件的目录并执行命令以停止Tomcat,取消部署,部署和启动Tomcat。然后你可以将scp脚本编写为"观看"文件夹中。
在服务器上创建一个bash脚本来检查文件:
if [ "$(ls -A ${WATCHED_DIR})" ]; then
/etc/init.d/tomcat7 stop
rm -fr /usr/share/tomcat7/webapps/${WEBAPP_NAME}
mv ${WATCHED_DIR}/${WEBAPP_NAME}.war /usr/share/tomcat7/webapps/
chown -R tomcat:tomcat /usr/share/tomcat7/webapps/${WEBAPP_NAME}
/etc/init.d/tomcat7 start
fi
将其添加到sudo crontab,以便它以root身份运行
在客户端(生成war文件的位置),创建一个只将文件复制到服务器上该目录的脚本
scp ${WEBAPP_NAME}.war server1:${WATCHED_DIR}
scp ${WEBAPP_NAME}.war server2:${WATCHED_DIR}
scp ${WEBAPP_NAME}.war server3:${WATCHED_DIR}
scp ${WEBAPP_NAME}.war server4:${WATCHED_DIR}
scp ${WEBAPP_NAME}.war server5:${WATCHED_DIR}