使用Curl 命令行部署tomcat的war包

核心目标:配置 Tomcat 管理员权限 → 开放 manager 应用的访问限制 → 用 curl 命令自动化部署 / 卸载 WAR 包。

整体流程梳理:

修改 tomcat-users.xml(配置权限) → 调整 manager 访问限制 → 重启 Tomcat → 执行 curl 命令部署/卸载

1、配置 Tomcat 的权限:

tomcat的tomcat-users.xml增加:

(注意:你提供的示例最后多了一个 闭合标签,实际配置中只需保证标签成对即可)。

<!-- 添加所需角色 -->
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<!-- 添加管理员用户,关联所有角色 -->
<user username="admin" password="RO0HPsaADWxqzaDCm3" roles="admin-gui,manager-gui,manager-status,manager-script,manager-jmx"/>
</tomcat-users>

2、appBase下的manager目录(可以从webapp目录下拷贝过来)

manager/META-INF/context.xml中allow=””改成:

关键说明:allow=”^.*$” 是正则表达式,表示允许所有 IP 地址访问,生产环境建议替换为具体的 IP 段(如 10\.40\.\d+\.\d+),避免安全风险

allow="^.*$"

3、重启tomcat生效

4、curl命令行操作:

这两条 curl 命令分别实现卸载旧的 oa 应用部署新的 oa.war 包,适用于自动化运维场景。

卸载已有的oa应用:

curl -sLk -u admin:RO0HPsaADWxqzaDCm3 "http://10.40.0.2:30003/manager/text/undeploy?path=/oa&update=true"

参数 / 部分含义:

-s静默模式,不输出进度 / 错误信息(仅返回结果)

-L跟随重定向(如果 Tomcat 返回重定向则自动跳转)

-k忽略 SSL 证书验证(如果用 https 访问时需要)

-u admin:RO0HPsaADWxqzaDCm3认证信息:用户名 + 密码(对应 tomcat-users.xml 配置)http://10.40.0.2:30003/manager/text/undeployTomcat manager 的脚本化卸载接口

path=/oa要卸载的应用路径(对应 webapps/oa 目录)

update=true立即更新应用状态,无需等待 Tomcat 自动扫描

部署新的oa.war包:

curl -sLk -u admin:RO0HPsaADWxqzaDCm3 -T ./oa.war "http://10.40.0.2:30003/manager/text/deploy?path=/oa&update=true"

新增参数含义:

-T ./oa.war上传本地的 oa.war 文件(./ 表示当前目录,需确保文件存在)

deployTomcat manager 的脚本化部署接口

5、命令执行效果:

  • 卸载成功返回:OK - Undeployed application at context path [/oa]
  • 部署成功返回:OK - Deployed application at context path [/oa]
  • 失败时会返回错误信息(如权限不足、文件不存在),可去掉 -s 参数查看详细日志

6、常见问题排查:

认证失败(401 Unauthorized)

  • 检查 tomcat-users.xml 中用户名 / 密码是否正确;
  • 确认用户已关联 manager-script 角色;
  • 重启 Tomcat 确保配置生效。

访问被拒绝(403 Forbidden)

  • 检查 manager/META-INF/context.xmlallow 配置是否包含客户端 IP;
  • 确认 manager 应用已正确部署(访问 http://IP:PORT/manager/html 验证)。

部署失败(文件不存在)

  • 检查 ./oa.war 路径是否正确,或替换为绝对路径(如 /opt/oa.war)。

Categories: 系统运维