如何在没有webapps的情况下设置tomcat虚拟主机?

时间:2012-02-18 16:13:49

标签: tomcat tomcat7 virtualhost

我正在尝试将我的webapp从树脂迁移到Tomcat7。有一点让我感到困惑的是,我不知道如何为一个虚拟主机设置“默认”webapp?

也就是说,我的网站只有一个应用:"/",位于“/home/destiny/www”。里面有许多PHP脚本(由apache提供),里面有一个WEB-INF目录,带有标准的JavaEE应用程序。 My app is not packaged in WAR , it is default expanded

我尝试找到有关如何在tomcat 7中设置虚拟主机的文档,但是所有示例都需要一个'webapps'目录来扩展WAR,但这不是我的情况!

这是我的server.xml设置(tomcat 7.0.23):

<Host name="myhost.com" xmlBase="/home/destiny/www" 
  unpackWARS="false" autoDeploy="true">
  <Context path="/" docBase="." />
</Host>

<!-- default tomcat's host -->
<Host name="localhost"  appBase="webapps"
  unpackWARs="true" autoDeploy="true"> ... </Host>

当我启动tomcat时,我看到我的webapp未加载,只加载了tomcat的webapps(host-manager,manager,examples,docs,ROOT ...)。当我打开我的网站时,它会显示tomcat的默认屏幕(图像已损坏)。

配置无法正常工作......(我尝试过xmlBase,appBase,docBase ......但是都在进行中)

似乎一个解决方案是ROOT目录中名为“/home/destiny/www/webapps/ROOT”的webapp,但我不想要那个解决方案!我想在/ home / destiny / www中使用我的默认Web应用程序。并且不会安装其他Web应用程序(我不需要webapps目录。)

如何解决它(在树脂中很容易实现)?感谢。

3 个答案:

答案 0 :(得分:2)

要指向您自己的目录,请尝试以下操作:

转到tomcat文件夹%path_to_tomcat%/conf/Catalina/localhost 如果需要,您也可以将localhost更改为您的主机,但如果您要做的唯一事情是将您的应用程序设置为'/',那么localhost就可以了。

在先前定义的文件夹中创建名为ROOT.xml的文件。在该文件中添加以下

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/home/destiny/www">
</Context>

另请查看%path_to_tomcat%/ webapps /,如果您不希望默认的tomcat页面在那里,请删除/移动/重命名那里的ROOT文件夹。

有关详细信息,请参阅方法#2 @ this link

答案 1 :(得分:2)

这在Tomcat 7中适用于我:

<Host name="myhost.com" appBase="">
  <Context path="/" docBase="/home/destiny/www"/>
</Host>

这可能不是配置Tomcat的最佳方式,但它可以让webapp快速运行。

答案 2 :(得分:2)

这是一个旧线程,但我想分享我的经验,因为我的搜索结果中出现了这一点。我的问题是升级在使用cPanel和简单的tomcat 7安装的新服务器上包含子目录的文件结构中爆炸的旧JSP应用程序。子目录中的文件无法引用其他目录中包含的文件。基本上Tomcat是为每个子目录创建一个单独的上下文然后我在包含上找到了很多文件未找到的错误。

所以我做了Mark建议的一点改变。设置了我的服务器,每个虚拟主机的Web文档根设置为/ home / domainuser / public_html,默认的tomcat server.xml将appbase和上下文docbase都设置为该目录。

所以最终工作的是“拆分”目录路径并将部分作为appbase,然后将我的上下文的docbase作为public_html目录。请参阅下面的示例。

    <Host name="domain.com" appBase="/home/domainuser/" unpackWARs="false" deployXML="false">
      <Alias>www.domain.com</Alias>
      <Context path="" reloadable="true" docBase="public_html" debug="1"/>
   </Host>