您的位置:首页 > 运维架构 > Tomcat

整合apache2.2.x和tomcat5.5(转)

2010-02-06 14:13 537 查看
有的同学问,为什么要整合呢,用tomcat不就搞定了吗,而且现在的tomcat5.5以上版本有足够的能力处理静态资源了。但是当你的服务器即需要放Jsp又需要放php的时候,那80端口只能由apache去监听,tomcat无法监听了,整合后tomcat才能作为一个apache的子服务去调用。
Tomcat5.5与apache2.2.x整合,有很多方式,不推荐proxyPass的方式,该方式经过我长期测试,是有bug的。

所以大部分J2EE的网站都是采用JK将二者整合的做法。



Apache版本 2.2.x (x>=3)



过程如下;



1.首先安装apache,装完后把IIS停掉后,再启动 apache 的服务器(安装时根据提示安装即可,安装目录一般不装到系统盘上)



2.安装tomcat(安装之前请先把JDK 安装好)



3.安装tomcat 过程中会需要用户设置用户名和密码,密码部分记住一定要输,最好设置的尽量复杂些



4.安装mysql (安装过程有此不详述)



5.安装完成后把mysql 的驱动程序mysql-connector-java-5.0.4-bin.jar放到apache-tomcat-5.5.23/common/lib下



6.到jk官方去下载者windows对应apache版本的jk ,jk官方下载地址:http://labs.xiaonei.com/apache-mirror/tomcat/tomcat-connectors/jk/binaries/



7.在httpd.conf中配置如下:



a.在该文件中找到这条语句LoadModule rewrite_module modules/mod_rewrite.so 并把这条语句前面的#注释去掉,打开此模块



b.把该条语句LoadModule jk_module modules/mod_jk-1.2.27-win-httpd-2.2.10.so放入该文件中(其中该部分mod_jk-1.2.27-win-httpd-2.2.10.so是你所下的JK的版本号),是为了让tomcat和apache进行通信的



c.把此语句DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs" 改为 DocumentRoot "D:/webroot",(调置所有网站的家目录,若启用虚拟主机功能此设置自动失效)



d.把此语句<Directory "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs">改为<Directory "D:/webroot">(为所有网站设置公共目录属性)



e.把此语句Options Indexes FollowSymLinks改为Options FollowSymLinks (禁止用户进行目录浏览)



f. 把此语句AllowOverride None 改为AllowOverride All(使网站自已的重写规则生效)



g.把此语句DirectoryIndex index.html后添加 index.htm index.jsp 等(为网站目录设置默认首页)



h.#Include conf/extra/httpd-vhosts.conf前的#注释去掉,是为了启用虚拟主机



8.配置apache-tomcat-5.5.23/conf下的server.xml文件 为localhost添加context单元。



a.如果只有一个域名,就只需添加context单元



<Context path="/web1" docBase="D:/webroot/web1" >

<Resource name="jdbc/testDataSource" auth="Container" type="javax.sql.DataSource"

maxActive="100" maxIdle="30" maxWait="10000" removeAbandoned="true"

username="root" password="123" driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://127.0.0.1:3306/web1db?useUnicode=true&characterEncoding=utf8"/>

</Context>

apache httpd.conf中找到#Include conf/extra/httpd-vhosts.conf,去掉#号
Apache Software Foundation/Apache2.2/conf/extra/vhost.conf 文件需要添加一个VirtualHost目录



<VirtualHost *:80> DocumentRoot D:/webroot </VirtualHost>



b.如果多于一个域名,则需要添加host单元(context应包含其中)



<Host name="www.javadn.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

<Alias>javadn.com</Alias>

<Context path="" docBase="D:/webroot/web1">

<Resource name="jdbc/testDataSource" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" removeAbandoned="true" username="root" password="123" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/web1db?useUnicode=true&characterEncoding=utf8" />

</Context>

</Host>



注:Alias别名可以指定多个,每在server.xml文件中添加一个host单元,就必须在vhost.conf文件中对应的添加一个VirtualHost单元,vhost.conf文件中的ServerName的值对应server.xml中的Host单元的name值, ServerAlias 对应server.xml中的 Alias值,如果有多个别名,可以排着往后写例如:ServerAlias javadn.com aaa.com www.bbb.com



附:VirtualHost 常用配置



<VirtualHost *:80>

DocumentRoot D:/webroot

JkMount /*.jsp ajp13(遇到.jsp的文就会通过ajp13交给tomcat来处理,像.jpg,.gif等文件则由apache来处理)

JkMount /*.do ajp13

ServerName www.javadn.com

ServerAlias javadn.com aaa.com www.bbb.com

</VirtualHost>



以上.do和.jsp 文件交由tomcat来处理;网站中的静态文件都交由apache来处理,因为apahce本身处理静态文件的速度比tomcat要快 ,这样一来动态文件由tomcat来处理,静态文件由apache来处理,不但减轻了tomcat的负担而且还有效的提高了网站的访问速度。



重启Tomcat,重启Apache,成功。就是这么简单,注意上面的ajp13,直接用就可以,我发现在Apache2.2.3以后的jk版本中已经默认实现了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: