【问题标题】:To use JSP and PHP in the same application在同一个应用程序中使用 JSP 和 PHP
【发布时间】:2014-01-03 18:52:19
【问题描述】:

我的申请基于PHP。现在我想集成一个用JSP 编写的网络记者。所以,我有一个Apache HTTP Server 和一个用 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

我的uriworkermap.properties 看起来像这样

/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 - Tomcat 8.0,但问题仍未解决。

编辑

通过apache.org这个链接判断,可以通过更改server.xml(tomcat的)和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 时,我现在看到一个 Apache Tomcat error report:HTTP Status 404 - /jsp/index.jsp。这似乎是最后一个错误,但我仍然不知道如何处理它。

编辑

现在我看到它有效。虽然,我得到了一个意想不到的行为。我以为我可以将 JSP 文件放在 htdocs 文件夹中,但事实证明,它们应该放在 tomcat 中。

【问题讨论】:

  • 您是否为 mod_jk 创建了配置文件以指定哪些 Tomcat 应用程序要公开到端口 80? IE。将 JkWorkersFile 添加到 httpd.conf 并创建该文件。 tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html
  • 不,我没有。顺便说一句,我发现这些链接 rimuhosting.com/mod_jk2_and_mod_proxy_ajp.jsphttpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html 似乎很有希望,但我仍然不明白应该做哪些修改,因为我从来没有使用反向代理和所有这些东西。
  • 这里的文档更清晰。 tomcat.apache.org/connectors-doc
  • 谢谢!但是有大量的信息和术语(工人等)。
  • 和往常一样,文档已经过时了。例如,它说关于 conf 中的workers.properties 文件。但是我看到没有workers.properties 文件,而是有catalina.properties 和logging.properties。当文档毫无意义时,这真的让我发疯了

标签: php apache jsp tomcat


【解决方案1】:

为了最少的设置。

workers.properties 文件示例:

# Minimal jk configuration
JkWorkerProperty worker.list=ajp13w
JkWorkerProperty worker.ajp13w.type=ajp13
JkWorkerProperty worker.ajp13w.host=localhost
JkWorkerProperty worker.ajp13w.port=8009   

8009 是 mod_jk 在将请求转发到 Tomcat 时用于在 HTTPD 和 Tomcat 之间进行通信的默认端口。如果你在这里更改它,你也必须在 Tomcat 的 server.xml 中更改它。

uriworkermap.properties 文件示例:

/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] "

【讨论】:

  • 我查过了。不幸的是,它没有帮助。指定 AddModule、JkWorkersFile 和 JkMountFile 会导致错误
  • 您可能需要下载较新的版本,并使用 Tomcat 连接器的下载而不是较旧的 mod_jk 版本,因为 JkMountFile 是较新的指令。
  • 您的意思是更新版本的Tomcat? Tomcat 连接器是什么意思?你的意思是这个-apache-mirror.rbc.ru/pub/apache//tomcat/tomcat-connectors/jk/…。我下载了一个档案,在那里看到了大量的文件。如何处理所有这些地狱 - 我不知道。
猜你喜欢
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多