Apache和Tomcat的整合,原理及例子
原理
tomcat为一个jsp的容器,apache为一个web server,两者之间通信通过worker进行(由Tomcat使用Server.xml文件中Connector的标签来定义其端口和协议),通过mod_jk的模块(由web服务器像apache、iis等使用)和Web Server通信。
通信协议有很多,其中jk2已经被抛弃了,现在就用jk就好了。
整个过程其实就是让apache的httpd.conf文件调用mod_jk.conf,mod_jk.conf调用workers.properties,最后配置虚拟主机。
文件说明
mod_jk.conf
主要定义mod_jk模块的位置以及mod_jk模块的连接日志设置,还有定义worker.properties文件的位置。
worker.properties
定义worker的参数,主要是连接tomcat主机的地址和端口信息。如果Tomcat与apache不在同一台机器上,或者需要做多台机器上tomcat的负载均衡只需要更改workers.properties文件中的相应定义即可。
第一部分:安装配置tomcat apache mod_jk j2sdk
准备下载下列文件
Jdk1.4.2_08(1.5也可以,把JRE装在JDK目录下)
下载地址: http://java.sun.com
tomcat 5.0.28
下载地址:http://jakarta.apache.org
apache 2.0.53
下载地址: http://httpd.apache.org
mod_jk-1.2.10-apache-2.0.53.so(根据Apache版本决定)
下载地址:http://archive.apache.org/dist/jakarta/tomcat-connectors/
把上面所有组件都安装到D:\Server目录下,这样也方便日常管理配置和将来移植到别的服务器上去。
1:安装j2sdk
安装到 D:\server\j2sdk\ 目录下,注意安装成系统服务
2: 安装tomcat
安装到D:\server\tomcat\目录下,注意安装成系统服务
可能遇到的问题
问题1: 在解析JSP页面时,提示无法找到java compiler
请拷贝 j2sdk\lib\tools.jar 到 tomcat\common\lib下面。
使用tomcat作为service启动后总是这样,当然用startup.bat脚本启动倒是完全正常。主要原因分析起来是以service方式启动的Tomcat无法读取JAVA_HOME 和CLASS_PATH等环境变量。
问题2:如何解决通过服务方式启动tomcat时log中提示ZoneInfo:d:\server\j2sdk\lib\zi\ZoneInfoMappings(系统找不到指定的路径。)
从d:\server\j2sdk\jre\lib目录拷贝所有文件放到 d:\server\j2sdk\lib\ ,jre\lib 中的文件和j2sdk\lib\ 中的文件没有一个重复的,不用担心会覆盖掉j2sdk\lib 中原有的任何文件。
3:安装apache 到 d:\server\ (会自动生成apache2文件夹)
配置 index.jsp 为默认页 配置 GB2312为默认语言
不只Apache的httpd.conf中定义了默认页面文件,连Tomcat的web.xml配置文件的结尾处也定义了默认页面文件,而且Tomcat中定义的的优先级还高于原有的Apache中所定义的默认页。
4:加入mod_jk连接模块
拷贝 mod_jk-1.2.10-apache-2.0.53.so 到d:\server\apache2\modules\ 改名为mod_jk.so
5: 修改apache的配置文件
为了保持httpd.conf文件的简洁,把jk模块的配置放到单独的文件中来,就在httpd.conf中增加一行调用
include D:\server\Apache2\conf\mod_jk.conf
6:配置mod_jk.conf
请注意使用绝对路径
其实最关键的就是 第一条 第二条 和最后一条,如果要精简,就保留这三条内容就可以了。
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat \"[%a %b %d %H:%M:%S %Y] \"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat \"%w %V %T\"
# Send servlet for context /examples to worker named ajp13
#JkMount /servlet/* ajp13
# Send JSPs for context /examples to worker named ajp13
JkMount /*.jsp ajp13
上面这一行我们设置了了 /*.jsp ajp13 就是说把所有.jsp结尾的文件都由ajp13这个worker交给tomcat处理了,如果应用被映射为一个.do的URL,这样就会出错.解决方法是再添加如下一行:
JkMount /*.do ajp13
7:配置apache2\conf\workers.properties
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost #本机,若上面Tomcat主机不为localhost,作相应修改
worker.ajp13.type=ajp13 #类型
worker.ajp13.lbfactor=1 #代理数,不用修改
第二部分:虚拟主机的配置
举例配置2个vhost网站 一个是 localhost ,另一个是 www.ok.com
当然www.ok.com 是虚拟的,本地测试时,应该修改系统中的hosts文件,添加一行 127.0.0.1 www.ok.com
1:Apache 虚拟主机配置:
Httpd.conf文件最后添加
include D:\server\Apache2\conf\vhost.conf
而vhost.conf内容写
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot \"D:/server/Tomcat/webapps/ROOT\"
ServerName localhost
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot D:/server/www/
ServerName www.ok.com
ErrorLog logs/ok.com-error_log
CustomLog logs/ok.com-access_log common
<Location /server-status> # 这样我可以看到apache服务器状态
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
Allow from www.ok.com
</Location>
</VirtualHost>
2:Tomcat虚拟主机配置
添加新的www.ok.com 虚拟主机,在tomcat安装路径\conf\server.xml的最后,找到<Engine>段,改为
<Engine>
<Host name=”localhost” ……>
</Host>
<Host name=\"www.ok.com\" debug=\"0\" appBase=\"D:/server/www/\" unpackWARs=\"true\" autoDeploy=\"true\" xmlValidation=\"false\" xmlNamespaceAware=\"false\">
<Context path=\"\" docBase=\".\" />
<Logger className=\"org.apache.catalina.logger.FileLogger\" directory=\"logs\" prefix=\"ok.com_log.\" suffix=\".txt\" timestamp=\"true\" />
</Host>
</Engine>
3:测试虚拟主机效果
访问http://localhost/ 应该可以看到原来的tomcat默认页面。
写一个 index.jsp
<html>
<title>
test jsp
</title>
<%out.println(\"Hello World!\");%>
</html>
放在d:/server/www下面,访问 http://www.ok.com
页面显示Hello World! 就成功了
第三部分,部分相关性能优化及其它问题
如何使用server版jvm ?
Jvm动态库有client和server两个版本,分别针对桌面应用和服务器应用做了相应的优化,client版本加 载速度较快,server版本加载速度较慢但运行起来较快。
在开始菜单 tomcat5 ->tomcat config的java属性中 有一项 jvm路径 指向server目录下的jvm就行了。
更改默认java.exe调用的jvm.dll,这个由jvm.cfg决定。
编辑%JAVA_HOME%\jre\lib\i386\jvm.cfg
里面第一行写的是 -client 默认就是client版本 ,把第二行的-server KNOWN 放到第一行, 如下面所示
-server KNOWN
-client KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
改完保存,然后看看默认版本:
C:\java -version
java version \"1.4.2_07\"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05)
Java HotSpot(TM) Server VM (build 1.4.2_07-b05, mixed mode)
关于JAVA_HOME 与CATALINA_HOME、 CLASSPATH
ClassPath 网上有人说在j2sdk1.3开始就不需要配置了,而本例中实际是不需要配置JAVA_HOME和CATALINA_HOME的,因为tomcat 以service模式启动根本不认你的java_home,当然为了让你能够在命令行运行startup.bat时也能顺利启动Tomcat,可以配置也建议配置上JAVA_HOME 与CATALINA_HOME,ClassPath就免了吧,连Resin都不需要这个了。
有关路径设置
Path=d:\server\jdk\bin;…… 放到最前,避免有多个jdk时的很多问题
关于apache2在win平台上的一个小问题
可能apache的日志中常出现类似如下的提示
[error] (730038)An operation was attempted on something that is not a socket.: winnt_accept: AcceptEx failed. Attempting to recover.
这是由于apache 使用了微软的AcceptEx()调用的缘故,禁用掉即可,此问题只会出现在win平台且apache的2.0.49和更高版本上,出现错误的大概原因是防火墙和防病毒软件所导致,导致结果也有好几种,像apache占用很高cpu资源或者网站页面无法打开。
解决方法修改d:\server\apache2\conf\httpd.conf中的mpm部分
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 0
Win32DisableAcceptEx #添加这一行即可,做过压力测试,对性能影响很小,可以忽略
</IfModule>
分享到:
相关推荐
接下来,我们将详细介绍如何在 Ubuntu Linux 系统中安装配置 Apache 与 Tomcat 的整合。 #### 安装 mod_jk 模块 1. **下载并解压** `tomcat-connectors-1.2.15-src.tar.gz` 文件: ```bash tar -zxvf tomcat-...
**Apache和Tomcat整合的意义:** Apache因其高效、稳定和安全的特点,成为许多网站首选的Web服务器。然而,对于处理动态内容,如JSP和Servlet,Apache的能力相对较弱。而Tomcat作为一个轻量级的应用服务器,专门用于...
Apache 与 Tomcat 整合采用 proxy 方式,需要在 Apache 的配置文件 `httpd.conf` 中添加模块和相关配置。首先,确保 Apache 已加载 `proxy_module` 和 `proxy_ajp_module`,这可以通过在 `httpd.conf` 文件末尾添加 ...
### Windows下Apache与Tomcat的整合 在现代Web开发中,Apache与Tomcat的整合是十分常见的场景之一,尤其在企业级应用中更是如此。本文将详细介绍如何在Windows环境下完成Apache与Tomcat的整合,包括配置步骤、注意...
### Apache与Tomcat整合的简单方法 #### 一、引言 随着互联网技术的发展,越来越多的应用需要同时利用Apache和Tomcat的优势。Apache作为一款稳定、高效且功能强大的Web服务器,而Tomcat则是一款专为Java应用程序...
Linux+Apache+Tomcat 的整合是目前最常用的 web 服务器架构之一,本文档将详细介绍如何在 Red Hat Enterprise Linux 5.2 环境下安装和配置 Apache2.2.12、Tomcat6.0.20 和 JDK6u16,以实现一个完整的 JSP 环境。...
CentOS 操作系统 7.0 64位 Apache Http Server Apache/2.4.6 (CentOS) Tomcat 7.0.39 tomcat-connectors 1.2.41 JDK 1.7.0_79 ...apache http server与tomcat容器的整合集成,使得服务器同时支持PHP和Java。
在讨论Apache与Tomcat的整合之前,首先需要了解Apache和Tomcat的基本概念。Apache HTTP Server(通常简称为Apache)是一个广泛使用的开源网页服务器,它非常擅长处理静态内容,如HTML页面和图片等。而Tomcat是一个...
Apache2与Tomcat整合是为了实现更高效的Web服务部署,特别是在处理高并发和负载均衡时。Apache作为成熟的HTTP服务器,常被用作前端服务器,负责静态资源的处理和动态请求的分发,而Tomcat作为Java应用服务器,主要...
Apache 与 Tomcat 整合是为了充分利用两者的优势,Apache 作为静态内容的高效服务器,而 Tomcat 是一个轻量级的 Java 应用服务器,特别适合处理 JSP 和 Servlet。以下是如何实现 Apache 与 Tomcat 整合的详细步骤: ...
这篇文章将探讨如何在Linux环境下整合Apache与Tomcat,以便更有效地发布Web应用。 首先,让我们了解Apache和Tomcat的基本功能。Apache主要负责处理静态网页内容,如HTML、CSS、JavaScript等,而Tomcat则是Java应用...
1. **安装Apache和Tomcat**:确保在Windows系统上分别安装了Apache和Tomcat。Apache作为Web服务器,Tomcat作为应用服务器。 2. **加载mod_jk模块**:将`mod_jk.so`复制到Apache的`modules`目录,并在Apache的配置...
Apache与Tomcat的整合主要依赖于Apache的mod_jk模块,这是一个负载均衡器和反向代理,它允许Apache与Tomcat之间进行通信。通信协议通常是基于JK的,包括JK1和已被弃用的JK2。在这个过程中,Apache通过mod_jk模块将...
将Apache与Tomcat整合,可以实现动态和静态内容的高效分发,提高Web服务的性能。下面我们将详细介绍如何进行Apache与Tomcat的整合配置。 1. **安装与准备** - 首先,你需要在服务器上分别安装Apache HTTP服务器和...
Apache 与 Tomcat 整合是 Web 服务领域常见的架构模式,主要目的是结合两者的优点,以实现更高效、更灵活的动态内容处理。Apache 是一个功能强大的 Web 服务器,擅长处理静态内容,如 HTML、CSS 和 JavaScript 文件...
- 访问`http://localhost/sipityweb`和`http://localhost:8088/sipityweb`,如果内容相同,表示Apache与Tomcat的整合成功。 **知识点详解**: - **Apache**:Apache HTTP Server是世界上最流行的Web服务器,它...
总的来说,这个"apache web整合Tomcat工具"简化了在Windows环境下设置Apache与Tomcat集成的过程,使得开发者可以更专注于应用开发,而不是服务器配置。通过合理配置,可以实现高效的Web服务,既发挥了Apache处理静态...
在实际应用中,为了充分利用两者的优势,通常会将Apache与Tomcat进行整合,以实现更高效的Web服务。在这个过程中,Apache的mod_jk模块起到了关键作用。 mod_jk是Apache的一个模块,其主要任务是连接Apache和Tomcat...
在RHEL6操作系统中,Apache和Tomcat的安装整合是一个常见的任务,这使得Apache能够作为一个Web服务器处理静态内容,而Tomcat则负责处理动态内容,如JSP程序。以下是详细的步骤: 1. **Apache的安装**: - 首先,你...