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