在 Tomcat 的自定义主机上部署应用程序
我在部署应用程序时遇到一些问题。
环境: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
这就是关于自定义主机的全部内容。
我也尝试通过本地主机上的管理器部署应用程序,它也可以工作,我可以在本地主机上看到我的“Hello Word”:8080/siloc/
但是,如果我更改 index.jsp 中的文本,它不会影响前端。 “重新部署”按钮对我没有帮助。
正如我提到的,管理器只需将应用程序文件复制到 webapps 目录,并且不要对配置文件进行任何更改。
我所需要的只是可以将应用程序部署在我的文件系统中的任何目录中(实际上它将是 /home/krasilich/java/ )。
如果我可以在 java.dev 这样的自定义主机上执行此操作,那就太好了 我需要答案,为什么 $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
中的上下文对我不起作用,我该怎么做才能使其保持一致?
谢谢。
I got some issues to deploy my application.
Environment: Ubuntu 10.04, Tomcat 7.02 (Install from archive from tomcat site, not from repositories), server is run and stoped manualy, not using any IDE.
For the first I've created host in $CATALINA_HOME/conf/server.xml
:
<Host name="java.dev"
appBase="/home/krasilich/java/"
autoDeploy="true" >
<Alias>www.java.dev</Alias>
</Host>
Then create a context in $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
:
<Context docBase="siloc/web/" />
And got the error
A docBase /home/krasilich/java/siloc/web/ inside the host appBase has been specified, and will be ignored
But, if I copy manager.xml to $CATALINA_HOME/conf/Catalina/java.dev/
I can run manager app.
If I deploy my application through manager - it says that everything is going well, but I still see the 404 on java.dev:8080/siloc/
That's all about custom host.
I've tried to deploy application through manager on localhost also and it works, I can see my "Hello Word" on localhost:8080/siloc/
But, if I change the text in my index.jsp it'll not affected on frontend. The "Redeploy" button isn't help for me.
As I mentioned manager just copy application files to webapps directory, and don't make any changes in config files.
All I need that I can deploy application in any directory in my filesystem (actually it will be /home/krasilich/java/
).
And it would be great if I can do this on custom host like java.dev
I need the answer, why the context in $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
isn't working for me, and what shall I do to make it consistent?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经能够复制你的问题。
在修改
appBase
和docBase
的组合后,我可以建议两种解决方法。看来两者并没有一起运作。选项 1 - 删除 appBase
从
server.xml
中删除appBase
,并在$ 的
docBase
中指定 Web 应用程序的完整路径CATALINA_HOME/conf/Catalina/java.dev/siloc.xml我假设您的值将是
/home/krasilich/java/siloc/web/siloc
。注意:仅指定父文件夹
/home/krasilich/java/siloc/web/
将显示父文件夹的目录列表docBase
选项 2 - 删除
$CATALINA_HOME/conf 中的 /Catalina/java.dev/siloc.xml
删除
docBase
并仅保留Tomcat 推断 Web 应用程序名称
siloc< /code> 来自
$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
,它会在 appBase 中查找名为siloc
的 Web 应用程序。这允许 java.dev:8080/siloc/ 工作,前提是您还将
server.xml
中的appBase
更改为 web 应用siloc
的父文件夹>。为了回应
manager
工作的原因,同样的原因 - manager.xml 中没有 docBase我正在尝试 docBase 的其他组合,但我给出的任何值都会抛出
所以我的结论是删除 docBase。这不是一个好主意 - 因为父文件夹的完整路径随后被硬编码在 server.xml 中。
I have been able to replicate your problem.
There are 2 workaround I can suggest after tinkering around with combinations of
appBase
anddocBase
. Looks like the two do not operate together.Option 1 - remove appBase
Remove the
appBase
fromserver.xml
and specify the full path to the web app indocBase
in the$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
I assume your value will be
/home/krasilich/java/siloc/web/siloc
.Note: specifying only up to the parent folder
/home/krasilich/java/siloc/web/
will show you a directory listing of the parent folderOption 2 - Remove docBase
In
$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
remove the
docBase
and keep only<Context/>
Tomcat infers the webapp name
siloc
from the$CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
and it looks for the webapp namedsiloc
in the appBase.This allows java.dev:8080/siloc/ to work provided you also change the
appBase
inserver.xml
to the parent folder of your webappsiloc
.In response to why
manager
works, same reason - there is no docBase in the manager.xmlI am trying other combinations of docBase but any value I give throws the
So my conclusion is to remove the docBase. This is not a good idea - since the full path to parent folder is then hardcoded in server.xml.