如何一起运行Apache(httpd)和Tomcat?

时间:2010-08-17 01:42:04

标签: web-services apache server-configuration

我最近获得了在Struts上运行的项目,我期待更多的JSP即将推出。

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

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

我不确定这是否会增加复杂性,但我通过xampp运行这两项服务(tomcat是一个xampp附加组件),以便于移植。

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

希望SO上有人乘坐同一条船。

  

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

3 个答案:

答案 0 :(得分:8)

  • 让Tomcat在80以外的端口上侦听
  • 按照指南设置mod_proxy,将某个位置的请求重定向到Tomcat,例如this one

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

修改:有关设置mod_proxy_ajp的信息,请参阅http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html

答案 1 :(得分:1)

你忽略了提到你正在使用的Tomcat版本,你也没有提到你是否真的看过Tomcat文档来回答这个问题。

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

答案 2 :(得分:0)

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

例如: 如果你希望PHP服务http://localhost/php而tomcat服务http://localhost/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>

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

 /usr/sbin/setsebool -P httpd_can_network_connect 1

我建议你阅读mod_proxy

参考:Redhat mod_proxy configuration