核心目标:配置 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.xml的allow配置是否包含客户端 IP; - 确认
manager应用已正确部署(访问http://IP:PORT/manager/html验证)。
部署失败(文件不存在):
- 检查
./oa.war路径是否正确,或替换为绝对路径(如/opt/oa.war)。