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

How do I deploy multiple war files on Tomcat through shell on remote servers at a time?

我们在其中一台服务器上构建了 运行,我们将 war 分别复制到 5 个远程服务器,然后通过 ssh 连接到这些机器并手动部署 war。我正在寻找一种方法,我们可以通过 运行 一个 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 停止?有更好的方法吗?

在服务器上,您可以 运行 sudo cron 上的进程监视 war 文件的目录并执行停止 Tomcat、取消部署、部署和启动的命令Tomcat。然后你可以将 scp 脚本写入 "watched" 文件夹。

在服务器上创建一个 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}