如何在远程服务器上一次通过shell在Tomcat上部署多个war文件?

时间:2015-12-10 17:21:06

标签: java linux shell tomcat7

我们在其中一台服务器上运行构建,我们将战争单独复制到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停止?有更好的方法吗?

1 个答案:

答案 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}