vlambda博客
学习文章列表

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

Chapter 4. Integration of Tomcat with the Apache Web Server

Apache HTTP 服务器是整个 IT 行业中使用最广泛的前端 Web 服务器之一。该项目于 1995 年开源,归 Apache 软件基金会所有。

本章对于从事企业级 Web 集成工作的 Web 管理员非常有用。它很好地说明了如何在 IT 组织中实施集成。因此,如果您正在考虑提升您在企业级应用程序集成方面的职业生涯,请仔细阅读本章。

在本章中,我们将讨论以下主题:

  • Apache HTTP 安装

  • Apache的各种模块

  • Apache 与 Tomcat 7 的集成

  • IT行业环境是如何搭建的

User request flow (web/application level)

在讨论 Apache 的安装之前,让我们先讨论一下 IT 行业应用程序的请求如何从 Web 和应用程序服务器流出的高级概述。下图显示了 Web 应用程序中用户请求的处理流程。各组件的逐步参与如下:

  1. 1. 用户在浏览器中点击 URL,请求转到 HTTP 服务器而不是 Tomcat。

  2. 2、HTTP服务器接受请求,重定向到Tomcat进行业务逻辑处理。

  3. 3.Tomcat内部联系数据库服务器获取数据,通过请求的同一个渠道将响应返回给用户:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

User request flow (web/application level)


在讨论 Apache 的安装之前,让我们先讨论一下 IT 行业应用程序的请求如何从 Web 和应用程序服务器流出的高级概述。下图显示了 Web 应用程序中用户请求的处理流程。各组件的逐步参与如下:

  1. 1. 用户在浏览器中点击 URL,请求转到 HTTP 服务器而不是 Tomcat。

  2. 2、HTTP服务器接受请求,重定向到Tomcat进行业务逻辑处理。

  3. 3.Tomcat内部联系数据库服务器获取数据,通过请求的同一个渠道将响应返回给用户:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

Why the Apache HTTP server


Apache HTTP 服务器是 IT 行业中最成功和最常见的 Web 服务器之一。原因是它得到了开源社区的支持。在 IT 行业,Apache HTTP 服务器被大量用作前端 Web 服务器,原因如下:

  • 高效地提供静态内容: 在重度用户中,HTTP 服务器更高效地服务于图像、JS、CSS 和 HTML 文件等静态内容环境。 Tomcat 也可以,但是会增加响应时间。

  • 速度提高 10%: 与 Tomcat 相比,Apache 处理静态内容的效率提高了 10%。 Apache的集成在高用户负载的场景下非常有用。

  • 集群: Apache 是连接多个 Tomcat 实例的最具成本效益和最稳定的解决方案之一。此功能的最大优点是应用程序将在线,以防其中一个实例出现故障。此外,在部署期间,我们可以在一个实例上部署代码,而另一个实例仍然在线,为用户提供请求。简单来说,应用程序没有停机时间。

  • 安全性: Apache 可以启用基于用户和主机的安全性。它也可以在Tomcat上完成。我们必须根据应用程序的要求来决定需要在 Apache 还是 Tomcat 上启用安全性

  • 多个网站托管: Apache HTTP 服务器的最佳功能之一是托管多个网站的能力。这个特性在Tomcat 7中也是首次引入。我们可以使用 httpd.conf创建32个虚拟主机。如果您要配置超过 32 个虚拟主机,那么我们必须创建一个单独的 virtual.conf 文件并将其包含在 httpd.conf httpd.conf virtual.conf是Apache HTTP服务器的配置文件)。

  • 模块: Apache 在模块方面非常灵活。我们可以根据应用程序的要求编译和反编译任何模块。此功能在应用程序可扩展性和与第三方工具的集成方面非常有用。

  • 装饰器: 这可以定义为应用程序 URL(重定向和重写)规则,旨在根据应用程序的内容服务用户请求。 Apache Web 服务器非常有效地支持重定向和重写规则。

Note

我们也可以在应用程序代码中创建重定向和重写。这些规则采用 servlet 类的形式。

Installation of the Apache HTTP


根据基础设施的要求,可以使用各种方法安装 Apache。例如,如果您想在一台机器上运行多个 Apache 实例,那么将使用 Source 安装。各种web环境下的安装主要分为三种:

  • 资源

  • 二进制

  • RPM/exe

Note

源是 Web 管理员首选的,因为它可以根据系统要求进行定制。

Apache HTTP installation on Windows

在本主题中,我们将讨论 Apache HTTP 作为服务的安装。在 Windows 平台上安装 Apache HTTP 服务器非常简单。以下是要执行的步骤:

  1. 1. Apache HTTP 服务器可以从各种不同的站点下载,但始终建议从其官方站点 http://httpd.apache.org/download.cgi 下载。在此站点上,您可以找到稳定版和 beta 版的详细信息。下载网站中提供的最新 Win32 Binary without crypto (no mod_ssl) (MSI Installer)。点击 httpd-2.2.X-win32-x86-no_ssl.msi 开始下载。这里 2.2 是主要版本,X 是次要版本,几乎每个月都在变化。以下屏幕截图显示了可供下载的不同版本:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

    Note

    我们这里使用 httpd-2.2.X-win32-x86-no_ssl.msi 来安装Apache,安装步骤不会随着次要版本的更新。

  2. 2. 下载所需的 exe 文件后。 (http-2.2.X-win32-x86-no_ssl.exe),双击 exe< /code>,您将看到一个欢迎屏幕作为弹出窗口。点击下一步,如下截图所示:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  3. 3. 下一个屏幕显示许可协议。点击我接受,如下图所示,会出现服务器信息界面:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  4. 4. 如以下截图所示,您必须输入以下详细信息

    • 服务器域

    • 服务器名称: 在实时环境中,服务器名称是机器的主机名。

    • 管理员电子邮件 ID: 它是本地服务器上的 SMTP 地址。

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  5. 5. 填写上一个屏幕截图中显示的详细信息后,单击 Next。它会将您带到安装屏幕。选择典型,如下截图所示:

    Note

    在典型安装中,会自动安装在 Windows 中安装 Tomcat 7 所需的整个库和模块。此外,典型安装包含预定义的模块,这些模块是 Web 服务器执行其功能所必需的。建议初学者和中级用户使用此方法。在自定义安装中,我们可以自由选择应用程序正常执行其功能所必需的模块,模块的其余部分可以忽略,因此占用的空间和内存更少。建议对 Apache 有很好了解的人使用此方法。

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  6. 6. 下一个界面显示HTTP服务器的安装目录:

    Note

    关键网站推荐使用D盘。原因是如果服务器崩溃,Apache 仍然可以毫无问题地恢复。

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  7. 7、点击 Next后,安装过程开始,如下截图:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  8. 8.然后会出现一个屏幕,表明它已经完成,如下图所示:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

How to monitor the Apache service

安装 Apache 后,您可以通过两种方式启动和停止服务:

  • 阿帕奇监控服务

  • 服务.msc

默认情况下,Apache 带有一个名为 Apache Monitor 的工具,通过它可以监控 Apache 系统。以下屏幕截图显示 Apache 服务状态为绿色。这意味着服务器正在运行。如果你想重启服务,你可以使用重启按钮来做同样的事情。

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

另一种回收Apache的方式是通过 services.msc,点击开始< /strong> |运行 | services.msc

服务控制台将打开。单击 Apache2.2 服务,将显示服务属性控制台窗口。它显示 Start Stop提示,以及当前状态服务器实例,如以下屏幕截图所示:

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

Installation of Apache HTTP on Linux (non-DOS environment)

