整合apache和tomcat
近期项目需要,想把apache和tomcat整合一起使用,解决动态网页解析和负载均衡两个问题,网上搜了些资料,发现并不理想,于是参考apache官网一些文档做了几遍,最后成功了,现在把整合过程拿出来给大家分享一下。
声明一下我的环境:Tomcat5.5 + Apache 2.2 + CentOS5.1 /RH AS5
1、准备,下载需要的文件。这里假定你已经正确安装配置好了JDK。
到Apache官方网站下载所需要的文件:
httpd-2.2.0.tar.gz
apache-tomcat-5.5.12.tar.gz
jakarta-tomcat-connectors-1.2.15-src.tar.gz,这个其实下载so文件就可以,我在我的环境中试过可用,如果你的环境跟我不一样,那就试试运气,不行的话,再下载源代码,源代码编译也不是很麻烦。
其中httpd和jakarta-tomcat-connectors为源码包,apache-tomcat为二进制包。
2、安装Apache。如果你也是centos5.1 ,默认安装后自动会带上一个apache http服务器,这样就不需要安装了,不过配置路径默认是在/etc/httpd/httpd.conf,如果你安装的话当然路径你可以自己指定,安装默认路径好像是是/usr/local/apache2
# tar xzvf httpd-2.2.0.tar.gz
# cd httpd-2.2.0
# ./configure --prefix=/usr/local/apache2 --enable-so
# make
# make install
3、安装Tomcat。Tomcat自身的版本是不区分linux和windows,下载一个tar.gz 文件就可以使用,这个不需要下载源代码,Tomcat的兼容性还是不错的。
# cp apache-tomcat-5.5.12.tar.gz /usr/local/
# cd /usr/local
# tar xzvf apache-tomcat-5.5.12.tar.gz
# ln -s apache-tomcat-5.5.12 tomcat
4、安装Java,下载linux对应的jdk版本,我的jdk版本是1.6 rpm 版本
#rpm -ivh jdkxxxx.rpm
然后按照要求直接往下面走就可以了。
5、配置环境变量
需要配置至少三个环境变量
编辑环境变量对应配置文件
#vi /etc/profile
输入如下内容:
JAVA_HOME=/usr/java
PATH=/usr/java/bin
CLASSPATH=.:/usr/java/lib
保存,并使用下面命令直接让环境变量生效
#source /etc/profile
6. 进入tomcat目录启动Tomcat
# cd /usr/local/tomcatxxx/bin
#./startup.sh
7. 测试Tomcat是否成功
启动centos下的firefox,地址栏输入:http://localhost:8080/
如果能看到那个小猫的网页就说明Tomcat正常启动了
8. 编译生成mod_jk,如果你下载的是so文件,这个步骤直接复制就可以了。
# tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz
# cd jakarta-tomcat-connectors-1.2.15-src/jk/native
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make
# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/
9、配置。
在/usr/local/apache2/conf/下面建立两个配置文件mod_jk.conf和workers.properties。
# vi mod_jk.conf
添加以下内容:
代码:
# 指出mod_jk模块工作所需要的工作文件workers.properties的位置 JkWorkersFile /usr/local/apache2/conf/workers.properties # Where to put jk logs JkLogFile /usr/local/apache2/logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理 JkMount /servlet/* worker1 JkMount /*.jsp worker1
# vi workers.properties
添加以下内容:
代码:
# Defining a worker named worker1 and of type ajp13 worker.list=worker1 # Set properties for worker1 worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009 worker.worker1.lbfactor=50 worker.worker1.cachesize=10 worker.worker1.cache_timeout=600 worker.worker1.socket_keepalive=1 worker.worker1.socket_timeout=300
再配置httpd.conf,作以下修改:
将Listen 80 修改为 Listen 127.0.0.1:80
将ServerName 修改为 ServerName LocalHost:80
在DirectoryIndex中添加 index.jsp
我的网页放在/var/wwwroot下,所以要修改DocumentRoot
代码:
DocumentRoot "/var/wwwroot" <Directory "/var/wwwroot"> Options Includes FollowSymLinks AllowOverride None Order deny,allow Allow from all XBitHack on </Directory> <Directory "/var/wwwroot/WEB-INF"> Order deny,allow Deny from all </Directory>
增加关于加载mod_jk的语句:
代码:
LoadModule jk_module modules/mod_jk.so Include /usr/local/apache2/conf/mod_jk.conf
最后编辑Tomcat的配置文件server.xml,在HOST段中加入:
代码:
<Context path="" docBase="/var/wwwroot" debug="0" reloadable="true" crossContext="true"/>
在/var/wwwroot下建立一个index.jsp,启动Apache和Tomcat,用浏览器访问http://localhost/,应该可以看到正确的页面了。