【问题标题】:How do I run Apache (httpd) and Tomcat together?如何同时运行 Apache (httpd) 和 Tomcat?
【发布时间】:2011-03-30 17:57:34
【问题描述】:

我最近有一些在 Struts 上运行的项目,我期待更多的 JSP 出现。

在谷歌上搜索了这个问题后,我被引导到试图做同样事情的人的博客。这些博客并不完全是他们如何做的一步一步的过程,但更像是一个参考,以防他们 将来需要做同样的事情。在某些情况下,作者并没有确切说明他是否 他成功地尝试同时运行上述两项服务。

不幸的是,我无法遵循他们的“指示”,因为我有很多 PHP 项目 配置(上传目录,类路径等...)在我的测试服务器上运行,我没有时间重新配置它们 以防我弄乱了 httpd 服务器。老实说,出于对更新配置文件犹豫不决的同样原因,我没有尝试过将它们一起运行。

我不确定这是否会增加复杂性,但出于可移植性目的,我正在通过 xampp(tomcat 是 xampp 插件)运行这两个服务。

我知道,只要我在 JSP 上工作,我就可以停止我的 Apache 服务,但是嘿这个 是尝试新事物的机会,我不能让它溜走。此外,它真的会 方便这两种服务在启动时自动运行,这确实会增加 我的工作效率,因为我不必在需要时手动切换服务。

希望 SO 上有人骑着同一条船。

编辑: Tomcat 版本为 6.0.20 Httpd 版本为 2.2.14

【问题讨论】:

  • 这是很常见的事情,我有点惊讶你很难找到说明。我希望我记得我自己做的时候遵循了哪些说明。
  • 啊,是的,我相信有很多讨论正在进行,但公司的互联网政策阻止了留言板。感谢上帝,SO 不被视为公共论坛,呵呵

标签: web-services apache server-configuration


【解决方案1】:
  • 让 Tomcat 监听 80 以外的端口
  • 按照指南设置 mod_proxy 以将特定位置的请求重定向到 Tomcat,例如 this one

如果您真的只是在测试,请跳过第二步,通过 Tomcat 的不同端口访问服务器。

编辑:另请参阅 http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html 关于设置 mod_proxy_ajp。

【讨论】:

  • 建议标记STEP 1STEP 2 (optional)。并解释说,在另一种选择中,站点看起来是统一的(步骤 1 和 2)。而另一个碎片化(步骤1),在浏览器地址栏中具有不同的端口号。 (当然,假设这一切都是正确的;到目前为止,这就像我的第四个猜测。)
【解决方案2】:

您忽略了提及您使用的是哪个版本的 Tomcat,并且您也没有提及您是否真的查看了 Tomcat 文档来回答这个问题。

我建议从这里开始:http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html 并研究设置 mod_jk。

【讨论】:

  • 请注意,mod_jk(2?) 方法被广泛认为在带有 mod_proxy_ajp 的现代 Apache 版本中已弃用。
  • 它的 Apache 2.2.14 for httpd 和 Tomcat 6.0.20 :) 也修改了这个问题以防万一
  • mod_jk2 很久以前就被删除了。我提供的文档链接是 tomcat 网站上最新的文档……它是 mod_jk1.2.30(今年 2 月发布)……几乎不推荐使用,并且适用于所有版本的 Apache。
【解决方案3】:

如果您想使用apache/ httpd 来处理来自 PHP 以及运行在不同端口上的任何其他服务器的请求,比如说端口 8080 上的 tomcat,您可以使用 apache/httpd 作为 "proxy" 并映射一个将由另一台服务器提供服务的 URL。这是使用 ProxyPass ProxyPassReverse 配置完成的。

例如: 如果您希望http://localhost/php 由 PHP 提供服务,http://localhost/tomcat 由 tomcat 提供服务,那么您必须在 httpd.config/apache.config [apache2.config 取决于您使用的 apache 版本]中进行以下更改:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# Uncomment these to proxy FTP or HTTPS
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so

<VirtualHost *:80>
# Your domain name
# ServerName Domain_NAME_HERE

ProxyPreserveHost On

ProxyPass /tomcat http://localhost:8080/
ProxyPassReverse /tomcat http://localhost:8080/

# The location of the HTML files, and access control information
DocumentRoot /var/www
<Directory /var/www>
    Options -Indexes
    Order allow,deny
    Allow from all
</Directory>

</VirtualHost>

如果您在centos 上运行httpd 并且您可能会收到错误Apache Mod_proxy '[Error] (13)Permission Denied',请按照this 链接执行以下命令:

 /usr/sbin/setsebool -P httpd_can_network_connect 1

我建议您阅读mod_proxy

参考:Redhat mod_proxy configuration

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2015-02-06
    • 2014-05-07
    • 2011-05-06
    • 2011-04-13
    相关资源
    最近更新 更多