与 Windows 环境相比,非 DOS 环境中的 Apache HTTP 安装有所不同。在上一节中, Apache HTTP 的安装,我们已经讨论了二进制文件。在此安装中,我们将讨论 Source 安装。以下是源码安装涉及的步骤:

  1. 1、从Apache官网下载Apache httpd服务器。 http://httpd.apache .org/download.cgi。以下屏幕截图显示了要下载的文件(httpd-2.2.X.tar.gz,其中 2.2 是主要版本,X 是次要版本):

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  2. 2. 下载完成后,源文件存储在用户的主目录中(在我们的例子中是 /root)。源文件的格式为 tar.gz。运行以下命令解压缩源。先创建一个文件夹 httpd,然后解压 httpd目录下的内容。

    tar -zxvf httpd-2.2.X.tar.gz
    

    Note

    我们提取了/opt目录下的 httpd-2.2.19.tar.gz

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  3. 3.您可以使用以下命令检查目录。显示的结果类似于以下截图:

    ls -ltrh
    
    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  4. 4. 然后使用以下命令访问提取的目录。结果类似于以下屏幕截图:

    cd httpd-2.2.19
    ls -ltrh
    
    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  5. 5. 目录验证后,是时候在 Linux 上安装 Apache HTTP 服务器了。默认情况下,源文件夹的执行权限未设置为 true。为此,我们必须运行 chown 命令使其 true.

    [root@localhost httpd-2.2.19]# chown 0755 configure
    

默认情况下, Apache Portable Runtime (APR) 未安装在2.2版本,我们要安装它。让我们详细讨论 APR 及其实用程序。

Note

/configure 包含 APR 从版本 2.2.3 开始启用。

Apache Portable Runtime

Apache Portable Runtime 是一个开源项目,由 Apache Foundation 软件支持。该项目的主要目标是为开发人员提供一个 API,通过该 API,他们可以编码和预测相同的行为,而不受不同平台的影响。它消除了对不同操作系统的额外代码依赖性的要求。有关此项目的更多信息,请访问 http://apr.apache.org/ .

Tomcat 7 使用 APR 来提供可扩展性、性能以及与本地技术的最佳协作能力。

Apache Portable Runtime 项目再次分为三个子项目,以增强和简化该项目的功能。下图显示了 APR 的不同子项目:

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

APR 是一个可移植的运行时库,Apache 通过它与其他本地技术集成。它也有助于解决线程和进程的问题。有关 APR 的更多信息,请访问 http://apr. apache.org/docs/apr/trunk/index.html.

