我有一个运行多个应用程序的 PCI DSS 兼容环境,我只想重新启动一个应用程序而不重新启动服务器。我没有经理,因为显然在这种环境中是不允许的。
如何通过命令行重新启动单个 Web 应用程序?
我有一个运行多个应用程序的 PCI DSS 兼容环境,我只想重新启动一个应用程序而不重新启动服务器。我没有经理,因为显然在这种环境中是不允许的。
如何通过命令行重新启动单个 Web 应用程序?
我知道我迟到了,但是为了从命令行重新加载应用程序,你可以做的一个小技巧是转到应用程序的 web.xml 并简单地触摸它。
cd webapps/<webapp-name>/WEB-INF/
touch web.xml
tomcat 每次注意到这个文件发生变化时都会重新加载应用程序,如果你只是触摸它,你实际上并没有修改文件,只是时间戳。
这是我的做法:
${TOMCAT}/conf/tomcat-users.xml
:<user username="admin" password="secret" roles="manager-gui,manager-script"/>
否则,由于跨站点请求伪造 (CSRF) 保护,您将收到 403 错误。
使用curl
或您喜欢的任何命令行工具来获取 URl <yourserver>/manager/text/reload?path=/<context_path>
:
curl --user user:secret http://localhost:8080/manager/text/reload?path=/mypath
如果无法访问管理器应用程序,您将无法执行此操作。如果您可以访问管理器应用程序,并且仍想使用命令行而不是 Web 浏览器,则可以尝试使用名为 tomcat-manager的命令行脚本来管理 tomcat 。它需要 Python,但允许您从 Unix shell 执行以下操作:
$ tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager/ reload /myapp
和:
$ tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war
不幸的是,我认为没有办法从命令行执行此操作。相反,我建议查看是否有办法在单独的 Tomcat 实例中托管您需要重新启动的单个应用程序,这样您就可以重新启动该实例而不影响其他应用程序。
作品将 app.war 的名称更改为临时 app.war.bkp(备份的任何名称),然后当 tomcat 删除 webapp 的源文件夹时,将 .bkp 的名称更改为原始名称。这仅适用于控制台访问用户。