Tomcat管理器远程部署脚本

标签 tomcat curl

我正在编写一个 shell 脚本以使用 tomcat 管理器自动部署/取消部署。

按照 http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html#Deploy_A_New_Application_Remotely 上的说明进行操作,我使用 curl 进行部署

curl --anyauth -u username:pwd -d path=/something -d war=file:target/someWar.war https://someurl.com/manager/deploy

我收到回复说此 URL 不支持 HTTP 方法 POST。

所以我将我的 curl 更改为使用 -G

curl --anyauth -u username:pwd -G -d path=/something -d war=file:target/someWar.war https://someurl.com/manager/deploy

我收到 FAIL 响应 - 无法在上下文路径/something 上部署应用程序,它似乎在本地服务器而不是我的机器上查找文件。有些插件无需对文件进行 scp 即可进行远程部署,所以我想知道我遗漏了什么。

我目前没有想法(我在 tomcat 管理器配置页面上没有看到任何其他选项)。

最佳答案

提供对此问题的更新。

Tomcat 7 已更改其管理器 API。

请引用: Manager commands

遵循新的 URL 模式:

http://{host}:{port}/manager/text/{command}?{parameters}

示例

curl -T "myapp.war" "http://manager:manager@localhost:8080/manager/text/deploy?path=/myapp&update=true"

安全

请记住,服务器必须能够接受您的远程 IP。这是一个示例配置:

<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.0\.0\.1" />
</Context>

这是一个可选设置,不是必需的,但必须具有跨域角色和适当的管理员凭据。

Tomcat 8 - 适用与 Tomcat 7 相同的规则。相同的命令。

这里是一个完整的文档:

http://tomcat.apache.org/tomcat-8.0-doc/manager-howto.html

关于Tomcat管理器远程部署脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432684/

相关文章:

mysql - Mysql 连接器/J 8.0.17(com.mysql.cj.jdbc.Driver) 和 Tomcat 9 的问题

Tomcat 并行部署命名

bash - 意外的输入结束 : expected close marker for Object error when trying to send a curl post request in a for loop

java - 从一个应用程序调用 session 到另一个应用程序

java - Tomcat 部署错误

php - Localhost URL 在浏览器中有效,但对于 PHP curl_exec 返回 bool(false)

node.js - Express 在浏览器中返回 200,但使用 curl -I 返回 404

bash - 如何使用bash提取没有标签的网页源代码?

spring-mvc - SpringMVC 中的 InternalResourceViewResolver

php - 修复 SSL 证书问题 : unable to get local issuer certificate for real in PHP