资源描述
Tomcat & apache 整合操作笔记
By seagull 二〇〇九年二月四日星期三
1 关键字
发布目录 jk2.conf workers.properties
2 Tomcat & apache 整合的意义
尽管Tomcat可以作为独立的Web服务器运行,但是Tomcat的Web功能远远没有Apache强大,所以在实际应用中通过 mod_jk2 连接器将 Apache 以及 Tomcat 整合。整合之后,Apache 负责处理静态页面,而 Tomcat 则负责处理动态页面。
3 软件准备
软件
说明
操作系统
Red Hat Enterprise Linux AS release 4 (Nahant Update 8) x86_64 (所有组件默认全部安装)
Tomcat版本
Tomcat5.5.35
apache
Apache/2.2.3(系统自带)
连接器
mod_jk-1.2.23-apache-2.2.x-linux-i686.so
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.23/mod_jk-1.2.23-apache-2.2.x-linux-i686.so
jk2模块通过httpd把jsp等的web请求转发给tomcat,实现不同的文件由不同的解释器解析。注意不同的apache版本要选择不同的连接器版本。
如果第一步的二进制文件有问题,可以先编译一下模板
Jdk版本
"1.6.0_31"
Tomcat 需要根据环境变量设置找到 JDK的安装目录,否则不能正常启动和停止,
4 连接器安装与配置
4.1 JK 安装 (整合apache tomcat)
# tar zxvf tomcat-connectors-1.2.32-src.tar.gz
#cd tomcat-connectors-1.2.32-src/native
# ./configure --with-apxs=/usr/sbin/apxs -with-java-home=/usr/local/java
# make && make install
4.2 将/etc/httpd/conf/ workers.properties /etc/httpd/conf.d/ jk2.conf 两个文件按如下内容配置
配置文件/etc/httpd/conf.d/ jk2.conf,添加如下记录
cat workers.properties
worker.list=node1
workers.java_home=/usr/local/java
worker.node1.type=ajp13
worker.node1.host=localhost
worker.node1.port=8009
配置/etc/httpd/conf/ workers.properties,添加如下记录
cat jk.conf
# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile /etc/httpd/conf/workers.properties
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/httpd/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"
# Send everything for context /examples to worker named worker1 (ajp13)
#JkMount /examples/* worker1
JkMount /*.jsp node1
4.3 Apache 和 Tomcat发布目录设置
要实现 Apache 和 Tomcat 整合,需要设置 Apache 和 Tomcat 的主目录一致,现定于发布目录是:/opt/app/,配置如下:
4.3.1 Tomcat 配置
在service.xml文件中添加:
<Context path="" docBase="/opt/app/" debug="0" />
4.3.2 Apache配置
DocumentRoot "/opt/app/"
DirectoryIndex index.jsp index.html index.html.var
5 启动程序
[root@localhost conf]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@localhost conf]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/jdk
[root@localhost conf]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:
5.1 测试
/usr/jdk 最后在主目录/var/www/html 中创建一个名为 test.jsp 的文件,内容如下:
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# vi test.jsp
[root@localhost html]# cat test.jsp
Hello! The time is <%=new java.util.Date() %>
完成之后,可从客户端访问服务器进行测试:http://192.168.1.200/test.jsp,若出现下面的页面,证明
Apache+Tomcat 的整个整合过程成功!
Hello! The time is Sun Apr 08 10:59:36 CST 2007
5.2 Jk日志、进程分析及
[root@KDSW-TEST1 httpd]# tail -f mod_jk.log
[Thu Feb 05 16:58:28 2009] mengjj 221.204.252.188 0.001775
[Thu Feb 05 16:58:28 2009] mengjj 221.204.252.188 0.002083
[Thu Feb 05 16:58:29 2009] mengjj 221.204.252.188 0.001841
[Thu Feb 05 16:58:29 2009] mengjj 221.204.252.188 0.001929
[Thu Feb 05 16:58:30 2009] mengjj 221.204.252.188 0.001822
[Thu Feb 05 16:58:30 2009] mengjj 221.204.252.188 0.001834
[Thu Feb 05 16:58:30 2009] mengjj 221.204.252.188 0.001462
[Thu Feb 05 16:58:39 2009] mengjj 221.204.252.188 0.002171
[Thu Feb 05 16:58:55 2009] mengjj 221.204.252.188 0.002472
[Thu Feb 05 17:26:28 2009] mengjj 221.204.252.188 0.001697
[root@KDSW-TEST1 httpd]# lsof -i :8009
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
java 26574 seagull 11u IPv6 31920824 TCP *:8009 (LISTEN)
java 26574 seagull 21u IPv6 31920827 TCP localhost.localdomain:8009->localhost.localdomain:40696 (ESTABLISHED)
java 26574 seagull 23u IPv6 31920958 TCP localhost.localdomain:8009->localhost.localdomain:40697 (ESTABLISHED)
java 26574 seagull 24u IPv6 31921013 TCP localhost.localdomain:8009->localhost.localdomain:40698 (ESTABLISHED)
java 26574 seagull 25u IPv6 31921016 TCP localhost.localdomain:8009->localhost.localdomain:40699 (ESTABLISHED)
java 26574 seagull 26u IPv6 31921024 TCP localhost.localdomain:8009->localhost.localdomain:40700 (ESTABLISHED)
java 26574 seagull 27u IPv6 31921027 TCP localhost.localdomain:8009->localhost.localdomain:40701 (ESTABLISHED)
java 26574 seagull 28u IPv6 31921048 TCP localhost.localdomain:8009->localhost.localdomain:40702 (ESTABLISHED)
java 26574 seagull 29u IPv6 31921051 TCP localhost.localdomain:8009->localhost.localdomain:40703 (ESTABLISHED)
httpd 26627 seagull 20u IPv4 31920957 TCP localhost.localdomain:40696->localhost.localdomain:8009 (ESTABLISHED)
httpd 26628 seagull 20u IPv4 31921012 TCP localhost.localdomain:40697->localhost.localdomain:8009 (ESTABLISHED)
httpd 26629 seagull 20u IPv4 31921015 TCP localhost.localdomain:40698->localhost.localdomain:8009 (ESTABLISHED)
httpd 26630 seagull 20u IPv4 31921023 TCP localhost.localdomain:40699->localhost.localdomain:8009 (ESTABLISHED)
httpd 26631 seagull 20u IPv4 31921026 TCP localhost.localdomain:40700->localhost.localdomain:8009 (ESTABLISHED)
httpd 26632 seagull 20u IPv4 31921047 TCP localhost.localdomain:40701->localhost.localdomain:8009 (ESTABLISHED)
httpd 26633 seagull 20u IPv4 31921050 TCP localhost.localdomain:40702->localhost.localdomain:8009 (ESTABLISHED)
httpd 26634 seagull 20u IPv4 31921053 TCP localhost.localdomain:40703->localhost.localdomain:8009 (ESTABLISHED)
[root@KDSW-TEST1 httpd]#
6 FAQ
6.1 在虚拟主机环境下配置的情形的处理
[root@nxt_web conf.d]# cat .host
<VirtualHost *:80>
ServerAdmin webadmin@
DocumentRoot "/data/nxtweb/
DirectoryIndex index.jsp index.htm index.html index.html.var index.php
ServerName
ErrorLog "|/usr/local/sbin/cronolog /data/nxtweb/
CustomLog "|/usr/local/sbin/cronolog /data/nxtweb/ combined
AddDefaultCharset utf-8
<Directory "/data/nxtweb/
AddDefaultCharset UTF-8
AllowOverride All
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ "/data/nxtweb/
<Directory "/data/nxtweb/
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
JkMount /seagull/* seagull
ProxyPass /seagull http://localhost:38080/seagull
ProxyPassReverse /seagull http://localhost:38080/seagull
</VirtualHost>
[root@nxt_web conf.d]#
6.2 一个apache+多个tomcat(tomcat集群配置)的情形时的处理
6.3 不同的apache版本问题
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.18/mod_jk-apache-2.0.46-linux-i686.so
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.18/mod_jk-apache-2.0.49-linux-i686.so
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.18/mod_jk-apache-2.0.52-linux-x86_64.so
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.25/i386/mod_jk-1.2.25-httpd-2.0.59.so
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.25/i386/mod_jk-1.2.25-httpd-2.2.4.so
等等,不同apache 及32 64 位系统对应不同的版本
6.4 Jk jk2的区别
6.5 Jk源码编译代替用二进制包安装的处理
第 8 页 共 8 页
展开阅读全文