我正在编写一个 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 相同的规则。相同的命令。
这里是一个完整的文档:
关于Tomcat管理器远程部署脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432684/