一尘不染

如何在同一服务器环境上运行PHP和Tomcat?

tomcat

不久前在AskUbuntu上问了这个问题:https ://askubuntu.com/questions/630897/apache-
httpd-backed-by-both-tomcat-and-php 但那里没有答案,所以我决定在这里问。

再说一次-假设我可以通过某些域名访问服务器,例如http://mywebapp.com/

我想在该服务器上设置以下内容:

  • 所有类似http://mywebapp.com/blog*的请求均由PHP服务器处理(具体来说,WordPress博客引擎)
  • 所有 其他 请求http://mywebapp.com/*均由Apache Tomcat

我认为可以通过将Apache HTTPD服务器置于服务器TomcatPHP服务器之间来实现,但是找不到实现此目的的配置。

有人可以提供有关如何实现此目标的任何提示吗?


阅读 253

收藏
2020-06-16

共1个答案

一尘不染

您可以使用mod_jk做到这一点:

1)在Apache Web服务器httpd.conf中启用模块“ mod_jk”。通过删除开头的哈希来取消注释此行:

LoadModule jk_module modules/mod_jk.so

如果您使用的是Linux,请输入:

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

2)编辑[TOMCAT_DIR] /conf/server.xml。将“ jvmRoute”属性添加到“ engine”元素:

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

取消注释AJP连接器(http连接器可能已禁用):

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

3)在“ httpd.conf”旁边创建一个文件“ workers.properties”。添加此内容并设置正确的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)在httpd.conf的末尾添加此映射,并用绝对路径替换[PATH_TO_DIR]:

<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)启动Tomcat并重新启动Httpd。

2020-06-16