Apache Portable Runtime UtilityAPR-util)是一个APR 的配套库。要安装此实用程序,应将 GCC++ 软件包安装到操作系统 ( http://apr.apache.org/docs/apr-util/trunk/)。

APR-iconv iconv() 库(http://apr.apache.org/docs/apr-iconv/trunk/ ).

Installation of APR/APR-util

APR/APR-util 自带 Apache 包的源码,可以在如下目录中找到,如下图所示:

  • APR: Installdir/srclib/apr

  • APR-util:安装目录/srclib/apr-util

由于我们在 /opt/httpd-2.2.19 中提取了源代码,因此在同一目录中也可以找到源目录。

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

让我们从安装 APR 开始,然后是安装 APR-util。

可以使用三个命令分三步完成 APR 安装。步骤如下:

  1. 1、进入 apr apr-util的源码目录,然后使用如下命令配置代码:

    [root@localhost srclib]# cd /opt/httpd-2.2.19/srclib/apr
    [root@localhost apr]# ./configure --prefix=/opt/httpd/apr-httpd/
    [root@localhost apr-util]# /configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/
    Make
    Make install
    

    Note

    如果我们手动编译 Apache 的源代码,应该先安装 APR/APR-util。如果我们错过了安装 APR/APR-util,那么在为 Apache 执行 make 命令时,source 会产生错误。

  2. 2. 您可以使用以下命令配置 Apache。以下屏幕截图显示了命令执行时的输出:

    [root@localhost httpd-2.2.19]#./configure --with-included-apr --prefix=/opt/apache-2.2.19
    
    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  3. 3. 前面的截图描述了 configure 命令的进度。一旦命令被执行,它会得到返回码 0 否则你会在屏幕上看到一个错误。然后,在服务器上运行 make命令编译代码。下图是 make命令的输出:

    [root@localhost httpd-2.2.X]#make
    
    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

    Note

    检查 make 命令的输出非常重要,因为它在大多数情况下都会出错。

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  4. 4. 前面和下面的截图显示完成,没有任何错误。要继续安装 make,我们必须运行以下命令:

    [root@localhost httpd-2.2.X]#make install
    
    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  5. 5. 前面的命令在服务器上安装 Apache HTTP,如下图所示。它显示服务器上的完成。如果你查看之前的截图,你会发现它创建了目录结构、文件、手册页和 htdocs,如下图所示:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  6. 6. make安装完成后,在当前安装路径下创建Apache HTTP服务器的目录结构。让我们快速看看目录的外观。以下屏幕截图显示了 Apache HTTP 服务器的目录结构。在 90% 的情况下,Apache 管理员在 conf、modules htdocs 目录上工作以执行日常操作.

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  7. 7. 在我们结束安装之前,需要启动 HTTP 的服务来验证实例是否正确安装。检查配置的最佳方法是运行 configtest 脚本。此脚本默认随 Apache httpd 提供,仅在非 DOS 环境中。该脚本可以在 APACHE_HOME/bin中找到。

[root@localhost bin]# ./apachectl configtest
Syntax OK
  • 然后使用以下命令重新启动 Apache:

[root@root@localhost bin]# ./apachectl start
  • 启动 Apache 后,验证实例状态非常重要。您可以使用 ps 命令验证系统:

ps -ef |grep httpd
读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

前面的截图显示了 HTTP 进程的状态,这意味着 HTTP 服务器运行正常。

Note

我们可以直接在 Debain Linux (Ubuntu) 中安装 Apache 包,使用  apt-get 命令。以下命令显示了安装的语法:

sudo apt-get install apache2

此外,您可以使用 yum 实用程序安装 Apache。此实用程序主要在 CentOS 中使用,使用命令:

yum -y install httpd

Apache Jserv protocol


该协议主要用于在网络上以二进制格式而不是纯文本传输数据。它使用 TCP 和基于数据包的协议,因此提高了 Web 服务器的性能。另一个信息点是请求的解密是在 Web 服务器端完成的,因此应用程序服务器没有高负载。

Note

如果您使用 AJP,则网络流量会减少,因为资费通过 TCP 协议。

mod_jk mod_proxy 基于 AJP 协议。它们还有助于通过浏览器传输高内容响应。

Note

如果我们使用最新版本的 mod_jk来集成Apache和Tomcat,那么我们可以将64k的响应头存储在Web浏览器中。在启用 SSO 的应用程序或在浏览器中存储 Java 会话值的情况下,此过程非常有用。

Installation and configuration of mod_jk

mod_jk 是一个 AJP 连接器,用于将 Apache 或 IIS 等 Web 服务器集成到 Tomcat 7。如果我们不安装 mod_jk< /code>,那么我们不能为 Tomcat 使用前端 Web 服务器。这个模块非常有用,可以将 Tomcat 隐藏在前端 Web 服务器后面,并且在浏览 URL 时消除端口号。它涉及从安装和配置开始的多个步骤。我们先讨论 mod_jk的安装。

Installation of mod_jk

mod_jk源码可以从其官网下载, http://tomcat.apache.org/download-connectors.cgi。始终建议从该站点下载最新的稳定版本以进行实施。

  1. 1. 下载源代码后,我们必须使用以下命令将其解压缩到服务器目录中:

    [root@localhost opt]# tar -zxvf tomcat-connectors-1.2.x-src.tar
    
    • 其中 x 是次要版本号。

  2. 2. 提取代码后,在当前路径中创建一个名为 tomcat-connectors-1.2.32的目录。它是 mod_jk 源代码的主目录。以下屏幕截图显示了在执行上一条命令后创建的 tomcat-connectors-1.2.32 目录中的提取代码:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  3. 3. 使用以下命令进入 mod_jk 源的本机目录,然后运行 configure 命令:

    [root@localhost opt]# cd /opt/tomcat-connectors-1.2.32-src/native ./configure --with-apxs=/opt/apache-2.2.19/bin/apxs
    

    Note

    配置提示

    mod_jk 特定于 Apache 版本和 Apache Extension Tool (APXS) 应该用于当前版本的 Apache,我们将在环境中使用它。

    一旦 mod_jk 在一台服务器上编译,就不需要为另一个Apache 实例生成。它可以直接复制到另一个实例。

    此技巧仅在 Linux 上进行了测试。

  4. 4. 以下屏幕截图显示了使用 APXS 模块的安装过程。 mod_jk 的安装从运行 configure 命令开始:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  5. 5. 配置完成后,需要运行 make命令,编译源代码,如下图所示:

    [root@localhost apache-2.0]# make
    
    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  6. 6. 使用 make 命令编译代码后,使用命令 make install: 安装代码

    root@localhost apache-2.0]# make install
    
    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  7. 7. 执行完成后,会在源码的 apache-2.0 目录下创建模块,如下图所示:

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

Configuration of mod_jk in Apache

mod_jk 在 Apache 中的配置有点复杂。执行配置的方法有很多种,但最常用的选项是创建 workers.properties mod_jk.conf 。下面提到要执行的步骤:

  1. 1、将connector源码的 apache 2.0目录下的 mod_jk.so复制到Apache httpd服务器的modules目录下使用以下命令:

    [root@localhost apache-2.0]# cp mod_jk.so /opt/apache-2.2.19/modules/
    chmod 755 mod_jk.so
    
    • 上一条命令设置执行权限。

      chown root:root mod_jk.so
      
    • 前面的命令将所有权设置为 root。

  2. 2. 要编辑httpd服务器的配置,你必须在 conf中创建一个名为 mod_jk.conf的新文件 $APACHE_HOME/conf 目录如下:

    [root@localhost apache-2.0]# cd /opt/apache-2.2.19/conf
    vi mod-jk.conf
    LoadModule jk_module modules/mod_jk.so
    JkWorkersFile conf/workers.properties
    JkLogFile logs/mod_jk.log
    JkLogLevel info
    JkMount /sample/* node1
    

    mod_jk.conf 文件包含以下详细信息:

    • Module path: 定义了Apache在启动过程中加载模块的位置,例如 LoadModule jk_module modules/mod_jk.so.

    • worker文件路径: 定义worker文件的位置,该文​​件包含Tomcat实例的IP、端口、负载等详细信息平衡方法如 JkWorkersFile conf/workers.properties.

    • 日志文件: 记录 Apache Tomcat 集成的活动,也记录 Apache/Tomcat 之间运行的连接健康检查(JkLogFile logs/mod_jk.log).

    • URL 映射: 它定义了 Apache 的上下文路径,还设置了规则,例如,如果您收到任何具有定义 URL 的请求,则重定向请求,例如, JkMount /sample/* node1。这意味着只要用户点击 URL http://localhost/sample,请求就会重定向到 Tomcat node1。

    • 日志级别:该参数捕获 mod_jk在日志(JkLogLevel 信息).

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  3. 3. 创建一个名为 workers 的新文件。 conf 中的属性 使用以下命令:

    [root@localhost conf]# vi workers.properties
    worker.list=node1
    worker.node1.port=8009
    worker.node1.host=10.130.240.51
    worker.node1.type=ajp13
    worker.node1.lbfactor=1
    

    workers.properties 包含以下详细信息:

    • 节点名称(主机的通用名称)

    • Tomcat 的 AJP 端口详细信息(Tomcat 接受 AJP 请求的端口)

    • Tomcat 的主机 IP(运行 Tomcat 实例的 IP 地址)

    • 使用的协议(默认通信使用的协议是AJP)

    • 负载均衡方式(轮询、持久化等)

    读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
  4. 4、最后一步是在httpd的主配置文件中包含 mod_jk.conf,即 httpd.conf。< /code>

    [root@localhost conf]# vi httpd.conf
    

    Note

    包括 conf/mod_jk.conf 应该添加在 httpd.conf 的末尾。

现在我们完成了 Apache HTTP 配置文件 (httpd.conf) 中 mod_jk 的配置。但是在我们回收 Apache httpd 服务之前, mod_jk 将不起作用。那为什么要等呢?让我们通过运行以下命令进行回收:

[root@localhost bin]# ./apachectl stop
[root@root@localhost bin]# ./apachectl start

Note

如果配置后Apache服务没有显示,那么我们运行 bin目录下的 configtest.sh显示配置问题。

一旦我们完成了 Apache Web 服务器配置,然后重新启动 Web 服务器服务,现在就可以测试应用程序了。在 Chapter 1, Tomcat 7 的安装中,我们测试了应用程序通过使用运行 Tomcat 服务的主机和端口号 http://localhost:8080/applicationname,如以下屏幕截图所示:

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

启用 mod_jk 配置后,您可以不使用端口号(http://localhost/applicationname)检查 URL。以下屏幕截图显示了应用程序的 URL:

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

mod_proxy configuration

mod_proxy 配置相比 mod_jk 配置非常简单。在这里,我们需要添加模块并将 URL 重定向到虚拟主机。

打开 httpd.conf 并放置以下条目:

  1. 1. 将以下代码行放在其他 LoadModule 指令之后:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    
  2. 2. 将以下代码行与您的其他 VirtualHost 放在一起,或放在文件底部:

    NameVirtualHost *
    <VirtualHost *>
    ServerName abc.com
    ProxyRequests Off
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    <Location />
    Order allow,deny
    Allow from all
    </Location>
    </VirtualHost>
    

保存配置文件。根据经验法则,每次配置更改仅在回收后才会反映出来。

[root@localhost bin]# ./apachectl stop
[root@root@localhost bin]# ./apachectl start

Comparison between mod_jk and mod_proxy

我们已经讨论过 mod_jk mod_proxy 但我们仍然不知道什么时候使用哪个模块来提高网络服务器的速度.让我们比较这两个模块,看看哪些可以在实时环境中使用:

特征

mod_jk

mod_proxy

负载均衡

高水平

基本的

管理界面

是的

汇编

分离过程

不需要。默认自带 Apache

配置

巨大的

基本的

协议

AJP

HTTP/HTTPS/AJP

节点故障

进步

不适用

上表显示了 mod_jk mod_proxy 的比较。基于这些特性,网络管理员可以决定应该使用哪个模块。

Note

在 90% 的情况下, mod_jk 与 Apache Tomcat 一起使用

IIS integration with Tomcat 7


IIS版本因Windows操作系统的不同版本而异,如Windows 2003自带IIS 6,Windows 2008自带IIS 7。这里,我们讨论IIS 7与Tomcat 7的集成,但在继续之前,有一些配置我们需要对其进行配置以确保集成运行良好。

Prerequisites

集成的先决条件是:

  • .NET 3.5 应该安装在服务器上

  • 新站点具有用于 IIS 和 Tomcat 的通用虚拟目录。我们需要创建一个网站,它接受用户的请求并在内部将其重定向到 Tomcat 7。为了将 IIS 与 Tomcat 集成,我们必须为 IIS 和 Tomcat 创建一个公共虚拟目录,然后共享模块。

  • isapi_redirect.dll: 是一个Windows平台的动态链接库。

  • isapi_redirect iplugin: 用于将请求从IIS重定向到Tomcat。

  • workers.properties: 它应该包含配置的所有定义,例如主机名、AJP 端口和负载均衡方法。

  • uriworkermap.properties: 包含应用的URI映射信息,如 /sample

Steps for installation

http 下载最新的 mod_jk ://tomcat.apache.org/download-connectors.cgi。将其解压缩为 C 并将其重命名为 Tomcat。双击文件夹,你会发现一个目录结构,如下图所示:

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

转到目录 C:\tomcat\native\iis 并双击 isapi _redirect。将在注册表中创建一个条目,如以下屏幕截图所示:

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

让我们通过编辑文件快速查看注册表中的内容:

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"log_file"="C:\\tomcat\\logs\\isapi.log"
"log_level"="debug"
"worker_file"="C:\\tomcat\\conf\\workers.properties"
"worker_mount_file"="C:\\tomcat\\conf\\uriworkermap.properties"

它显示了 Tomcat 连接的不同参数,例如 workers.properties、URI 映射、日志位置等。

保存注册表后,您必须使用命令提示符下的以下命令重新启动 IIS 服务器:

iisreset stop
iisreset start

让我们讨论一下 workers.properties 和 URI 映射文件。 C:\tomcat\native\iis\installer\conf 中有一个示例 workers.properties

以下屏幕截图显示了不同的配置文件,用于 IIS 中的 mod_jk 配置:

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

workers.properties 文件包含以下代码:

workers.properties
# The workers that jk should create and work with
#worker.list=wlb,jkstatus
# Defining a worker named ajp13w and of type ajp13
# Note that the name and the type do not have to match.
worker.ajp13w.type=ajp13
worker.ajp13w.host=localhost
worker.ajp13w.port=8009
# Defining a load balancer
worker.wlb.type=lb
worker.wlb.balance_workers=ajp13w
# Define status worker
worker.jkstatus.type=status

uriworkermap.properties 文件包含以下代码:

uriworkermap.properties
# uriworkermap.properties - IIS
# This file provides sample mappings for example wlb
# worker defined in workermap.properties.minimal
# The general syntax for this file is:
# [URL]=[Worker name]
/admin/*=wlb
/manager/*=wlb
/jsp-examples/*=wlb
/servlets-examples/*=wlb
/examples/*=wlb
# Optionally filter out all .jpeg files inside that context
# For no mapping the url has to start with exclamation (!)
!/servlets-examples/*.jpeg=wlb
# Mount jkstatus to /jkmanager
# For production servers you will need to
# secure the access to the /jkmanager url
/jkmanager=jkstatus

Common issues and troubleshooting for integration


在 Apache Tomcat 或 IIS Tomcat 集成过程中可能会出现许多问题。其中一些在下一节中提到,我们将找出这些问题的原因及其解决方案。这些问题在 Tomcat 的集成中非常常见。

场景一: httpd服务器无法编译,导致退出编译模式。

错误:

configure: error: in `/opt/httpd-2.2.19/srclib/apr':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
configure failed for srclib/apr

原因: 缺少 C 编译器,例如 GCC 和 GCC+。

解决方案: 从网上下载 GCC 编译器并按照那里给出的说明进行编译:

读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

场景 2: Apache 无法编译 make 命令,显示错误并退出进程。

错误: make 无法编译代码。

原因: make 无法执行其功能。

解决方案: 运行以下命令:

make clean
#Then
make
make install
读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成

场景 3: Apache HTTP 服务器无法连接到 Tomcat 7。

错误: 无法通过 AJP 连接。

原因: 端口可能被阻塞或 AJP 配置不正确。

解决方案: 使用以下命令检查日志是否有更多错误:

[root@localhost logs]# cat error_log
[Mon Jul 25 16:11:00 2011] [notice] Apache/2.2.19 (Unix) DAV/2 configured -- resuming normal operations
[Mon Jul 25 16:52:16 2011] [notice] caught SIGTERM, shutting down
[Mon Jul 25 16:52:23 2011] [warn] No JkShmFile defined in httpd.conf. Using default /opt/apache-2.2.19/logs/jk-runtime-status
[Mon Jul 25 16:52:23 2011] [warn] No JkShmFile defined in httpd.conf. Using default /opt/apache-2.2.19/logs/jk-runtime-status
[Mon Jul 25 16:52:23 2011] [notice] Apache/2.2.19 (Unix) DAV/2 mod_jk/1.2.32 configured -- resuming normal operations
[root@localhost logs]# cat mod_jk.log
[Mon Jul 25 16:52:23.555 2011] [13355:3086857920] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.node1.cachesize' is deprecated - please check the documentation for the correct replacement.
[Mon Jul 25 16:52:23.555 2011] [13355:3086857920] [info] init_jk::mod_jk.c (3252): mod_jk/1.2.32 () initialized
[Mon Jul 25 16:52:23.564 2011] [13356:3086857920] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.node1.cachesize' is deprecated - please check the documentation for the correct replacement.
[Mon Jul 25 16:52:23.564 2011] [13356:3086857920] [info] init_jk::mod_jk.c (3252): mod_jk/1.2.32 () initialized

然后,在服务器上运行 configtest 命令,使用以下命令验证配置:

[root@root@localhost bin]# ./apachectl configtest
Syntax OK

Summary


在本章中,我们讨论了 Apache/IIS 与 Tomcat 7 的集成以及它们的各种组件集成。此外,您可以使用链接 http 为 Apache 和 Tomcat 使用现成的解决方案://www.apachefriends.org/en/xampp-windows.html。阅读本章后,读者可以期望对集成以及在集成安装过程中可能遇到的不同问题有一个很好的了解。

在下一章中,我们将讨论 Tomcat 的安全增强及其特性,例如应用程序自带安全设置、服务器安全 SSL 等。