【发布时间】:2017-07-07 15:43:10
【问题描述】:
我正在尝试将我的(内部)测试服务器配置为运行 2 个 tomcat 应用程序(实际上是同一个并排的 2 个版本)。我们使用 Apache2.4 和 mod_jk & Tomcat8。目前我正在尝试向下工作,因此我尝试的第一步是让当前(嵌入式)tomcat 应用程序继续在端口 80 上正常运行,并且最初无法在端口 81 上运行不存在的应用程序。
所以目前它适用于一个应用程序
http://LOCALSERVERNAME
我的更改使其在(相同的应用程序)上运行
1) http://LOCALSERVERNAME
和
2) http://LOCALSERVERNAME:81
但我希望它继续为 1 工作并为 2 运行不同的应用程序。
所以我修改了 httpd.conf 以监听两个端口
Listen 80
Listen 81
使用现有的 jkMount 设置此
JkMount /* worker1
JkMount /localhost:80 worker1
JkMount /localhost:80/* worker1
JkMount /127.0.0.1:80 worker1
JkMount /127.0.0.1:80/* worker1
在两个端口(而不是其他端口)上打开 tomcat 应用程序,以便侦听器指令正常工作。我认为这只是使用 JkMount /* worker1。
我在此期间修改了它,将其注释掉并尝试以下两个选项(分别)
#JkMount /* worker1
#JkMount /*:80/* worker1
JkMount /194.66.181.17:80/* worker1
我已将 servername 条目设置为本地服务器名称
ServerName LOCALSERVERNAME
尽管 apache 服务器上没有密码保护,但这给了我一个需要身份验证的登录弹出窗口和 401 错误。我假设这是配置中的错误。
我已经修改了我继承的 worker.properties 并且在浏览解决方案时我想我可能误解了它的目的。它使用了一个平衡器(具有与上述相同的问题),我对其进行了修改,认为我将使用它来为具有不同端口(8009 和 8011)的 tomcat 应用程序提供数据。我看到有人说 worker.properties 文件实际上只是用作负载均衡器,所以也许这是一个错误?
worker.list=worker1, worker2
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker2.port=8011
worker.worker2.host=localhost
worker.worker2.type=ajp13
我的 httpd-vhosts.conf 文件看起来像这样,尽管我在第二个条目中尝试了很多东西,但我认为它们从未被拾取 - 我认为我最接近工作的是当两者端口 80 和 81 已运行到(相同的)现有应用程序,并且可能刚刚使用了第一个条目。
<VirtualHost [IP-address]:80 localhost:80>
servername LOCALSERVERNAME
DocumentRoot "E:/Production/Apache/htdocs"
<Directory "E:/Production/Apache/htdocs">
Options +FollowSymLinks
AllowOverride All
</Directory>
JkOptions +ForwardURICompatUnparsed
ProxyRequests off
JkMount /* worker1
</VirtualHost>
<VirtualHost [IP-address]:81>
servername LOCALSERVERNAME
DocumentRoot "E:/Production/Apache/dummy"
</VirtualHost>
所以...我的问题是我可以在本地域服务器上使用 apache 来使用 mod_jk 运行 2 个嵌入式 tomcat 应用程序吗?如果是这样,谁能指出我的配置哪里出错了?我假设我在某个地方走错了方向,而不是需要稍作调整?
【问题讨论】: