我正在尝试使用Jenkins部署到容器插件在远程Tomcat(远程计算机)上部署WAR。 我在tomcat-users.xml中完成了以下配置
<user username="deployer" password="deployer" roles="manager-gui,manager-script,admin" />
我在Jenkins deployer容器插件中设置了正确的用户名密码和端口。该设置适用于本地Tomcat。 但对于远程Tomcat,我不断收到以下错误:
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:555)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:686) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:699) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:174)
... 16 more Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://1.203.190.5:8080/manager/text/list at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown
Source) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:544) ... 19 more
请帮助。
答案 0 :(得分:20)
这似乎是一个Jenkins错误,但我通过在Tomcat中设置以下配置解决了这个问题:
编辑文件/webapps/manager/META-INF/context.xml:
一个:
<Context antiResourceLocking="false" privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
更改此文件以评论值:
<Context antiResourceLocking="false" privileged="true">
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
这解决了这个问题。希望这有助于某人:)
答案 1 :(得分:5)
我在使用jenkins通过容器插件向tomcat部署工件时遇到了同样的问题, 解决方案: - 我在用户的角色中添加了manager-script和manager-gui,并提供对webapps / *目录的完全访问权限。它帮助我成功部署工件并能够使用manager-app查看它。
答案 2 :(得分:1)
如果没有任何作用,只需在tomcat-users.xml文件中创建一个分配了magnager-script角色的用户,并将该用户凭据设置为jenkins。
在tomcat-users.xml文件中
<tomcat-users>
<user username="deployuser" password="deployuser" roles="manager-script" />
<user username="admin" password="admin" roles="manager-gui" />
</tomcat-users>
答案 3 :(得分:1)
您只需要在阀门上添加詹金斯IP地址即可。
您需要更新: /webapps/manager/META-INF/context.xml 。因为它只允许本地主机。如果知道特定的主机名或IP,则可以添加该主机名或IP地址,以XXX.XXX.XXX.XXX代替。 保持安全性非常重要。
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|XXX.XXX.XXX.XXX" />
</Context>
之后,您需要重新启动tomcat。
$CATALINA_HOME/bin/shutdown.sh && $CATALINA_HOME/bin/startup.sh
答案 4 :(得分:0)
在Tomcat 9中,您不需要添加任何manager-XXX角色。您要做的就是添加用户并分配manager-gui(用于GUI访问)和manager-script(用于Jenkins部署之类的访问)。 另外,请确保编辑文件 /webapps/manager/META-INF/context.xml ,以注释掉Valve或为 allow 属性定义适当的正则表达式>
答案 5 :(得分:0)
步骤1: 我们需要更新:\ webapps \ manager \ META-INF \ context.xml。 Bcs它只允许本地主机。如果您知道特定的主机名或IP,则可以添加。
<Context antiResourceLocking="false" privileged="true" >
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
第2步:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui, manager-script"/>
部署成功。
答案 6 :(得分:0)
我的操作系统:Debain 10
我通过编辑文件/opt/tomcat/conf/tomcat-users.xml
解决了这个问题,并添加了manager-script
角色
<role rolename="admin-gui,manager-gui,manager-script,manager-jmx,manager-status,admin-gui"/>
<user username="admin" password="password" roles="admin-gui,manager-gui,manager-script"/>