jiupima 发表于 2008-01-02 11:10

首先下载安装apache和tomcat ,connectors等在http://apache.org上下。

整合apche和tomcat,主要两种方案;

方案一:mod整合。采用jk2或jk任意一种connector整合, 建议用jk的mod整合,jk2由于开发者的原因可能对新版本的apache支持有问题

JK的安装
把mod_jk_2.2.4.so拷贝到apche安装目录的\modules\下.

配置服务器整合:

1、配置Tomcat
查找tomcat目录下的conf/workers.properties文件,并对比下方文本内容,如有不同以下方内容为准修改。
workers.tomcat_home=d:\Tomcat #让mod_jk模块知道Tomcat的位置
workers.java_home=d:\Java\jre1.5.0_06 #让mod_jk模块知道jre的位置
ps=\
worker.list=ajp13 #模块版本
worker.ajp13.port=8009 #工作端口,若没占用则不用修改
worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改
worker.ajp13.type=ajp13 #类型
worker.ajp13.lbfactor=1 #代理数,不用修改

如果文件不存在则创建。并填充上述内容。

2、配置Apache
打开d:\Apache\Apache2\conf下的httpd.conf,在最后加入下面这段代码并保存。
#设置Apache与Tomcat之间的连接,让Apache遇到jsp文件时,在后台将其交由Tomcat去处理
LoadModule jk_module modules/mod_jk_2.0.55.so
#此处mod_jk的文件为你下载的文件
JkWorkersFile "d:/Tomcat/conf/workers.properties"
#指定tomcat监听配置文件地址
JkLogFile "d:/Tomcat/logs/mod_jk2.log"
#指定日志存放位置
JkLogLevel info

