在同一应用程序中使用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连接器是什么意思?你是说-。我下载了一个档案,在那里看到了大量的文件。这该死的东西怎么办?我不知道。