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

Yur*_*nyy 4 php java apache wordpress 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服务器,但无法找到的配置来实现这一目标。

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

Ste*_*fan 5

你可以用 mod_jk 做到这一点:

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

LoadModule jk_module modules/mod_jk.so
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install libapache2-mod-jk
sudo a2enmod jk
Run Code Online (Sandbox Code Playgroud)

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

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat">
Run Code Online (Sandbox Code Playgroud)

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

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

5)启动Tomcat,重启Httpd。