#设置虚拟主机
<VirtualHost localhost>
ServerAdmin localhost
DocumentRoot d:/test1
#您的站点项目所在路径,应与tomcat中的目录设置相同
ServerName localhost
DirectoryIndex index.html index.htm index.jsp
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /servlet/* ajp13
#让Apache支持对servlet传送,用以Tomcat解析
JkMount /*.jsp ajp13
#让Apache支持对jsp传送,用以Tomcat解析
JkMount /*.do ajp13
#让Apache支持对.do传送,用以Tomcat解析
</VirtualHost>

# 开头的行为注释,可以删除。此处的配置我是以设置虚拟目录,重新指定了serverName,DocumentRoot路径的方式配置站点,实际上, Apache的配置可以非常灵活,你也可以不采用虚拟目录的方式,而直接去修改站点的默认配置,使用任意文本编辑工具,搜索如ServerName, DocumentRoot,ServerAdmin等相关项,然后将该项的配置根据你的实际情况进行修改即可。我建议大家可以多多尝试不同的配置,这是一种很有乐趣的体验。
所有的修改完成这后,再次执行d:\Apache\Apache2\bin\Apache.exe -t 如果看到"Syntax OK",说明你所有配置无误,双击窗口的托盘中的图标,然后点击Start运行。
在地址栏中分别输入http://localhost/,与http://localhost:8080/若结果相同,Apache与Tomcat整合成功

方案二:

apache2.2以上的版本,可以考虑用mod_proxy_ajp。

首先看一下httpd.conf中是否正确load了mod_proxy模组。如果没有的话,重新编译安装apache22。mod_proxy_ajp的配置非常简单。基于灵活性考虑,最好单独在虚拟主机中配置。我的配置如下:
<VirtualHost *>
ServerName localhost
ProxyPass / ajp://localhost:8009/
#ProxyPass / http://localhost:8180/
ProxyPassReverse / ajp://localhost:8009/
#ProxyPassReverse / http://localhost:8180/
</VirtualHost>
说明:/表示把所有发往80端口的http访问请求自动转向到tomcat监听的8080端口(FreeBSD port安装的tomcat默认监听8180端口)。lynx localhost,可以看到tomcat的welcome页。说明安装成功。
注意:由于/的设置把所有80端口的访问都forward到了tomcat,所以这可能不是我们所希望的,这种情况下apache只是个转发代理。一般情况下,我们希望apache同时能提供mod_perl、php功能。因此需要单独为jsp的应用配置URI映射。 配置同样很简单 ProxyPass /myapp ajp://localhost:8009/,ProxyPassReverse /myapp ajp: //localhost:8009/即可。
可以看到,比起前代的mod_jk来讲,mod_proxy_ajp非常简单方便。mod_jk的配置简直是一场噩梦。哈哈,还等什么,快升级吧。

方案三:用mod_jk2整合。

将文件mod_jk2.so 复制到Apache 的模块目录(%Apache%\Apache2\modules)中。
备份Tomcat 和Apache 的缺省配置文件,以防不测。
其次,编辑配置文件。具体的配置文件有四个,
它们分别是:httpd.conf、jk2.properties、server.xml、workers2.properties。

a、 修改ApacheRoot\Apache2\conf\httpd.conf 文件
1>修改web 主目录,即将
DocumentRoot "D:/websrv/Apache2/htdocs" 改为自己的web主目录
eg:   DocumentRoot    "D:/websrv/myweb"
2>修改web 主目录对应的目录,即将
<Directory "D:/websrv/Apache2/htdocs">改为
eg:   <Directory "D:/websrv/myweb" >
此目录块要与DocumentRoot的路径对应,块中的语法是对此块对应Web主目录的操作权限设置。
3>修改目录缺省的web 文件,即将
DirectoryIndex index.html index.html.var 改为
eg:      DirectoryIndex index.html index.html.var index.jsp
语法说明:当向Apache 发出请求时容器将顺次去找index.html,如果没有,将接着找index.htm,最后找index.jsp。
4>修改cgi-bin 所在目录,即将
ScriptAlias /cgi-bin/ "D:/websrv/Apache2/cgi-bin/"改为
ScriptAlias /cgi-bin/ "D:/websrv/myweb/cgi-bin/"
<Directory "D:/websrv/Apache2/cgi-bin"> 改为
<Directory "D:/websrv/myweb/cgi-bin">
如果程序中需要用到cgi时修改以上两处。
5>添加指定的虚拟目录(别名),及其对应目录的属性
#这是测试用的文件夹,能执行jsp 文件。
Alias/jj/         "D:/websrv/myweb/jj/"
<Directory       "D:/websrv/myweb/jj" >
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
</Directory>

   Alias/chengxin/   "D:/websrv/myweb/chengxin/"
   <Directory            "D:/websrv/myweb/chengxin" >
      AllowOverride None
       Options IncludesNoExec
      AddOutputFilter Includes html
      AddHandler type-map var
      Order allow,deny
       Allow from all
   </Directory>
#在web主目录myweb中添加了两个测试应用程序jj和chengxin
语法说明:

      Alias/web程序别名/   "程序根目录/"                            ##别忘啦最后有“/”
      <Directory            "程序根目录" >
      AllowOverride None
      Options IncludesNoExec
      AddOutputFilter Includes html                           对此程序的具体操作权限设置   
      AddHandler type-map var                                 
      Order allow,deny
       Allow from all
</Directory>
注意:
                   程序根目录必须和%Tomcat5%\conf\server.xml中配置的虚拟目录相吻合。
         6>修改缺省的字符集,使之支持中文,即将
AddDefaultCharset ISO-8859-1 改为
AddDefaultCharset GB2312
            7>在文件最后添加如下内容,以加载jk2 模块
<IfModule !mod_jk2.c>
LoadModule jk2_module modules/mod_jk2.so
</IfModule>

b、 修改Tomcat5Root\conf\jk2.properties 文件
在文件最后添加如下内容,打开shm 文件设置
#Shared memory directive
shm.file=ApacheRoot/Apache2/logs/jk2.shm
可以在ApacheRoot/Apache2/logs/下新建jk2.shm文件
c、 修改Tomcat5Root\conf\server.xml 文件
在apache 中对应指定的虚拟目录,server.xml 中也应指定,所以在
  <!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0">
-->
的下面添加
<Context path="/jj" docBase="d:\websrv\myweb\jj" debug="0" reloadable="true"
crossContext="true"></Context>
<Context path="/chengxin" docBase="d:\websrv\myweb\chengxin" debug="0" reloadable="true"
crossContext="true"></Context>




d、 修改ApacheRoot\Apache2\conf\workers2.properties 文件
注意:如果此文件不存在,则在目录ApacheRoot \Apache2\conf 下新建一个。
添加如下内容
#***************************************************************************
# only at beginnin. In production uncomment it out 必须在文件开头定义

level=DEBUG
#define the shared memory file 定义shm 文件

file=ApacheRoot /Apache2/logs/jk2.shm    #指向Apache文件下的logs/jk2.shm文件
size=1048576
# Define the communication channel 定义信道

tomcatId=localhost :8009
# define the worker

channel=channel.socket:localhost:8009
#jk2 的状况,可通过http://localhost/status 查看

info=Status worker, displays runtime information
channel=channel.socket:localhost:8009
# Uri mapping Uri 映射
#会把http://域名/path/里的所有请求发给tomcat。
#而会把http://域名/path 里的jsp 文件请求发给tomcat 处理。
#此path 可以是apache 的虚拟目录,也可以是tomcat 的虚拟目录,
#还可以是tomcat 的物理目录,这儿是配置jk2 的关键,试试就知道了。

worker=status:localhost:8009
group=status:
#                ###表示web主目录下的所有请求都给TomCat处理
    ###表示web主目录下的jj程序中所有jsp文件请求都给TomCat处理
   ###表示web主目录下的changxin程序中所有请求都给TomCat处理
#
worker=ajp13:localhost:8009
info=Map the whole webapp
注意:此文件中的8009端口设置必须与TomCatRoot\conf\server.xml文件中
       <Connector port="8009"
               enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />
对应。
到此已基本配置完成。

如果要通过配置虚拟主机的方法来访问还要进行以下配置:
 以下配置的是一个IP对应多个域名的方法。
1>    在apacheRoot\apache2\conf\httpd.conf修改
            Listen   80                                     #监听端口为80
#NameVirtualHost*:80 为
NameVirtualHost 192.168.1.208:80
##################################Ip影射到程序主目
<VirtualHost 192.168.1.208:80>
#管理员Email
    ServerAdmin      webmaster@dummy-host.example.com
    #jjweb程序目录
DocumentRoot    d:/websrv/myweb/jj
#域名
   ServerName         ccjg.test.com
#日志
ErrorLog          logs/dummy-host.example.com-error_log
    CustomLog       logs/dummy-host.example.com-access_log common
#多个域名对应一个程序是可以在此添加
ServerAlias   ccjg.test.gov.cn
#注意:
#每在ServerName或ServerAlias添加一个域名时相应的就应该在
#TomcatRoot\conf\server.xml文件中添加相应的<Host>块标记与之对应
#如果要在本机测试则在C:\WINNT\system32\drivers\etc\hosts须添加相应
#的IP对应于你的所设置域名,域名解析时用到
#eg:   192.168.1.208         ccjg.test.gov.cn
#         192.168.1.208         ccjg.test.com   
</VirtualHost>

<VirtualHost    192.168.1.208:80>
    ServerAdmin      webmaster@dummy-host.example.com
#chengxinweb程序目录
    DocumentRoot       d:/websrv/myweb/chengxin
    ServerName         chengxin.test.com
    ErrorLog                logs/dummy-host.example.com-error_log
    CustomLog             logs/dummy-host.example.com-access_log common
ServerAlias         ccjg.test.gov.cn
</VirtualHost>
以上是一个IP对应两个web程序。
2>    在TomCatRoot\conf\server.xml中添加对应的<Host>块
       <Host name="ccjg.test.com" debug="0"
         appBase="d:/websrv/jj"
         unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="" debug="0"/>
      <logger className="org.apache.catalina.logger.FileLogger"
      directory="logs" prefix="cust1_log." suffix=".txt"
      timestamp="true"/>
</Host>
<Host name="ccjg.test.gov.cn" debug="0"
         appBase="d:/websrv/jj"
         unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="" debug="0"/>
      <logger className="org.apache.catalina.logger.FileLogger"
      directory="logs" prefix="cust1_log." suffix=".txt"
      timestamp="true"/>
      </Host>
到此OK

方案四:

mod_jk要與Apache版本相應,相應不代表相同,能用就行。

安裝Apache、Tomcat,把mod_jk放在任意目錄。

Tomcat的\conf\server.xml內<Engine..></Engine>中加入:

<Listener className="org.apache.jk.config.ApacheConfig" modJk="C:\Program Files\Apache Software Foundation\Apache2.2\modules\mod_jk-apache-2.2.3.so" />
註:指給modJK的路徑是我的路徑哦。

重新启动Tomcat,其conf目錄內會產生auto及jk兩個目錄。把auto目录中的mod_jk.conf 复制到jk目錄內,并把开展名.conf 改为 conf-auto。

到Apache目錄,在其conf目錄內的httpd.conf中最後一行加入:
Include "C:/Program Files/Apache Software Foundation/Tomcat 5.5/conf/jk/mod_jk.conf-auto"

Apache重新启动后,一切大功告成。

可參考:http://tomcat.apache.org/connectors-doc/howto/apache.html中【Using Tomcat auto-configure】一段,其中有說明:
The auto-configure works only for a single Tomcat running on the same machine where Apache (httpd) is running.
意即auto-configure只限於Apache和Tomcat在同一機器上。
页: 1 2 [3]
查看完整版本: Apache+tomcat+jdk+jk安装配置