win下Apache2+Tomcat7整合配置详解

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

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

httpd.conf 是Apache的主要配置文件,在Apache 安装完成后,可尝试打开 “/Apache 2.2/conf/httpd.conf ” 文件进行修改,下面是 Apache 的常用配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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_homeC:\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 的常用设置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<? 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 文件,输入以下内容。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 所配置的名称相同。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 设置虚拟主机,定义端口为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 进行处理。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache 配置 1. 配置httpd.conf 使用apache自带的proxy模块,去掉注释使其可用 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so 去掉 Include conf/extra/httpd-vhosts.conf的注释 2. 配置httpd-vhosts.conf 内容如下 <VirtualHost *:80> ServerName uambank.6677bank.com ProxyPass / http://uambank.6677bank.com:8080/ ProxyPassReverse / http://uambank.6677bank.com:8080/ </VirtualHost> <VirtualHost *:80> ServerName bbs.6677bank.com ProxyPass / http://bbs.6677bank.com:8090/ ProxyPassReverse / http://bbs.6677bank.com:8090/ </VirtualHost> 3. 修改windows host文件 127.0.0.1 uambank.6677bank.com 127.0.0.1 bbs.6677bank.com tomcat_uambank的设定 Shutdown 端口 <Server port="8005" shutdown="SHUTDOWN"> http 端口 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" /> AJP 端口 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> HOTST 配置 <Host name="uambank.6677bank.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/uambank" reloadable="false" docBase="D:\\jdk\\workspace\\uambank\\uambank\\deploy\\target\\uambank-webapp" workDir="D:/jdk/workspace/work" /> </Host> tomcat_bbs的设定 Shutdown 端口 <Server port="8015" shutdown="SHUTDOWN"> http 端口 <Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" /> AJP 端口 <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" /> HOTST 配置 <Host name="bbs.6677bank.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" reloadable="false" docBase="jforum" workDir="D:/jdk/workspace/work" /> </Host>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值