Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过shell在远程服务器上同时在Tomcat上部署多个war文件?_Java_Linux_Shell_Tomcat7 - Fatal编程技术网

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

Java 如何通过shell在远程服务器上同时在Tomcat上部署多个war文件?,java,linux,shell,tomcat7,Java,Linux,Shell,Tomcat7,我们在其中一台服务器上运行构建,我们将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/s

我们在其中一台服务器上运行构建,我们将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脚本编写到“监视”文件夹中

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

---你能详细解释一下吗??我没有让你在每台服务器上创建一个bash/shell脚本,检查服务器上的文件夹中是否有war文件,如果有,将停止tomcat,删除当前的webapp,将新的war文件移动到webapp文件夹,然后启动tomcat。将其添加到sudo crontab中,以便随时以root用户身份运行。然后在客户端,制作一个单独的shell脚本,运行scp命令,将新的war推送到sudo的crontab.Wow.下运行的服务器端脚本监视的文件夹下的每个服务器。这似乎是一个很好的解决方案。谢谢@Brian Harman。让我试试这个