从命令行停止一个Web应用程序Tomcat

22

我正在编写一个Bash脚本,用于自动部署应用到Tomcat服务器。如何从Bash/命令行停止应用程序?


你想本地还是远程停止Tomcat? - Christopher Schultz
我只想在本地停止它。 - Michael Küller
6个回答

13

另一种方法是使用CURL。在我的情况下,我使用的是没有WGET的公司Windows机器。不过我有CURL,并可以通过GIT BASH终端使用它。

要列出正在Tomcat上运行的应用程序,我运行以下命令(带有user:password)

curl --user admin:admin http://localhost:8080/manager/text/list

然后停止名为 "myapp" 的应用程序

curl --user admin:admin http://localhost:8080/manager/text/stop?path=/myapp

如果您有并行部署,并且在路径中使用了井号符号(#),请记得将其URL编码为%23。 - Erica Kane

12

试用这个叫做 tomcat-manager 的命令行脚本来管理Tomcat。它需要Python,但允许你从Unix shell中执行一些操作,例如:

$ tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager/ stop /myapp

并且:

$ tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war

它通过HTTP与Tomcat通信,因此它在“本地”即通过localhost或从可以访问您的Tomcat实例的任何地方工作。


12

我知道的最简单的方法是安装Tomcat管理Web应用程序,注意停止应用程序的URL,并使用wget下载该URL。


这是正确的答案:如果您想停止一个单独的 Web 应用程序,那么您将必须使用 Tomcat 的内部 API 来执行此操作或使用 JMX。Manager Web 应用程序已经为您设置好了一切所需,并且很容易为 Manager Web 应用程序配置安全性。 - Christopher Schultz
1
我的停止URL应该包含“org.apache.catalina.filters.CSRF_NONCE”令牌。这会使这种方法变得复杂。 - Soid
Kotfu的回答更详细。 - Haroldo_OK

9

我使用 wget 停止和启动应用程序。 tomcat-user.xml 中的用户必须具有 manager-script 角色。

对于 TOMCAT 5/6:

wget "http://<user>:<password>@<servername>:<port>/manager/stop?=/<application context>" -O - -q
wget "http://<user>:<password>@<servername>:<port>/manager/start?=/<application context>" -O - -q

自从 TOMCAT 7 版本(我的安装版本是 7.0.62)开始,您需要在 manager: 后面添加 /text/ 。
wget "http://<user>:<password>@<servername>:<port>/manager/text/stop?path=/<application context>" -O - -q
wget "http://<user>:<password>@<servername>:<port>/manager/text/start?path=/<application context>" -O - -q

3

有三种方法可以停止tomcat应用程序:

  1. 如果拥有本地访问权限,您当然可以停止进程。这将完全停止tomcat。
  2. 如果具有本地和远程访问权限,则可以访问server.xml中定义的“关闭端口”(默认值为8005)以及它的密码。如果您打开一个套接字并发送密码,则tomcat将完全关闭。
  3. 您可以遵循sam的建议,让您具有选择性。

完全停止Tomcat不是我的目标。我希望能够选择性地停止,因为我不想停止任何其他正在并行运行的应用程序。 - Michael Küller
那么Sam的建议是正确的。请注意,应用服务器在未卸载/重部署的情况下很容易泄漏内存... - MJB

0
在某些情况下,实用的方法可能是简单地删除或重命名相应的WAR文件,以便Tomcat卸载应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接