win7下Apache2.2+Tomcat7.0整合配置详解
一、简单介绍 apache、tomcat
apache http server(简称 apache),是 apache 软件基金协会的一个开放源码的网页服务器,可以在 windows、unix、linux 等操作系统中运行是最流行的web服务器软件之一。apache 反应速度快,运行效率高,但只支持html等静态页面(加载插件后也可支持 php 页面)。
apache tomcat 是由 apache 软件基金协会与 sun 公司联合开发的一款web服务器,它除了支持html等静态页面外,还支持jsp、servlet 。
在相同的运行环境下,tomcat 对静态页面的反应速度没有 apache 灵敏,整合 apache 与 tomcat 能使系统运行于一个良好环境下,提高系统效率。
二、软件包下载
运行环境:windows 7
apache 2.2 下载:http://httpd.apache.org/download.cgi
tomcat 7.0 下载:http://tomcat.apache.org/download-70.cgi
jdk 6 下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html
mod_jk.mo 连接包下载:http://apache.etoak.com//tomcat/tomcat-connectors/jk/binaries/windows/
三、jdk 安装
jdk (java development kit) 是 sun 针对java开发员的产品,是现今使用最广泛的java sdk。jdk 是整个java的核心,包括了java运行环境和基础类库等。常用版本包括 jdk 6、jdk 7、jdk 8。
成功安装 jdk 6 后,必须设置环境变量,让系统感知并能调用 jdk 6。
打开 “控制面板 --> 系统安全 --> 系统 --> 高级系统设置 --> 环境变量”,增加以下配置 :
变量 | 值 | 说明 |
java_home | c:\ jdk1.6.0_30 | 写入jdk安装的路径 |
path | ;%java_home%\bin | 在path原有值上加入此值 |
classpath | ;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar | 在classpath的原有值上加入此值 |
四、apache 2.2 安装
运行 apache 2.2 安装包, 在安装过程可以设置域名、服务器名称和端口,apache的默认端口为80。
具体的安装步骤可以参考这篇文章:
httpd.conf 是apache的主要配置文件,在apache 安装完成后,可尝试打开 “/apache 2.2/conf/httpd.conf ” 文件进行修改,下面是 apache 的常用配置:
serverroot "c:/program files/apache software foundation/apache2.2" # 定义配置文件、日志文件等的根目录,通常为apache2.2安装的要目录 <ifmodule mpm_winnt.c> threadsperchild 250 maxrequestsperchild 0 </ifmodule> # <ifmodule prefork.c> # ....... # </ifmodule> # <ifmodule worker.c> # ....... # </ifmodule> # apache 支持mpm多路处理模块,mpm是一种多进程与多线程相混合的模式 # apache 为 unix、os/2、beos 系统定义了 perwork、worker、beos 等多种模式 # 但在windows下只支持winnt模式 # threadperchild 定义常用线程数、maxrequestsperchild 定义最多线程数 listen 8000 # 设置 apache 的监听路径,一般默认为127.0.0.1:80端口,但由于80经常被iis等进程所占用, # 建设改用另一个端口,此处使用8000端口 loadmodule actions_module modules/mod_actions.so loadmodule alias_module modules/mod_alias.so loadmodule asis_module modules/mod_asis.so loadmodule auth_basic_module modules/mod_auth_basic.so # loadmodule auth_digest_module modules/mod_auth_digest.so .......... .......... # 设置模块处理 <ifmodule !mpm_netware_module> <ifmodule !mpm_winnt_module> user daemon group daemon </ifmodule> </ifmodule> # 如果你想使httpd以另外的用户或组来运行,你必须在开始时以root方式启动 # 然后再将它切换为你想要使用的用户或组。 serveradmin leslies2@163.com # 定义管理员邮箱,当apache出错时将把错误信息发到此地址 servername 127.0.0.1 # 如果你的主机没有注册dns名,在这里键入它的ip地址 documentroot "e:/apache webs" # 定义发布文件的根目录 <directory /> order deny,allow deny from all </directory> # 为特定的目录配置一组默认指令,禁止访问根目录的文件 <directory “e:/apache webs/website1”/> order deny,allow </directory> # 允许客户访问website1下的目录 errorlog "logs/error.log" # errorlog:错误日志文件定位。 loglevel warn # loglevel:控制记录在错误日志文件中的日志信息数量。 # 包括:debug,info,notice,warn,error,crit,alert,emerg。 <ifmodule log_config_module> logformat "%h %l %u %t \"%r\" %>s %b \"%{referer}i\" \"%{user-agent}i\"" combined logformat "%h %l %u %t \"%r\" %>s %b" common <ifmodule logio_module> logformat "%h %l %u %t \"%r\" %>s %b \"%{referer}i\" \"%{user-agent}i\" %i %o" combinedio </ifmodule> customlog "logs/access.log" common </ifmodule> # 日志访问格式设置 <ifmodule alias_module> scriptalias /cgi-bin/ "c:/program files/apache software foundation/apache2.2/cgi-bin/" </ifmodule> # 设定默认cgi脚本目录及别名 <directory "c:/program files/apache software foundation/apache2.2/cgi-bin"> allowoverride none options none order allow,deny allow from all </directory> # 设定默认cgi脚本目录的属性 defaulttype text/plain # 设定默认mime内容类型 <ifmodule mime_module> typesconfig conf/mime.types addtype application/x-compress .z addtype application/x-gzip .gz .tgz </ifmodule> # 指定mime类型映射文件 <ifmodule ssl_module> sslrandomseed startup builtin sslrandomseed connect builtin </ifmodule> # ssl默认配置
完成配置后,启动apache 2.2,在 "e:\\apache webs\website1" 添加静态页面 index.html。
最后打开 http://localhost:8000/index.html,测试 apache 2.2 能否正常运行。
五、tomcat 7 安装
运行 tomcat 7 安装包,完成安装后,打开 “控制面板 --> 系统安全 --> 系统 --> 高级系统设置 --> 环境变量”,增加以下配置 :
变量 | 值 |
tomcat_home | c:\program files\apache software foundation\tomcat 7.0 |
path | ;%tomcat_home%\lib;%tomcat_home%\lib\servlet-api.jar;%tomcat_home%\lib\jsp-api.jar |
在 tomcat 的目录下,conf 文件夹中包含 tomcat 的核心配置,logs 文件夹包含 tomcat 的日志记录 , webapps 文件夹是 tomcat 的默认网站存放目录。
在conf 文件夹的 server.xml 是 tomcat 最为重要的配置,下面是 server.xml 的常用设置:
<?xml version='1.0' encoding='utf-8'?> <!-- server 属性说明 port:指定一个端口,这个端口负责监听关闭tomcat的请求 shutdown:向以上端口发送的关闭服务器的命令字符串 --> <server port="8006" shutdown="shutdown"> <!--定义多个监听--> <listener classname="org.apache.catalina.core.aprlifecyclelistener" sslengine="on" /> <listener classname="org.apache.catalina.core.jasperlistener" /> <listener classname="org.apache.catalina.core.jrememoryleakpreventionlistener" /> <listener classname="org.apache.catalina.mbeans.globalresourceslifecyclelistener" /> <listener classname="org.apache.catalina.core.threadlocalleakpreventionlistener" /> <!--定义共用资源--> <globalnamingresources> <resource name="userdatabase" auth="container" type="org.apache.catalina.userdatabase" description="user database that can be updated and saved" factory="org.apache.catalina.users.memoryuserdatabasefactory" pathname="conf/tomcat-users.xml" /> </globalnamingresources> <!--<service>元素由org.apache.catalina.service接口定义,它包含一个<engine>元素, 以及一个或多个<connector>,这些connector元素共享用同一个engine元素--> <service name="catalina"> <!--<connector>元素代表与客户程序交换信息,它可以接收客户的请求,并向客户返回响应结果--> <!--定义http协议的处理方式,处理接口默认为8080 由于此接口经常被其他应用程序调用,建议修改接口--> <connector port="8081" protocol="http/1.1" connectiontimeout="20000" redirectport="8443" /> <!--定义ajp/1.3协议的处理方式,此为整合 tomcat+apache 的核心协议,请慎重处理 --> <connector port="8009" protocol="ajp/1.3" redirectport="8443" /> <!--每个<service>元素只能包括一个<engine>元素. <engine>元素处理在同一个<service>中所有<connector>元素接收到的客户请求--> <engine name="catalina" defaulthost="localhost"> <!-- realm是一个存储用户名,密码以及和用户名相联系的角色的”数据库” 用户名,密码可以用来验证用户对一个或多个web应用程序的有效性。--> <realm classname="org.apache.catalina.realm.lockoutrealm"> <realm classname="org.apache.catalina.realm.userdatabaserealm" resourcename="userdatabase"/> </realm> <!--<host>元素定义了一个虚拟主机,它可以包含一个或多个web应用--> <host name="localhost" appbase="webapps" unpackwars="true" autodeploy="true"> <valve classname="org.apache.catalina.valves.accesslogvalve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </host> </engine> </service> </server>
tomcat 默认使用8080端口处理http请求(因为此端口经常被其他应用程序调用,建议修改)。
完成设置后,输入地址localhost:8080 就可看到 tomcat 的管理页面。
可以在 webapps 目录下新建 index.jsp 页面,启动 tomcat ,测试 tomcat 能否正常运行。
六、整合 apache+tomcat
在 apache、tomcat 都能正常运行的情况下,把 mod_jk.mo 拷贝到 "/apache2.2/modules"
在 “/tomcat 7.0/conf ” 文件夹下增加 workers.properties 文件,输入以下内容。
workers.tomcat_home=c:\program files\apache software foundation\tomcat 7.0 #让 mod_jk 模块感知 tomcat workers.java_home=c:\program files\java\jdk1.6.0_30\jre #让 mod_jk 模块感知 jre ps=\ #指定文件路径分割符 worker.list=config1 worker.config1.port=8009 #工作端口,此端口应该与server.xml中connector元素的 ajp/1.3 协议所使用的端口相匹配 worker.config1.host=localhost #tomcat服务器的地址 worker.config1.type=ajp13 #类型 worker.config1.lbfactor=1 #负载平衡因数
注意:
worker.list=config1中,conifg1为自定义名称,但此名称必须与下文所述的 “/apache 2.2/conf/httpd.conf ” 文件中 ,jkmount 指令对应的名称相匹配。
加入workers.properties 文件后,可修改 “/apache 2.2/conf/httpd.conf ” 文件,加入以下配置。
注意 jkmount 指令中的变量必须与worker.list 所配置的名称相同。
# 设置虚拟主机,定义端口为8000 <virtualhost 127.0.0.1:8000> servername 127.0.0.1 #定义服务名称 documentroot "c:/program files/apache software foundation/tomcat 7.0/webapps" #定义站点项目所在路径,把路径指向 tomcat 中的默认网站目录 directoryindex index.html index.htm index.jsp errorlog logs/shsc-error_log.txt customlog logs/shsc-access_log.txt common #例子1,让 apache 支持对webapps/sun.shop/blog 中页面传送 jkmount /sun.shop/blog/* config1 #例子2,向apache请求此文件夹内页面时,系统将转向用tomcat解析 jkmount /*.jsp config1 #例子3,向 apache 请求jsp页面时,用 tomcat 进行解析 jkmount /*.do config1 #例子4,向 apache 请求.do 动作时, 用 tomcat 进行解析 jkmount /*.action config1 #例子5,向 apache 请求 .action 动作时, 用 tomcat 进行解析 </virtualhost> # 允许客户端访问此路径 <directory "c:/program files/apache software foundation/tomcat 7.0/webapps"> options indexes followsymlinks allowoverride none order allow,deny allow from all </directory> loadmodule jk_module modules/mod_jk.so # 此处 mod_jk.so 文件为你下载的文件 jkworkersfile "c:/program files/apache software foundation/tomcat 7.0/conf/workers.properties" # 指定tomcat监听配置文件地址 jklogfile "c:/program files/apache software foundation/tomcat 7.0/logs/mod_jk2.log" # 指定日志存放位置 jkloglevel info
注意:
jkmount /*.jsp config1 指令代表当客户端向 apache 发送 *.jsp 页面请求时,把处理指向 tomcat。当使用 struts时建议使用 *.action、*.do等后缀命名动作,否则若使用无后缀命名时,加入 jkmount /* config1命令,apache 则会把包括 *.html等静态页面所有请求,都转向 tomcat。
完成以上配置后,重启 apache、tomcat。此时 apache、tomcat 的默认目录为 “c:/program files/apache software foundation/tomcat 7.0/webapps ”,对http请求,apache 使用8000端口,tomcat 使用 8081 端口。在默认目录下加入index.jsp 页面后,直接向 apache 发送 http://localhost:8000/index.jsp 页面请求,可见 apache 会把请求转向 tomcat 进行处理。
对java开发有兴趣的朋友欢迎加入qq群:174850571 共同探讨 !