Tomcat与Http服务器的集成

Tomcat与Http服务器的集成
Tomcat是jsp/servlet container,对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web服务器管理功能方面都不如其他专业的HTTP服务器,如IIS和Apache服务器。
我是以Tomcat5.0.16,apache_2.0.55Http Server,mod_jk-apache-2.0.55.so jk插件进行集成。
一、基本原理
Tomcat的两个常用连接器,
第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。  
第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。

查看conf/server.xml文件,
< Service  name ="Catalina" >
    
< Connector  acceptCount ="100"  connectionTimeout ="20000"  port ="8080"  redirectPort ="8443"  disableUploadTimeout ="true" >
    
</ Connector >
    
< Connector  protocol ="AJP/1.3"  port ="8009"  redirectPort ="8443"  protocolHandlerClassName ="org.apache.jk.server.JkCoyoteHandler" >
    
</ Connector >
    
< Engine  defaultHost ="localhost"  name ="Catalina" >
      
< Host  appBase ="webapps"  name ="localhost" >
        
< Logger  className ="org.apache.catalina.logger.FileLogger"  suffix =".txt"  prefix ="localhost_log."  timestamp ="true" />
      
</ Host >
      
< Logger  className ="org.apache.catalina.logger.FileLogger"  suffix =".txt"  prefix ="catalina_log."  timestamp ="true" />
      
< Realm  className ="org.apache.catalina.realm.UserDatabaseRealm" />
    
</ Engine >
  
</ Service >
根据以上Service,可以tomcat的安装目录找到conf/Catalina/localhost目录,里面的XML文件为配置该service所有的Context,一个xml文件对应一个context配置。
打开admin.xml,
< Context  privileged ="true"  path ="/admin"  displayName ="Tomcat Administration Application"  docBase ="../server/webapps/admin" >
  
< Logger  className ="org.apache.catalina.logger.FileLogger"  suffix =".txt"  prefix ="localhost_admin_log."  timestamp ="true" />
</ Context >
可以看到,配置了一个/admin的context,其docBase为/server/webapps/admin。
二、集成目标
我们对tomcat和http 服务器进行集成的目标就是:让http服务器在80端口进行监听,如果碰到访问静态的html/图片文件访问,直接由http服务器进行处理。如果碰到jsp/servlet等访问,则通过jk插件,转发到tomcat监听的8009端口,由tomcat处理。
三、实施步骤
1、安装apache http server, tomcat. 从略。
2、安装jk插件。
把mod_jk-apache-2.0.55.so拷贝到http server的/modules目录即可。
3、配置apache htpp server,打开conf/httpd.conf文件,
(1)修改Website根目录,
找到DocumentRoot,改为你想放置网站根目录的地方
DocumentRoot "D:/java/Tomcat5.0/webapps/ROOT"
(2)加载jk插件及配置属性
#加载模块
LoadModule jk_module modules/mod_jk-apache-
2.0.55 .so
#工作属性文件
JkWorkersFile conf/workers.properties
#日志存放
JkLogFile logs/mod_jk2.log
#日志等级
JkLogLevel info
#日期格式
JkLogStampFormat 
" [%a %b %d %H:%M:%S %Y] "
#日志格式
JkRequestLogFormat 
" %w %V %T "
#Url转发到tomcat
JkMount /*.jsp worker1
JkMount /*.page worker1
4、新建conf/workers.properties
#让mod_jk模块知道Tomcat
workers.tomcat_home
= D:\java\Tomcat5 .0
  
#让mod_jk模块知道j2sdk
workers.java_home
= D:\java\j2se

#所配置的Tomcat列表
worker.list
= worker1

#工作端口,若没占用则不用修改
worker.worker1.port
= 8009   
  
#Tomcat服务器的地址
worker.worker1.host
= localhost
  
#类型
worker.worker1.type
= ajp13
5、配置tomcat
安装tomcat后,会发现webapps已经有许多目录,其中已有一个Root为tomcat默认的"/"context.
将tomcat webapps下的一些不需要的目录删去,把Root下的文件删除,并把你需要配置的网站内容拷贝到此目录下。
找到conf/Catalina/localhost目录,删除一些没用的xml文件,有些xml文件是tomcat启动时按照webapps的目录自动产生的context。
四、开发时配置
在进行开发时,如果我们使用的是tomcat,我们可以采用此种方法进行配置。
1、通过 http://localhost:6060/index.jsp与 http://localhost/index.jsp访问效果是一样的,
但 http://localhost/aBigPicture.gif的访问可能比直接访问tomcat要快多了。
2、进入 http://localhost:6060/admin,默认user:admin,password为空,
查看service下面的context,最好把当前开发的web的context的reloadable设置为true,我们所做的修改tomcat会自动重新加载,不用重启tomcat就能立即看到新的变化。
3、在eclipse中将网站的源代码发布到tomcat中有两种方法,
一种是采用eclipse自带的depoly功能,将web发布到webapps/ROOT目录,或任一目录,对应的只是修改conf/Catalina/localhost的xml文件。
另一种方法是采用ant,一个xml文件用于全发布(clean,compile,java,copy),另一个xml文件则只发布修改的(compile,copy)。
小项目用第一种方便,每次修改了源代码,只需刷新一下,eclipse就自动帮你depoly到目的地;
当采用第二种时,每次小修改时,需要运行一次ant,把修改的内容重新拷贝并发布过去;如果发布的内容很脏时,有时需全发布(clean,compile,java,copy)。

配置httpd.conf和workers.properties的详细内容,请参考:
http://tomcat.apache.org/connectors-doc/

你可能感兴趣的:(Tomcat与Http服务器的集成)