日期:2014-05-16  浏览次数:47701 次

tomcat整合apache小记
     由于工作原因,这几天整合了一下apache和tomcat,网上找了很多资料,貌似网上各位大哥的资料并不完全一样,呵呵,不过原理大体是一样的,结合了一下大家的资料,自己也整合了一份:
     首先说一下原理吧,apache和tomcat支持现今流行的各种操作系统(linux、windows等),apache作为网站服务器软件对静态html页面,和图片文件等的解析效率比tomcat强,同时也支持Java servlet、jsp,tomcat除了支持Java servlet,jsp外,也可以当做网站服务器使用,不过单单用tomcat的话,一旦网站的访问量过大,占用系统资源的比例也会相应的提高。如果把apache和tomcat整合起来的话,apache就可以分担tomcat的一部分工作,apache负责静态页面的处理,tomcat负责动态页面的处理,具体处理哪些文件,可以根据不同的需要更改apache的配置文件的。
     再说下整合的基本原理,就以接受jsp和html为例,在实际操作中,主要是apache作为主服务器,当监听到jsp或者servlet请求时,将该请求转发给tomcat服务器,tomcat进行解析后,发回apache,再由apache发回用户,在tomcat 里面conf目录的server.xml文件中,有两个的监听端口,分别是默认的8080端口<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443" />和默认的8009端口<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />,8080主要是用于提供web服务,8009主要用于监听来自apache的请求,当tomcat接收到servlet和jsp请求时,就像tomcat的8009端口发送请求,交由tomcat处理后返回给apache,由apache返回给用户。
整合步骤如下:
运行环境:windows xp home
所需软件:JDK1.6.0_10,tomcat6,apache_2.2.4-win32-x86-no_ssl.,mod_jk-1.2.28-httpd-2.2.4.so
下载地址:
  • JDK:百度一下,你就知道,哈哈...
  • tomcat6:http://tomcat.apache.org/download-60.cgi选择code目录下的zip包。
  • apache_2.2.4-win32-x86-no_ssl:http://archive.apache.org/dist/httpd/binaries/win32/
  • mod_jk-1.2.28-httpd-2.2.4.sohttp://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.28/
下面是配置步骤:
安装软件,并且配置环境变量。
安装软件没有需要特别注意的,安装后配置jdk和tomcat环境变量。
注:配置时把tomcat和apache关掉。
将mod_jk-1.2.28-httpd-2.2.4.so更名为mod_jk.so(对以后配置时比较方便,也可不改),放到D:\softwareinstall\Apache Software Foundation\Apache2.2\modules(apache的安装目录下);


第一步、配置tomcat:
在server.xml中找到:
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
</Host>


在其中添加:
<Context path="" docBase="D:/www/new8580/ROOT" debug="0" reloadable="true" crossContext="true"/>

其中docBase指向的是项目部署的路径(必须和apache的虚拟目录一致),path必须为空。<host>节点里面的name可以为localhost也可以为域名,appBase为项目所在的文件夹,由于历史原因,root没有删除,不过没有报错,所以暂且先放着,呵呵,配置后如下:
<Host name="www.8580.net"  appBase="new8580"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
	  <Context path="" docBase="D:/www/new8580/ROOT" debug="0" reloadable="true" crossContext="true"/>
</Host>



第二步、在tomcat的conf目录建workers.properties文件,增加内容如下:
  • workers.tomcat_home=D:\install_path\java_path\Tomcat 6.0#让jk知道tomcat的路径
  • workers.java_home=C:\Program Files\Java\jre6#让jk知道jre的路径
  • ps=\
  • worker.list=ajp13#模块版本,这里比较关键,必须和http.conf一致,如果这个名字改了,apache里面的ajp13也要改。
  • worker.ajp13.port=8009#模块端口,若没被暂用则不用修改
  • worker.ajp13.host=localhost#本机,若上面的apache主机不为localhost,则做相应修改
  • worker.ajp13.type=ajp13#类型
  • worker.ajp13.lbfactor=1#代理数,不修改


第三步、配置apache:
  • 在<IfModule ssl_module>。。。。</IfModule>后面加上如下配置:
  • #设置tomcat和apache的连接让apache接收到jsp或servlet请求时转发给tomcat处理。
  • LoadModule jk_module modules/mod_jk.so#mod_jk.so为刚刚修改的jk文件。
  • JkWorkersFile "D:/softwareinstall/Apache Software Foundation/Tomcat 6.0/conf/workers.properties"#指定tomcat监听的地址
  • JkLogFile "D:/softwareinstall/Apache Software Foundation/Tomcat 6.0/logs/mod_jk2.log"#指定日志存放的地址
  • JkLogLevel info
#设置虚拟主机
<VirtualHost *:80>
        ServerAdmin 344180222@qq.com
        ServerName www.8580.net
        DocumentRoot D:/www/new8580/ROOT
        DirectoryIndex index.html index.htm index.jsp#用户通过域名访问,寻找index.html index.htm index.jsp此配置相当于web.xml里面的<welcome-file-list><welcome-file>index.snc</welcome-file></welcome-file-li