站长资源服务器

win7下Apache2.2+Tomcat7.0整合配置详解

整理:jimmy2025/1/4浏览2
简介一、简单介绍 Apache、TomcatApache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows、Unix、Linux 等操作系统中运行是最流行的Web服务器软件之一。Apache 反应速度快,运行效率高,但只支持

一、简单介绍 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。

win7下Apache2.2+Tomcat7.0整合配置详解

打开 “控制面板 --> 系统安全 --> 系统 --> 高级系统设置 --> 环境变量”,增加以下配置 :

变量 值 说明 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。

具体的安装步骤可以参考这篇文章:https://www.jb51.net/article/52086.htm

win7下Apache2.2+Tomcat7.0整合配置详解

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 的默认网站存放目录。

win7下Apache2.2+Tomcat7.0整合配置详解

在conf 文件夹的 server.xml 是 Tomcat 最为重要的配置,下面是 server.xml 的常用设置:

<"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 &quot;%r&quot; %s %b" />
    </Host>
   </Engine>
  </Service>
 </Server>

Tomcat 默认使用8080端口处理HTTP请求(因为此端口经常被其他应用程序调用,建议修改)。
完成设置后,输入地址localhost:8080 就可看到 Tomcat 的管理页面。

win7下Apache2.2+Tomcat7.0整合配置详解

可以在 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 共同探讨 !