在同一应用程序中使用JSP和PHP

在同一应用程序中使用JSP和PHP,php,apache,jsp,tomcat,Php,Apache,Jsp,Tomcat,我的应用程序基于PHP。现在我想集成一个web reporter,它是用JSP编写的。因此,我有一个apachehttp服务器和一个用PHP编写的应用程序。我甚至安装了Tomcat来服务JSP文件,它在8080端口运行良好。我还获得了mod_jk.so,并在httpd.conf文件中添加了一行LoadModule jk_module modules/mod_jk.so,但仍然无法从应用程序文件夹(端口80)运行JSP文件。我想,应该对httpd.conf文件进行额外的调优,但我不知道应该做什么

我的应用程序基于
PHP
。现在我想集成一个web reporter,它是用
JSP
编写的。因此,我有一个
apachehttp服务器和一个用PHP编写的应用程序。我甚至安装了
Tomcat
来服务
JSP
文件,它在8080端口运行良好。我还获得了mod_jk.so,并在
httpd.conf
文件中添加了一行
LoadModule jk_module modules/mod_jk.so
,但仍然无法从应用程序文件夹(端口80)运行
JSP
文件。我想,应该对
httpd.conf
文件进行额外的调优,但我不知道应该做什么

编辑 我的
workers.properties
与此一模一样

JkWorkerProperty worker.list=ajp13w
JkWorkerProperty worker.ajp13w.type=ajp13
JkWorkerProperty worker.ajp13w.host=localhost
JkWorkerProperty worker.ajp13w.port=8009
/jsp/*=ajp13w
我的
uriworkermap.properties
如下所示

JkWorkerProperty worker.list=ajp13w
JkWorkerProperty worker.ajp13w.type=ajp13
JkWorkerProperty worker.ajp13w.host=localhost
JkWorkerProperty worker.ajp13w.port=8009
/jsp/*=ajp13w
其中
jsp
是htdocs中的一个文件夹,包含jsp文件

最后,我的
httpd.conf
现在包含

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule jk_module modules/mod_jk.so

#AddModule     mod_jk.c
#JkWorkersFile C:/Program Files/Apache Software Foundation/Tomcat 6.0/conf/workers.properties
#JkMountFile   C:/Program Files/Apache Software Foundation/Tomcat 6.0/conf/uriworkermap.properties
JkLogFile     C:/Apache/logs/mod_jk.log
JkLogLevel    info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
每个注释行都使服务器无法启动

编辑

我安装了一个更新版本的Tomcat-Tomcat8.0,但问题仍然没有解决

编辑

从这个链接来看,可以通过更改tomcat的
server.xml
(关于虚拟主机)和httpd.conf(关于虚拟主机)来解决这个问题。但正如世界上所有的情况一样,本文并没有提供任何具体的例子

编辑

我领先了一步。使服务器无法运行的最愚蠢的错误是引号。所以
httpd.conf
-
JkWorkersFile C:/Program Files/Apache Software Foundation/Tomcat 8.0/conf/workers.properties
中的这一行给了我一个错误,但经过三个小时的努力,结果证明它应该是
JkWorkersFile“C:/Program Files/Apache Software Foundation/Tomcat 8.0/conf/workers.properties”
。所以,现在它运行了。然而,当我转到
localhost/jsp/index.jsp
时,我现在看到了一个
apachetomcat错误报告
HTTP Status 404-/jsp/index.jsp
。这似乎是最后一个错误,但我仍然不知道如何处理它

编辑

现在我明白了。不过,我有一种意想不到的行为。我原以为我可以将
JSP
文件放在htdocs文件夹中,但事实证明,它们应该放在tomcat中。

以简化设置

workers.properties文件示例:

# Minimal jk configuration
JkWorkerProperty worker.list=ajp13w
JkWorkerProperty worker.ajp13w.type=ajp13
JkWorkerProperty worker.ajp13w.host=localhost
JkWorkerProperty worker.ajp13w.port=8009   
/my_tomcat_app_to_expose_to_httpd/*=ajp13w
8009是mod_jk将请求转发给Tomcat时用于在HTTPD和Tomcat之间通信的默认端口。如果您在这里更改它,您也必须在Tomcat的server.xml中更改它

uriworkermap.properties文件示例:

# Minimal jk configuration
JkWorkerProperty worker.list=ajp13w
JkWorkerProperty worker.ajp13w.type=ajp13
JkWorkerProperty worker.ajp13w.host=localhost
JkWorkerProperty worker.ajp13w.port=8009   
/my_tomcat_app_to_expose_to_httpd/*=ajp13w
*有一个文件扩展名筛选器。*对于所有文件,*.jsp仅用于jsp文件等

此处列出的任何应用程序都将通过HTTPD提供

在httpd.conf中,您需要:

LoadModule    jk_module  libexec/mod_jk.so
AddModule     mod_jk.c
JkWorkersFile /config_location/workers.properties
JkMountFile   /config_location/uriworkermap.properties
JkLogFile     /log_location/mod_jk.log
JkLogLevel    info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

您是否为mod_jk创建了配置文件,以指定向端口80公开哪些Tomcat应用程序?例如,将JkWorkersFile添加到httpd.conf并创建该文件。不,我没有。顺便说一句,我找到了这些链接,它们似乎很有希望,但我仍然不明白应该做什么修改,因为我从来没有深入研究过反向代理和所有这些东西。这里的文档更清晰。谢谢但是有大量的信息和术语(工人等),而且文档总是过时的。例如,它在conf中表示关于workers.properties文件,但我看到没有workers.properties文件,而是catalina.properties和logging.properties。它真的让我抓狂,当文件在allI检查时毫无意义。不幸的是,这没有帮助。AddModule、JkWorkersFile和JkMountFile指定会导致错误您可能需要下载较新版本,并使用Tomcat连接器的下载,而不是较早的mod_jk版本,因为JkMountFile是较新的指令。您是指Tomcat的较新版本吗?你说的Tomcat连接器是什么意思?你是说-。我下载了一个档案,在那里看到了大量的文件。这该死的东西怎么办?我不知道。