How to run PHP and Tomcat on same server environme

2019-05-07 09:07发布

Asked this on AskUbuntu a while ago: https://askubuntu.com/questions/630897/apache-httpd-backed-by-both-tomcat-and-php but no answers there so I decided to ask here.

Once again - let's say I have server accessible by some domain name e.g. http://mywebapp.com/

I would like to setup the following on that server:

  • all requests like http://mywebapp.com/blog* are handled by PHP server (Wordpress blog engine to be specific)
  • all other requests http://mywebapp.com/* are handled by Apache Tomcat

I thought that this could be achievable by putting Apache HTTPD server in front of both Tomcat and PHP servers but couldn't find configurations to achieve this.

Could someone please provide any hint on how to achieve this?

1条回答
Evening l夕情丶
2楼-- · 2019-05-07 09:55

You can do that with mod_jk:

1) Enable module "mod_jk" in your Apache web servers httpd.conf. Uncomment this line, by removing the leading hash:

LoadModule jk_module modules/mod_jk.so

If you are on Linux type:

sudo apt-get install libapache2-mod-jk
sudo a2enmod jk

2) Edit [TOMCAT_DIR]/conf/server.xml. Add a "jvmRoute" attribute to the "engine" element:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat">

Uncomment the AJP connector (the http connector may be disabled):

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

3) Create a file "workers.properties", next to "httpd.conf". Add this content and set right ip/port:

worker.list=tomcat

worker.tomcat.type=ajp13
worker.tomcat.host=127.0.0.1
#This is the port from the AJP connector, not HTTP!
worker.tomcat.port=8009
worker.tomcat.lbfactor=10

4) Add this mapping at the end of httpd.conf and replace [PATH_TO_DIR] by the absolute path:

<IfModule jk_module>

  JkWorkersFile [PATH_TO_DIR]\workers.properties
  JkLogFile [PATH_TO_DIR]\mod_jk.log 
  JkLogLevel INFO 
  JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 

  SetEnvIf Request_URI "/error/*" no-jk
  SetEnvIf Request_URI "/blog*"   no-jk

  JkMount    /                    tomcat
  JkMount    /*                   tomcat

</IfModule>

5) Start Tomcat and restart Httpd.

查看更多
登录 后发表回答