由于(出于某些奇怪的原因)一些网络管理员只允许出站 Web 连接到 TCP 端口 80,因此可能有人无法通过 端口 8080 访问您的 Tomcat(和 MMBase)服务器。您可以在 Apache 中安装 JK 2 映射或反向代理,以便可以通过 端口 80 的 Apache Web 服务器访问 Tomcat 和 MMBase。除了端口问题,这样做的好处是您可以使用 Apache 来管理您的 SSL 连接,并将您现有的 Apache 日志和统计工具用于 Tomcat 和 MMBase。
这里我们描述了连接 Apache 和 Tomcat 的 JK 2 连接器的安装和配置。通过这种方式,Tomcat 路径可以映射到 Apache 中。
来自 JK 2 连接器网站 (http://jakarta.apache.org/tomcat/tomcat-4.1-doc/config/jk2.html):
“JK 2 连接器元素代表一个连接器组件,该组件通过 AJP 协议与 Web 连接器通信。这适用于您希望将 Tomcat 4 无缝集成到现有(或新的)Apache 安装中的情况,并且您希望 Apache 处理 Web 应用程序中包含的静态内容,和/或利用 Apache 的 SSL 处理。在许多应用环境中,与使用 HTTP/1.1 连接器以独立方式运行 Tomcat 下的应用程序相比,这将带来更好的整体性能。但是,确定它是否会为您的应用程序提供更好性能的唯一方法是两种方式都尝试一下。”
如果您只需要一个简单的配置——通常是与您的 Apache 服务器位于同一系统上的单个 Tomcat 服务器——Apache 反向代理可能对您来说是一个更简单的解决方案。虽然这些在互连功能方面更简单,但反向代理在处理您的路径和其他选项方面提供了更大的灵活性。Apache 反向代理的配置在下一节中描述。
但是,如果您计划构建或扩展到由多个 Tomcat 服务器组成的集群,这些服务器位于 Apache 前端之后,或者构建高性能系统,那么部署 JK 2 连接器是最佳选择。
从 Apache Jakarta 网站下载 JK 2 连接器的源代码
http://jakarta.apache.org/site/sourceindex.cgi |
解压并编译 JK 2 连接器
tar -zxvf jakarta-tomcat-connectors-jk2-src-xxx.tar.gz cd jakarta-tomcat-connectors-jk2-src/jk/native2/ ./configure \ --with-apxs2=/usr/local/apache/bin/apxs make |
确保您的$JAVA_HOME环境变量已设置,并且 Java 二进制文件在您的$PATH中,或者将此选项添加到您的 ./configure 命令中
--with-java-home=/usr/local/j2sdk |
复制模块文件mod_jk2.so和jkjni.so到 Apache 的modules/目录
cp -i ../build/jk2/apache2/*.so /usr/local/apache/modules/ chmod 755 /usr/local/apache/modules/mod_jk2.so chown root:root /usr/local/apache/modules/mod_jk2.so chmod 755 /usr/local/apache/modules/jkjni.so chown root:root /usr/local/apache/modules/jkjni.so libtool --finish /usr/local/apache/modules |
复制示例配置文件workers2.properties到 Apache 的配置目录
cp -i ../../jk/conf/workers2.properties /usr/local/apache/conf/ chown root:root /usr/local/apache/conf/workers2.properties chmod 644 /usr/local/apache/conf/workers2.properties |
并根据您自己的需求进行调整。
这是一个简单的配置,应该可以让您启动并运行
[logger] # outcomment this in production use level=DEBUG [config:] file=${serverRoot}/conf/workers2.properties debug=0 debugEnv=0 [uriMap:] info=Maps the requests. Options: debug debug=1 [shm:] info=Scoreboard. Required for reconfiguration and status with multiprocess servers file=${serverRoot}/logs/jk2.shm size=1000000 debug=0 disabled=0 [workerEnv:] info=Global server options timing=1 debug=0 [status:] info=Status worker, displays runtime informations [uri:<hostname>/jkstatus/*] info=Display status information and checks the config file for changes. group=status: [channel.socket:localhost:8009] info=Ajp13 forwarding over socket # Define the worker [ajp13:localhost:8009] channel=channel.socket:localhost:8009 [uri:<hostname>/mmbase-webapp/*] info=MMBase |
大多数配置都是相当标准的。最后一个uri声明(替换<hostname>为您的主机名)是这一切的关键;它将所有以/mmbase-webapp/开头的客户端请求从 Apache 映射到您的 Tomcat 服务器。
![]() | 当我们进行虚拟主机映射时,不知何故,通用映射不再适用于此虚拟主机(同一 IP 地址上的其他虚拟主机根本没有问题)。我们必须为此虚拟主机显式添加通用映射才能使其再次工作。这是一个错误?还是 Apache 实现基于名称的虚拟主机的方式造成的后果? |
因此,现在,您通过 Tomcat 访问的同一个应用程序,如 (替换<hostname>为您的主机名)
http://<hostname>:8080/mmbase-webapp/ |
将通过 Apache 以如下方式访问
http://<hostname>/mmbase-webapp/ |
![]() | 只有基于名称的虚拟主机才以这种方式受支持。确保将虚拟主机名(指向这个相同的(Web)服务器)添加到/etc/hosts文件(替换<hostname>为您的主机名)
否则将无法工作(运行 DNS 在这里是不够的!)。 |
如果您的 Apache 安装仅服务于单个网站,您可以省略主机名
[uri:/mmbase-webapp/*] info=MMBase |
这将服务于映射的/mmbase-webapp/目录,该目录位于您的 Apache 安装的每个地址和站点上。
![]() | 使用 JK 连接器版本 2,所有配置设置都将在workers2.properties文件中。即使 Tomcat 自带 JK 2 配置文件/usr/local/tomcat/conf/jk2.properties,只要您坚持使用标准的 端口 8009,就没有必要编辑它。 如果您确实需要编辑此文件(例如,当更改端口时),请确保在您的 Tomcat 服务器未运行时执行此操作;该文件由 Tomcat 本身自动编辑。 |
将 mod_jk2 模块添加到您的 Apache 配置后(在文件/etc/httpd/conf/httpd.conf中或在新文件jk2.conf中,位于 Apache 配置目录/etc/httpd/conf.d):
# Load mod_jk2 module LoadModule jk2_module modules/mod_jk2.so |
chown root:root /etc/httpd/conf.d/jk2.conf chmod 644 /etc/httpd/conf.d/jk2.conf |
中),您现在可以重新启动 Apache 并尝试您的新入口点:(替换<hostname>为您的主机名)
http://<hostname>/mmbase-webapp/ |
要检查 JK 2 连接器的状态(替换<hostname>为您的主机名)
http://<hostname>/jkstatus/ |
![]() | 您可以在/usr/local/apache/conf/workers2.properties中重新读取配置,方法是(重新)加载 Apache 或使其重新加载其配置。但是,无法通过这种方式删除现有映射,并且需要 Apache 重新配置。 页面。这允许您添加新的映射,而无需重新启动尽管也可以将 JK 2 配置(以略有不同的形式)放置在您的 Apache 配置文件中,但这是坚持使用workers2.properties设置的一个很好的理由。 |
![]() | 要保护对 Apache 配置添加身份验证声明。例如 页面的访问,请向
这将提示从 admin 组的用户登录。 |
如果出现任何问题,请检查将写入到您的 Apacheerror_log.
![]() | 中的 JK 2 连接器日志消息。如果 JK 2 连接器难以连接到 Tomcat,请检查 Tomcat 是否确实在 端口 8009 上可用
|
映射到 Tomcat 的访问请求将被记录在 Apache 的access_log和error_log中。
有关workers2.properties配置的更多信息,请查看文档,地址为
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/configwebcom.html |
在那里,您将阅读有关设置更多(远程)Tomcat 工作进程、将这些工作进程分组到负载均衡池中、设置 RPC 通道、使用 Unix 套接字、使用 Java 本地接口 (JNI) 直接(进程内)与 Tomcat 互连、设置备用记录器以及优化超时的信息。
![]() | Apache 在服务普通内容文件方面比 Tomcat 更有效率。您可以使 Apache 和 Tomcat 文档目录都指向文件系统上的同一目录,并且仅转发对 JSP 页面和 Java Servlet 的请求。例如(在workers2.conf):
中)。但是,现在您需要保护 Tomcat 的WEB-INF/目录(以及您不希望访问者访问的其他目录和文件)免受 Apache 的服务。例如(在 Apache 的httpd.conf):
中)。此外,请注意,像这样的设置会绕过您可能在文件/usr/local/tomcat/webapps/examples/WEB-INF/web.xml. |
中配置的任何安全约束。
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/ |
上一页 | 您可以在以下位置找到有关 JK 2 连接器的更多通用信息 | 下一页 |
主页 | 将 Apache 反向代理安装为 MMBase 服务器的前端 |