9

我有一个要求,即在同一个 Apache 上运行具有 Java 应用程序和 PHP 应用程序的单个服务器。这可能吗?

这个问题可能很傻,但我对 Java 要求或安装过程一无所知。

我可以做这样的事情,让 java 应用程序在一个端口上运行,而 PHP 应用程序在另一个端口上运行,两者都在同一个 Apache 上?

4

4 回答 4

10

是的,你可以这么做。本质上,您必须在一个端口上运行 Apache (+ PHP) 服务器,而在另一个端口上运行 Tomcat 服务器。

  • 您可以向外界公开第二个端口,并让您的 URL 使用80Apache / PHP 或(例如)8080Java 服务器的端口。这很简单,但您可能会发现上游防火墙会阻止远程 Web 浏览器连接到80.

  • 您可以将 Apache 服务器配置为 Java 服务器的反向代理。因此,例如,Apache 服务器可能会识别出这http://site.com/javaapp/foo.html是针对 Java 服务器的,并将对该 URL 的请求中继到http://localhost:8080/javaapp/foo.html.

Apache 文档有一整章是关于使用 mod_proxy 配置正向和反向代理的。

于 2012-07-06T14:38:20.400 回答
3

是的。

Apache HTTPd 可以使用 ModProxy 或 ModAJP 委托给 Apache Tomcat,并且可以根据请求的域、路径或文件扩展名进行配置。您的 PHP 的 Apache HTTPd 配置将保持不变。

您需要将 Apache Tomcat 配置为不在端口 80 上侦听,然后配置您选择的 Apache HTTPd 代理解决方案以在不同的端口上与 Tomcat 通信。

这是更多信息的起点:Apache + Tomcat:使用 mod_proxy 而不是 AJP

于 2012-07-06T14:34:48.307 回答
3

一个单一的 apache 服务器可以同时处理 tomcat 和 php 吗?

是的,您需要同时安装 apache 和 tomcat,但是您可以配置 apache 以使用 AJP 协议将所有 JSP 请求重定向(对用户透明)到 tomcat。

在这里查看更多信息: http ://www.datadisk.co.uk/html_docs/java_app/tomcat6/tomcat6_apache_server.htm

于 2012-07-06T14:35:52.127 回答
2

这可以使用 Apache 反向代理,

我配置了一个 Apache 虚拟主机,它服务于一个 PHP 网站(Drupal)和一个 java(tomcat,用于业务逻辑),它们使用具有 2 个位置的反向代理存储在同一服务器中,这种配置的优点是它不会公开 Tomcat 在 URL 上使用的端口,出于安全原因,这对我来说是强制性的。

这就是我实现这一目标的方式:

<VirtualHost *:80>
ProxyPreserveHost       On
DocumentRoot            "/srv/www/htdocs/"
ErrorLog                /var/log/httpd/app_error_log.log
CustomLog               /var/log/httpd/app_log.log combined
ServerName              myapp.com

#Drupal PHP Content, stored at / as the main front end website.
<Location />
    ProxyPass http://localhost/
    ProxyPassReverse http://localhost
    Order allow,deny
    Allow from all
</Location>

#Tomcat/java content, secondary site used to process payments and business logic:
<Location /javaApp>
    ProxyPass http://localhost:8080/javaApp/
    ProxyPassReverse http://localhost:8080/javaApp/
    Order allow,deny
    Allow from all
</Location>

</VirtualHost>

重启阿帕奇:

service httpd restart;

测试您的反向代理:PHP/Drupal(在我的情况下,我使用的是 drupal,但可以是任何 PHP 代码):

http://yourserverip/ or http://localhost/

爪哇:

http://yourserverip/javaApp or http://localhost/javaApp

我希望有人能发现这很有用。我很难弄清楚这一点。:)

问候。

于 2019-06-14T21:49:07.193 回答