我已经阅读了 StackOverflow 上的几个问题,并用 google 搜索了几个小时,但对于在一个 tomcat 5.5(使用 Apache)上部署多个 Grails 应用程序的问题,我找不到完整且清晰的答案。也许有人可以把我推向正确的方向,或者我们可以在这里总结一个解决方案。
问题使用 Apache/Tomcat + 虚拟主机部署多个 Grails 应用程序 https://stackoverflow.com/questions/1805812/deploying-multiple-grails-applications-with-apache-tomcat-virtual-hosts看起来很有希望但没有成功。也许我需要在 Tomcat 或 Apache 中进行其他更改?
情况:
In the 网络应用程序目录Tomcat 的我有两个 war 文件 app1.war 和 app2.war,它们由 Tomcat 解压,我可以通过domain1.com/app1 或domain1.com/app2 访问它们(我删除了以前使用的 ROOT.war 和关联的webapps/ROOT/ 目录)
在 server.xml 中Tomcat我有以下主机:
<!-- Logger shared by all Contexts related to this virtual host. -->
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_" suffix=".log"
timestamp="true"/>
<!-- Allow symlinks for the tomcat-docs webapp. This is required in
the Debian packages to make the Servlet/JSP API docs work. -->
<Context path="/tomcat-docs" docBase="tomcat-docs" debug="0">
<Resources className="org.apache.naming.resources.FileDirContext"
allowLinking="true" />
</Context>
</Host>
<Host name="domain1.com" appBase="webapps/app1" unpackWARs="true" autoDeploy="true"></Host>
<Host name="domain2.com" appBase="webapps/app2" unpackWARs="true" autoDeploy="true"></Host>
In Apache我有以下虚拟主机:
服务器名称 app1.com
JkMount /* default
DocumentRoot /var/lib/tomcat5.5/webapps/app1
<directory /var/lib/tomcat5.5/webapps/app1>
Options -Indexes
</directory>
LogLevel warn
ErrorLog /var/www/app1/logs/error.log
CustomLog /var/www/app1/logs/access.log common
问题:
我无法通过domain1.com和domain2.com直接访问这两个应用程序 - 我做错了什么?
提前谢谢了,
Joerg.
我前段时间为此苦苦挣扎,并设法得到了一些可以正常工作的东西。但它不使用 mod_jk,我选择了 mod_proxy。我在 Tomcat 中的设置也略有不同(顺便说一句,我的是版本 6),其中我添加了多个连接器以及您拥有的主机声明。
尝试以下操作 -
在tomcat server.xml中:
<!-- I opted for a shared thread pool so both apps share same resources - optional -->
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="250" minSpareThreads="40"/>
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444"
executor="tomcatThreadPool"
proxyName="www.domain1.com"
proxyPort="80"/>
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8445"
executor="tomcatThreadPool"
proxyName="www.domain2.com"
proxyPort="80"/>
<Host name="www.domain1.com" appBase="vhosts/domain1" unpackWARs="true"
autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Alias>domain1.com</Alias>
</Host>
<Host name="www.domain2.com" appBase="vhosts/domain2" unpackWARs="true"
autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Alias>domain2.com</Alias>
</Host>
在阿帕奇中:
<VirtualHost *:80>
ServerName www.domain1.com
ServerAlias www.domain1.com
ProxyRequests Off
ErrorLog /var/log/apache2/error-domain1.log
<Directory proxy:http://www.domain1.com:80>
Order Allow,Deny
Allow from all
</Directory>
<Proxy www.domain1.com:80>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
ProxyPreserveHost On
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain2.com
ServerAlias www.domain2.com
ProxyRequests Off
ErrorLog /var/log/apache2/error-domain2.log
<Directory proxy:http://www.domain2.com:80>
Order Allow,Deny
Allow from all
</Directory>
<Proxy www.domain2.com:80>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8082/
ProxyPassReverse / http://localhost:8082/
ProxyPreserveHost On
</VirtualHost>
确保您的 Apache 服务器启用了 mod_proxy。不久前我开始工作,所以我确定该配置中是否需要所有内容 - 一旦我开始工作,我往往会忘记一些东西:)
希望有帮助,
克里斯。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)