读书笔记《apache-tomcat-7-essentials》Tomcat与ApacheWeb服务器的集成
Apache HTTP 服务器是整个 IT 行业中使用最广泛的前端 Web 服务器之一。该项目于 1995 年开源,归 Apache 软件基金会所有。
本章对于从事企业级 Web 集成工作的 Web 管理员非常有用。它很好地说明了如何在 IT 组织中实施集成。因此,如果您正在考虑提升您在企业级应用程序集成方面的职业生涯,请仔细阅读本章。
在本章中,我们将讨论以下主题:
Apache HTTP 安装
Apache的各种模块
Apache 与 Tomcat 7 的集成
IT行业环境是如何搭建的
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 服务器非常有效地支持重定向和重写规则。
根据基础设施的要求,可以使用各种方法安装 Apache。例如,如果您想在一台机器上运行多个 Apache 实例,那么将使用 Source 安装。各种web环境下的安装主要分为三种:
在本主题中,我们将讨论 Apache HTTP 作为服务的安装。在 Windows 平台上安装 Apache HTTP 服务器非常简单。以下是要执行的步骤:
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 是次要版本,几乎每个月都在变化。以下屏幕截图显示了可供下载的不同版本:
2. 下载所需的
exe
文件后。 (http-2.2.X-win32-x86-no_ssl.exe),双击exe< /code>,您将看到一个欢迎屏幕作为弹出窗口。点击下一步,如下截图所示:
3. 下一个屏幕显示许可协议。点击我接受,如下图所示,会出现服务器信息界面:
-
服务器域
服务器名称: 在实时环境中,服务器名称是机器的主机名。
管理员电子邮件 ID: 它是本地服务器上的 SMTP 地址。
5. 填写上一个屏幕截图中显示的详细信息后,单击 Next。它会将您带到安装屏幕。选择典型,如下截图所示:
Note
在典型安装中,会自动安装在 Windows 中安装 Tomcat 7 所需的整个库和模块。此外,典型安装包含预定义的模块,这些模块是 Web 服务器执行其功能所必需的。建议初学者和中级用户使用此方法。在自定义安装中,我们可以自由选择应用程序正常执行其功能所必需的模块,模块的其余部分可以忽略,因此占用的空间和内存更少。建议对 Apache 有很好了解的人使用此方法。
-
-
-
与 Windows 环境相比,非 DOS 环境中的 Apache HTTP 安装有所不同。在上一节中, Apache HTTP 的安装,我们已经讨论了二进制文件。在此安装中,我们将讨论 Source 安装。以下是源码安装涉及的步骤:
1、从Apache官网下载Apache httpd服务器。 http://httpd.apache .org/download.cgi。以下屏幕截图显示了要下载的文件(httpd-2.2.X.tar.gz,其中 2.2 是主要版本,X 是次要版本):
2. 下载完成后,源文件存储在用户的主目录中(在我们的例子中是
/root)
。源文件的格式为tar.gz
。运行以下命令解压缩源。先创建一个文件夹httpd
,然后解压httpd
目录下的内容。-
4. 然后使用以下命令访问提取的目录。结果类似于以下屏幕截图:
5. 目录验证后,是时候在 Linux 上安装 Apache HTTP 服务器了。默认情况下,源文件夹的执行权限未设置为
true
。为此,我们必须运行chown
命令使其true
.
默认情况下, Apache Portable Runtime (APR) 未安装在2.2版本,我们要安装它。让我们详细讨论 APR 及其实用程序。
Apache Portable Runtime 是一个开源项目,由 Apache Foundation 软件支持。该项目的主要目标是为开发人员提供一个 API,通过该 API,他们可以编码和预测相同的行为,而不受不同平台的影响。它消除了对不同操作系统的额外代码依赖性的要求。有关此项目的更多信息,请访问 http://apr.apache.org/ .
Tomcat 7 使用 APR 来提供可扩展性、性能以及与本地技术的最佳协作能力。
Apache Portable Runtime 项目再次分为三个子项目,以增强和简化该项目的功能。下图显示了 APR 的不同子项目:
APR 是一个可移植的运行时库,Apache 通过它与其他本地技术集成。它也有助于解决线程和进程的问题。有关 APR 的更多信息,请访问 http://apr. apache.org/docs/apr/trunk/index.html.
Apache Portable Runtime Utility(APR-util)是一个APR 的配套库。要安装此实用程序,应将 GCC++ 软件包安装到操作系统 ( http://apr.apache.org/docs/apr-util/trunk/)。
APR-iconv 是 iconv()
库(http://apr.apache.org/docs/apr-iconv/trunk/
).
APR/APR-util 自带 Apache 包的源码,可以在如下目录中找到,如下图所示:
APR:
Installdir/srclib/apr
APR-util:
安装目录/srclib/apr-util
由于我们在 /opt/httpd-2.2.19
中提取了源代码,因此在同一目录中也可以找到源目录。
让我们从安装 APR 开始,然后是安装 APR-util。
可以使用三个命令分三步完成 APR 安装。步骤如下:
1、进入
apr
和apr-util
的源码目录,然后使用如下命令配置代码:2. 您可以使用以下命令配置 Apache。以下屏幕截图显示了命令执行时的输出:
3. 前面的截图描述了
configure
命令的进度。一旦命令被执行,它会得到返回码0
否则你会在屏幕上看到一个错误。然后,在服务器上运行make
命令编译代码。下图是make
命令的输出:4. 前面和下面的截图显示完成,没有任何错误。要继续安装
make
,我们必须运行以下命令:5. 前面的命令在服务器上安装 Apache HTTP,如下图所示。它显示服务器上的完成。如果你查看之前的截图,你会发现它创建了目录结构、文件、手册页和
htdocs
,如下图所示:6.
make
安装完成后,在当前安装路径下创建Apache HTTP服务器的目录结构。让我们快速看看目录的外观。以下屏幕截图显示了 Apache HTTP 服务器的目录结构。在 90% 的情况下,Apache 管理员在conf、modules
和htdocs
目录上工作以执行日常操作.7. 在我们结束安装之前,需要启动 HTTP 的服务来验证实例是否正确安装。检查配置的最佳方法是运行
configtest
脚本。此脚本默认随 Apache httpd 提供,仅在非 DOS 环境中。该脚本可以在APACHE_HOME/bin
中找到。
然后使用以下命令重新启动 Apache:
启动 Apache 后,验证实例状态非常重要。您可以使用
ps
命令验证系统:
前面的截图显示了 HTTP 进程的状态,这意味着 HTTP 服务器运行正常。
该协议主要用于在网络上以二进制格式而不是纯文本传输数据。它使用 TCP 和基于数据包的协议,因此提高了 Web 服务器的性能。另一个信息点是请求的解密是在 Web 服务器端完成的,因此应用程序服务器没有高负载。
mod_jk
和 mod_proxy
基于 AJP 协议。它们还有助于通过浏览器传输高内容响应。
Note
如果我们使用最新版本的 mod_jk
来集成Apache和Tomcat,那么我们可以将64k的响应头存储在Web浏览器中。在启用 SSO 的应用程序或在浏览器中存储 Java 会话值的情况下,此过程非常有用。
mod_jk
是一个 AJP 连接器,用于将 Apache 或 IIS 等 Web 服务器集成到 Tomcat 7。如果我们不安装 mod_jk< /code>,那么我们不能为 Tomcat 使用前端 Web 服务器。这个模块非常有用,可以将 Tomcat 隐藏在前端 Web 服务器后面,并且在浏览 URL 时消除端口号。它涉及从安装和配置开始的多个步骤。我们先讨论
mod_jk
的安装。
mod_jk
源码可以从其官网下载, http://tomcat.apache.org/download-connectors.cgi。始终建议从该站点下载最新的稳定版本以进行实施。
1. 下载源代码后,我们必须使用以下命令将其解压缩到服务器目录中:
其中 x 是次要版本号。
2. 提取代码后,在当前路径中创建一个名为
tomcat-connectors-1.2.32
的目录。它是mod_jk
源代码的主目录。以下屏幕截图显示了在执行上一条命令后创建的tomcat-connectors-1.2.32
目录中的提取代码:3. 使用以下命令进入
mod_jk
源的本机目录,然后运行configure
命令:4. 以下屏幕截图显示了使用 APXS 模块的安装过程。
mod_jk
的安装从运行configure
命令开始:5. 配置完成后,需要运行
make
命令,编译源代码,如下图所示:6. 使用 make 命令编译代码后,使用命令
make install:
安装代码7. 执行完成后,会在源码的
apache-2.0
目录下创建模块,如下图所示:
mod_jk
在 Apache 中的配置有点复杂。执行配置的方法有很多种,但最常用的选项是创建 workers.properties
和 mod_jk.conf
。下面提到要执行的步骤:
1、将connector源码的
apache 2.0
目录下的mod_jk.so
复制到Apache httpd服务器的modules目录下使用以下命令:上一条命令设置执行权限。
前面的命令将所有权设置为 root。
2. 要编辑httpd服务器的配置,你必须在
conf
中创建一个名为mod_jk.conf
的新文件$APACHE_HOME/conf
目录如下: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
。这意味着只要用户点击 URLhttp://localhost/sample
,请求就会重定向到 Tomcat node1。
3. 创建一个名为
workers 的新文件。
使用以下命令:conf
中的属性workers.properties
包含以下详细信息:4、最后一步是在httpd的主配置文件中包含
mod_jk.conf
,即httpd.conf。< /code>
现在我们完成了 Apache HTTP 配置文件 (httpd.conf
) 中 mod_jk
的配置。但是在我们回收 Apache httpd 服务之前, mod_jk
将不起作用。那为什么要等呢?让我们通过运行以下命令进行回收:
一旦我们完成了 Apache Web 服务器配置,然后重新启动 Web 服务器服务,现在就可以测试应用程序了。在 Chapter 1, Tomcat 7 的安装中,我们测试了应用程序通过使用运行 Tomcat 服务的主机和端口号 http://localhost:8080/applicationname
,如以下屏幕截图所示:
启用 mod_jk
配置后,您可以不使用端口号(http://localhost/applicationname
)检查 URL。以下屏幕截图显示了应用程序的 URL:
mod_proxy
配置相比 mod_jk
配置非常简单。在这里,我们需要添加模块并将 URL 重定向到虚拟主机。
打开 httpd.conf
并放置以下条目:
1. 将以下代码行放在其他
LoadModule
指令之后:2. 将以下代码行与您的其他
VirtualHost
放在一起,或放在文件底部:
保存配置文件。根据经验法则,每次配置更改仅在回收后才会反映出来。
IIS版本因Windows操作系统的不同版本而异,如Windows 2003自带IIS 6,Windows 2008自带IIS 7。这里,我们讨论IIS 7与Tomcat 7的集成,但在继续之前,有一些配置我们需要对其进行配置以确保集成运行良好。
.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
。
从 http 下载最新的 mod_jk
://tomcat.apache.org/download-connectors.cgi。将其解压缩为 C 并将其重命名为 Tomcat
。双击文件夹,你会发现一个目录结构,如下图所示:
转到目录 C:\tomcat\native\iis
并双击 isapi _redirect
。将在注册表中创建一个条目,如以下屏幕截图所示:
它显示了 Tomcat 连接的不同参数,例如 workers.properties
、URI 映射、日志位置等。
保存注册表后,您必须使用命令提示符下的以下命令重新启动 IIS 服务器:
让我们讨论一下 workers.properties
和 URI 映射文件。 C:\tomcat\native\iis\installer\conf
中有一个示例 workers.properties
。
以下屏幕截图显示了不同的配置文件,用于 IIS 中的 mod_jk
配置:
workers.properties
文件包含以下代码:
uriworkermap.properties
文件包含以下代码:
在 Apache Tomcat 或 IIS Tomcat 集成过程中可能会出现许多问题。其中一些在下一节中提到,我们将找出这些问题的原因及其解决方案。这些问题在 Tomcat 的集成中非常常见。
场景一: httpd服务器无法编译,导致退出编译模式。
错误:
原因: 缺少 C 编译器,例如 GCC 和 GCC+。
解决方案: 从网上下载 GCC 编译器并按照那里给出的说明进行编译:
场景 2: Apache 无法编译 make
命令,显示错误并退出进程。
错误: make
无法编译代码。
原因: make
无法执行其功能。
解决方案: 运行以下命令:
场景 3: Apache HTTP 服务器无法连接到 Tomcat 7。
错误: 无法通过 AJP 连接。
原因: 端口可能被阻塞或 AJP 配置不正确。
解决方案: 使用以下命令检查日志是否有更多错误:
然后,在服务器上运行 configtest
命令,使用以下命令验证配置:
在本章中,我们讨论了 Apache/IIS 与 Tomcat 7 的集成以及它们的各种组件集成。此外,您可以使用链接 http 为 Apache 和 Tomcat 使用现成的解决方案://www.apachefriends.org/en/xampp-windows.html。阅读本章后,读者可以期望对集成以及在集成安装过程中可能遇到的不同问题有一个很好的了解。
在下一章中,我们将讨论 Tomcat 的安全增强及其特性,例如应用程序自带安全设置、服务器安全 SSL 等。