【问题标题】:tomcat deploy only manager on startupTomcat 在启动时只部署管理器
【发布时间】:2014-11-12 10:11:53
【问题描述】:

我有一个奇怪的问题。 我公司的安全部门希望每个 tomcat 都遵守以下配置参数:

autoDeploy="false"
deployOnStartup="false"

当我配置上述参数时,将不会在启动时部署任何 Web 应用程序(包括管理器应用程序),并且我无法通过管理器应用程序部署应用程序...

我可以在 server.xml 或类似的东西中定义管理器应用程序的部署吗?我只想在启动时部署管理器应用。

编辑: 这是我的 ${CATALINA_HOME}/conf/server.xml

...
<Service name="Catalina">
...

<Engine name="Catalina" defaultHost="localhost">
...
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false"
            deployOnStartup="false"
            xmlValidation="false" xmlNamespaceAware="false"
            deployXml="false">
...

这是我的 ${CATALINA_HOME}/webapps/manager/META-INF/context.xml

<Context path="/manager"
        docBase="/usr/share/tomcat6/webapps/manager"
        debug="0"
        privileged="true"
        autoDeploy="true"
        deployOnStartup="true">

    <ResourceLink name="users"
                global="UserDatabase"
                type="org.apache.catalina.UserDatabase"/>

    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                allow="127.0.0.1"/>

</Context>

问候

格茨

【问题讨论】:

    标签: tomcat startup manager-app


    【解决方案1】:

    来自 Apache 6 文档: https://tomcat.apache.org/tomcat-6.0-doc/config/context.htmlContext 的 Attributes 部分,path 属性的文档指定:

    该属性只能在 server.xml 中静态定义上下文时使用。在所有其他情况下,将根据用于 .xml 上下文文件或 docBase 的文件名推断路径。

    即使在 server.xml 中静态定义 Context 时,也不得设置此属性除非 docBase 不在 Host 的 appBase 下或 deployOnStartup 和 autoDeploy 均为 false强>。如果不遵守此规则,很可能导致双重部署。

    Tomcat 7 中存在相同的文档,因此我在 Tomcat 7 上尝试了以下操作,并设法仅部署了管理器应用程序。

    <Host appBase="webapps"  autoDeploy="false"  deployOnStartup="false" name="localhost" unpackWARs="true">
            <Context docBase="manager" 
                   path="/manager"  
                   antiResourceLocking="false" privileged="true" 
                   />
    </Host>
    

    基本上,我所做的是复制 webapps/manager/META-INF/context.xml 的内容并将它们粘贴到 元素中server.xml,当然要确保 pathdocBase 属性也存在,如文档指定的那样。在你的情况下,我相信它会是:

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="false"
                deployOnStartup="false"
                xmlValidation="false" xmlNamespaceAware="false"
                deployXml="false">
    
    <Context path="/manager"
            docBase="/usr/share/tomcat6/webapps/manager"
            debug="0"
            privileged="true">
    
        <ResourceLink name="users"
                    global="UserDatabase"
                    type="org.apache.catalina.UserDatabase"/>
    
        <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                    allow="127.0.0.1"/>
    
    </Context>
    
    </Host>
    

    【讨论】:

    • 您好,感谢您的回复。同时我也升级到Tomcat 7,你的解决方案对我有用。 :) 问候 Goetz
    【解决方案2】:

    您可以从这个link 获得帮助,我认为这是您正在寻找的解决方案。

    【讨论】:

    • 抱歉,但这并不能解决我的问题。在链接中 DeployOnStartUp 为“true”,但我希望它为“false”。
    • 您可以使用 deployOnStartup="false" 代替 autoDeploy="true" 参数。
    • 我试过这个。但它并没有像例外那样工作。我在帖子中添加了相应的配置 sn-ps。
    • 使用 docBase="/usr/share/tomcat6/webapps/" 而不是 docBase="/usr/share/tomcat6/webapps/manager",您已经使用 path="/ 定义了管理器路径经理”参数。
    • 我试过了,但没有任何改变。 :( 文件 ${CATALINA_HOME}/conf/Catalina/localhost/manager.xml 和 ${CATALINA_HOME}/webapps/manager/META-INF/context.xml 之间有不同的行为吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 2023-03-27
    • 2013-03-02
    相关资源
    最近更新 更多