I have a requirement as to have a single server with both a Java application and a PHP application, running on the same Apache. Is this possible?
This question may be very silly but I have no clue about java requirements or installation procedures.
Can I do such a thing that as to have the java application running on one port and the PHP application on another port, both on the same Apache?
Yes you can do that. Essentially you have to run the Apache (+ PHP) server on one port and the Tomcat server on a different port.
You can expose the 2nd port to the outside world, and have your URLs use either port
80
for Apache / PHP or (say)8080
for the Java server. This simple, but you may find that upstream firewalls prevent a remote web browser from connecting to any port other than80
.You can configure your Apache server as a reverse proxy for the Java server. So for instance, the Apache server might recognize that
http://site.com/javaapp/foo.html
is for the Java server, and relay requests for that URL tohttp://localhost:8080/javaapp/foo.html
.There is a whole chapter of the Apache documentation about configuring forward and reverse proxies using mod_proxy.
Yes, you need both apache and tomcat installed, but you can configure apache to redirect (transparently for the user) all JSP requests to tomcat using AJP protocol.
See more here: http://www.datadisk.co.uk/html_docs/java_app/tomcat6/tomcat6_apache_server.htm
This is possible,
I configured one reverse proxy that serves one PHP website (Drupal) and one java website (for business logic) that are stored in the same server using a reverse proxy with 2 locations, the advantage of this configuration is that it doesn't expose the port that Tomcat is using on the URL which was mandatory for me for security reasons.
This is how I achieved this:
Restart Apache:
Test your reverse proxies: PHP/Drupal (In my case i'm using drupal but can be any PHP code):
Java:
I hope someone can find this useful. I had a hard time trying to figure this out. :)
Regards.
Yes.
Apache HTTPd can delegate to Apache Tomcat using ModProxy or ModAJP, and can be configured to do so based on the domain, path or file extension requested. Your Apache HTTPd configuration of PHP would remain the same.
You would need to configure Apache Tomcat to not listen on port 80, and then configure the Apache HTTPd proxying solution of your choice to talk to Tomcat on a different port.
Here's a starting point for more information: Apache + Tomcat: Using mod_proxy instead of AJP