我有一个要求,即在同一个 Apache 上运行具有 Java 应用程序和 PHP 应用程序的单个服务器。这可能吗?
这个问题可能很傻,但我对 Java 要求或安装过程一无所知。
我可以做这样的事情,让 java 应用程序在一个端口上运行,而 PHP 应用程序在另一个端口上运行,两者都在同一个 Apache 上?
是的,你可以这么做。本质上,您必须在一个端口上运行 Apache (+ PHP) 服务器,而在另一个端口上运行 Tomcat 服务器。
您可以向外界公开第二个端口,并让您的 URL 使用80
Apache / PHP 或(例如)8080
Java 服务器的端口。这很简单,但您可能会发现上游防火墙会阻止远程 Web 浏览器连接到80
.
您可以将 Apache 服务器配置为 Java 服务器的反向代理。因此,例如,Apache 服务器可能会识别出这http://site.com/javaapp/foo.html
是针对 Java 服务器的,并将对该 URL 的请求中继到http://localhost:8080/javaapp/foo.html
.
Apache 文档有一整章是关于使用 mod_proxy 配置正向和反向代理的。
是的。
Apache HTTPd 可以使用 ModProxy 或 ModAJP 委托给 Apache Tomcat,并且可以根据请求的域、路径或文件扩展名进行配置。您的 PHP 的 Apache HTTPd 配置将保持不变。
您需要将 Apache Tomcat 配置为不在端口 80 上侦听,然后配置您选择的 Apache HTTPd 代理解决方案以在不同的端口上与 Tomcat 通信。
这是更多信息的起点:Apache + Tomcat:使用 mod_proxy 而不是 AJP
一个单一的 apache 服务器可以同时处理 tomcat 和 php 吗?
是的,您需要同时安装 apache 和 tomcat,但是您可以配置 apache 以使用 AJP 协议将所有 JSP 请求重定向(对用户透明)到 tomcat。
在这里查看更多信息: http ://www.datadisk.co.uk/html_docs/java_app/tomcat6/tomcat6_apache_server.htm
这可以使用 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
我希望有人能发现这很有用。我很难弄清楚这一点。:)
问候。