首页 文章

在Tomcat的自定义主机上部署应用程序

提问于
浏览
11

部署我的应用程序时遇到了一些问题 .

环境:Ubuntu 10.04,Tomcat 7.02(从tomcat站点的存档安装,而不是从存储库安装),服务器运行并且手动停止,不使用任何IDE .

我在 $CATALINA_HOME/conf/server.xml 创建了第一个主机:

<Host name="java.dev"  
      appBase="/home/krasilich/java/"  
      autoDeploy="true" >  
    <Alias>www.java.dev</Alias>  
</Host>

然后在 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml 中创建一个上下文:

<Context docBase="siloc/web/" />

并得到了错误

已指定主机appBase中的docBase / home / krasilich / java / siloc / web /,将被忽略

但是,如果我将manager.xml复制到 $CATALINA_HOME/conf/Catalina/java.dev/ ,我可以运行管理器应用程序 . 如果我通过管理器部署我的应用程序 - 它说一切进展顺利,但我仍然在java.dev:8080/siloc/上看到404

这都是关于自定义主机的 .

我已经尝试通过localhost上的管理器部署应用程序也可以工作,我可以在localhost上看到我的“Hello Word”:8080 / siloc /

但是,如果我更改index.jsp中的文本,它将不会影响前端 . “重新部署”按钮对我没用 .

正如我提到的经理只是将应用程序文件复制到webapps目录,并且不要对配置文件进行任何更改 .

我只需要在文件系统的任何目录中部署应用程序(实际上它将是 /home/krasilich/java/ ) .

如果我能在像java.dev这样的自定义主机上执行此操作会很棒我需要答案,为什么 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml 中的上下文对我不起作用,我该怎么做才能使它保持一致?

谢谢 .

1 回答

  • 18

    我能够复制你的问题 .

    在修补了 appBasedocBase 的组合后,我可以建议2种解决方法 . 看起来这两个不能一起操作 .

    选项1 - 删除appBase

    server.xml 中删除 appBase 并在 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml 中的 docBase 中指定Web应用程序的完整路径

    我假设你的 Value 是 /home/krasilich/java/siloc/web/siloc .

    注意:仅指定父文件夹 /home/krasilich/java/siloc/web/ 将显示父文件夹的目录列表

    选项2 - 删除docBase

    $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml

    删除 docBase 并仅保留 <Context/>

    Tomcat从 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml 推断出webapp名称 siloc ,它在appBase中查找名为 siloc 的webapp .

    这允许java.dev:8080/siloc/工作,前提是您还将 server.xml 中的 appBase 更改为webapp的父文件夹 siloc .

    为了回应 manager 工作的原因,同样的原因 - manager.xml中没有docBase

    我正在尝试docBase的其他组合,但我给出的任何值都会抛出

    警告:已指定主机appBase中的docBase ...,将被忽略

    所以我的结论是删除docBase . 这不是一个好主意 - 因为父文件夹的完整路径然后在server.xml中进行了硬编码 .

相关问题