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

时间:2010-10-12 12:55:12

标签: tomcat tomcat7

我在部署应用程序时遇到了一些问题。

环境: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 个答案:

答案 0 :(得分:18)

我能够复制你的问题。

在修补appBasedocBase的组合后,我可以建议2种解决方法。看起来两者不能一起运作。

选项1 - 删除appBase

appBase移除server.xml,并在docBase

中的$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml中指定网络应用的完整路径

我假设您的值为/home/krasilich/java/siloc/web/siloc

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

选项2 - 删除docBase

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

删除docBase并仅保留<Context/>

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

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

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

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

  

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

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