A Cooly Weblog

   ::  ::  ::  ::  :: 管理

Apache与Tomcat平台全面解决方案

Posted on 2007-04-29 13:39 acooly 阅读(2947) 评论(1)  编辑  收藏 所属分类: WEB开发服务器安装配置

 

WEB 服务器解决方案

Apache+Tomcat


                                                                    作者:张浦

                                                                    2007-4-26

 

1.   概述

1.1.   本文目的

1.2.   环境及文档约定

2.   JDK安装配置

2.1.   安装JDK

2.2.   设置系统JAVA环境

3.   TOMCAT安装配置

3.1.   获取Tomcat

3.2.   安装Tomcat

3.2.1.   安装

3.2.2.   验证安装

3.2.3.   常见问题

3.3.   配置与优化

3.4.   APR整合

4.   APACHE安装配置

4.1.   获取Apache软件

4.2.   Apache安装配置与优化

5.   APACHE+TOMCA整合配置

5.1.   获取JK软件

5.2.   安装编译JK

5.3.   配置JK连接APACHETOMCAT

5.4.   验证配置

6.   完整的配置参考

6.1.   环境变量

6.2.   Tomcat相关配置文件

6.3.   apache相关配置文件

1. 概述

1.1. 本文目的

描述建立简单高效的 apache 服务器,应用于集成 tomcat 服务。

即: apache+jk1.2+tomcat 部署方案中 apache 的安装配置和优化

1.2. 环境及文档约定

操作系统: RedHat AS 4 update 1

硬件环境:普通 PC C4-2.8G/1G 内存

设系统的 IP 地址为: $IP

2. JDK 安装配置

JDK 官方网站: http://java.sun.com

2.1. 安装 JDK

JDK 版本: jdk1.5.0_05

 

下载地址:

http://192.18.108.219/ECom/EComTicketServlet/BEGIN5EA4351D3E051D464E9716D18FE4FF31

/-2147483648/2093779515/1/798890/798650/2093779515/2ts+/westCoastFSEND

/jdk-1.5.0_11-oth-JPR/jdk-1.5.0_11-oth-JPR:3/jdk-1_5_0_11-linux-i586-rpm.bin

 

# cd /tools

# wget http://192.18.108.219/ECom/EComTicketServlet/BEGIN5EA4351D3E051D464E9716D18FE4FF31/

-2147483648/2093779515/1/798890/798650/2093779515/2ts+/westCoastFSEND

/jdk-1.5.0_11-oth-JPR/jdk-1.5.0_11-oth-JPR:3/jdk-1_5_0_11-linux-i586-rpm.bin

 

# cd /tools

# chmod +x jdk-1_5_0_11-linux-i586-rpm.bin

# ./ jdk-1_5_0_11-linux-i586-rpm.bin

# rpm –ivq jdk-1_5_0_11-linux-i586.rpm

 

2.2. 设置系统 JAVA 环境

Java 环境的设置是为了支持 tomcat 服务器的运行,主要需要设置的环境变量是 JAVA_HOME, jdk 的安装路径。默认安装 jdk 的目录是 /usr/java/ jdk1.5.0_11

 

设置环境变量到系统环境配置文件 /etc/profile

 

# vi /etc/profile

加入: exprot JAVA_HOME=/usr/java/ jdk1.5.0_11

# source /etc/profile

 

3. TOMCAT 安装配置

Tomcat 官方网站: http://tomcat.apache.org/

3.1. 获取 Tomcat

本文使用 Tomcat-5.5.17

下载地址: http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.tar.gz

如果目标服务器可以上公网,可以直接在目标服务器下载该版本 tomcat ,标准发行版本比较小,只有几兆而已。

 

$ cd /tools

$ wget http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.tar.gz

 

3.2. 安装 Tomcat

3.2.1. 安装

首先在获取 tomcat 软件版本后,直接解压,并拷贝到对应的安装目录就可以了,一般 linux 下安装目录可以设置在 /usr/local 下面,现在设 Tomcat 安装目录为 $CATALINA_HOME

 

# cd /tools

# tar –xzvf apache-tomcat-5.5.17.tar.gz

# cp apache-tomcat-5.5.17 /usr/local/tomcat-5.5.17

即: $CATALINA_HOME=/usr/local/tomcat-5.5.17

 

3.2.2. 验证安装

请确保系统的 8080 端口没有被占用,因为 tomcat 默认使用 8080 端口。

# $CATALINA_HOME/bin/startup.sh

 

启动浏览器(如 IE ),输入 http://$IP:8080

如果显示了有 tomcat 图标的 tomcat 首页的话,表示 tomcat 服务器正常 .

 

3.2.3. 常见问题

1.         确保服务器操作系统防火墙关闭

2.         确保端口没有被其他程序占用,验证方法是 :

关闭 tomcat 服务器( $CATALINA_HOME/bin/shutdown.sh

telnet $IP 8080

如果仍然能连通,说明 8080 端口已经被其他程序使用。

3.3. 配置与优化

我的其他文章参考: TOMCAT-5.5.X优化配置

3.4. APR 整合

我的其他文章参考: TOMCAT-5.5.X整合APR

 

4. APACHE 安装配置

4.1. 获取 Apache 软件

Apache2.0.59 http://httpd.apache.org

 

本例使用 linux source 包版本

可以直接下载:

# cd /tools

# wget http://httpd.apache.org/xxxx/xxxx/ apache-2.0.59.tar.gz

4.2. Apache 安装配置与优化

我的其他文章参考: Apache安装配置与优化

5. APACHE+TOMCA 整合配置

官方参考: http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

5.1. 获取 JK 软件

下载地址:

http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/v1.2.0/src/

jakarta-tomcat-connectors-jk-1.2.0-src.tar.gz

# cd /tools

# wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/v1.2.0/src/

jakarta-tomcat-connectors-jk-1.2.0-src.tar.gz

5.2. 安装编译 JK

# cd /tools

# tar –xzvf jakarta-tomcat-connectors-jk-1.2.0-src.tar.gz

# cd tomcat-connectors-1.2.20-src

# cd native

# ./configure --with-apxs=$APACHE_HOME/bin/apxs  // 使用 apache apxs

# make

# make install

 

成功安装完成后,会在 $APACHE_HOME/modules 中发现 mod_jk.so 文件。

5.3. 配置 JK 连接 APACHE TOMCAT

1.  配置 worker.properties

$APACHE_HOME/conf 下建立 worker.properties

# vi worker.properties

写入:

       # Define 1 real worker using ajp13

worker.list=tomcat

# Set properties for worker1 (ajp13)

worker.tomcat.type=ajp13

worker.tomcat.host=127.0.0.1

worker.tomcat.port=8009

worker.tomcat.cachesize=10

worker.tomcat.cache_timeout=600

    

2.  配置 JK 连接

配置 $APACHE_HOME/conf httpd.con 文件

# vi httpd.conf

写入:

# Load mod_jk module

LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties

JkWorkersFile /usr/local/apache2.0.59/conf/workers.properties

# Where to put jk logs

JkLogFile /usr/local/apache2.0.59/logs/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel error

# 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"

JkShmFile /usr/local/apache2/logs/mod_jk.shm

 

# Send jsp,servlet for context * to worker named tomcat

JkMount /dwr/* tomcat

JkMount /*.jsp tomcat

JkMount /*.mvc tomcat

JkMount /*.do tomcat

JkMount /captcha.jpg tomcat

JkMount /j_acegi_security_check tomcat

JkMount /j_acegi_logout tomcat

JkMount /admin/adminlogout tomcat

JkMount /WEB-INF/* tomcat

 

5.4. 验证配置

确保 tomcat 配置正确,并能正常启动。

启动 tomcat ,然后启动 apache ,测试是否配置成功。

      

 

6. 完整的配置参考

6.1. 环境变量

export JAVA_HOME =/ usr / java / jdk1 . 5 . 0_05

export PATH
= $JAVA_HOME / bin : $PATH

export JAVA_OPTS
= " $CATALINA_OPTS -Xms700m -Xmx700m
-Djava.library.path=/usr/local/apr/lib
"

6.2. Tomcat 相关配置文件

Server.xml

< Server  port ="8005"  shutdown ="SHUTDOWN" >

  
< GlobalNamingResources >

    
<!--  Used by Manager webapp  -->

    
< Resource  name ="UserDatabase"  auth ="Container"

              type
="org.apache.catalina.UserDatabase"

       description
="User database that can be updated and saved"

           factory
="org.apache.catalina.users.MemoryUserDatabaseFactory"

          pathname
="conf/tomcat-users.xml"   />

  
</ GlobalNamingResources >

  
< Service  name ="Catalina" >

    
< Connector  port ="8009"

               maxTreads
="500"  minSpareThreads ="10"  maxSpareThreads ="50"

               acceptCount
="50"  connectionTimeout ="60000"

               enableLookups
="false"  redirectPort ="8443"  protocol ="AJP/1.3" />

    
< Engine  name ="Catalina"  defaultHost ="localhost" >

      
< Realm  className ="org.apache.catalina.realm.UserDatabaseRealm"

             resourceName
="UserDatabase"   />

      
< Host  name ="localhost"  appBase =""

       unpackWARs
="true"  autoDeploy ="true"

       xmlValidation
="false"  xmlNamespaceAware ="false" >

        
< Context  path =""  docBase ="/www/xxxxx/site/web"  reloadable ="true"  debug ="0" />

      
</ Host >

    
</ Engine >

  
</ Service >

</ Server >

6.3. apache 相关配置文件

1. httpd.conf

Include conf/includes/*.conf

ServerRoot /usr/local/apache2.0.59

DocumentRoot /www/xxxxx/site/web

DirectoryIndex index.jsp index.htm index.html

User  webuser

Group cvs

< IfModule  prefork.c >

ServerLimit      800

MaxClients       800

StartServers     5

MinSpareServers  5

MaxSpareServers 10

</ IfModule >

 

< IfModule  worker.c >

StartServers         2

MaxClients         150

MinSpareThreads     25

MaxSpareThreads     75

ThreadsPerChild     25

MaxRequestsPerChild  0

</ IfModule >

 

MaxRequestsPerChild 0

ErrorLog logs/error_log

< Directory  />

    Options FollowSymLinks

    AllowOverride None

</ Directory >

 

2. conf/includes/deflate.conf

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css

# Compress everything except images

< Location  />

# Insert filter

SetOutputFilter DEFLATE

# Netscape 4.x has some problems

BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems

BrowserMatch ^Mozilla/4\.0[678] no-gzip


# MSIE masquerades as Netscape, but it is fine

BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don't compress images

SetEnvIfNoCase Request_URI \

\.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don't deliver the wrong content

Header append Vary User-Agent env=!dont-vary

</ Location >

3. conf/includes/ mod_jk.conf

#  Load mod_jk module

LoadModule jk_module modules
/ mod_jk . so

#  Where to find workers.properties

JkWorkersFile 
/ usr / local / apache2 . 0.59 / conf / workers . properties

#  Where to put jk logs

JkLogFile 
/ usr / local / apache2 . 0.59 / logs / mod_jk . log

#  Set the jk log level [debug/error/info]

JkLogLevel error

#  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 "

JkShmFile 
/ usr / local / apache2 / logs / mod_jk . shm

 

#  Send jsp,servlet for context * to worker named tomcat

JkMount 
/ dwr /*  tomcat

JkMount 
/*. jsp tomcat

JkMount 
/*. mvc tomcat

JkMount 
/*. do  tomcat

JkMount 
/ captcha . jpg tomcat

JkMount 
/ j_acegi_security_check tomcat

JkMount 
/ j_acegi_logout tomcat

JkMount 
/ admin / adminlogout tomcat

JkMount 
/ WEB - INF /*  tomcat

4. conf/workers.properties

# Define  1  real worker using ajp13

worker.list
= tomcat

# Set properties for worker1 (ajp13)

worker.tomcat.type
= ajp13

worker.tomcat.host
= 127.0.0.1

worker.tomcat.port
= 8009

worker.tomcat.cachesize
= 10

worker.tomcat.cache_timeout
= 600


评论

# re: Apache与Tomcat平台全面解决方案  回复  更多评论   

2008-01-21 19:55 by Anthem
有关于mod_jk的问题:
原本使用mod_jk是因为tomcat在处理静态内容上比不上apache,所以理想状态是,使用了mod_jk后所有静态内容归apache,所有动态内容归tomcat,
问题1:
我的理解是:文章中使用JkMount / dwr /* tomcat这样的形式是基于匹配请求窜来区分静态和动态内容的,是不是这样呢?
问题2:
我目前在做一个采用webwork框架的项目,其中使用了rewriteFilter,所有*.html形式的请求实际上会被过滤器拦截去匹配一个具体的action,这样的话这个....../*.html的请求实际上是一个动态内容,项目中本来就没有纯粹的html文件,刚好避免了利用 JkMount /*.html tomcat导致真正静态的html也被交给worker然后让tomca去处理的问题,如果这个问题真的出现怎么处理呢?考虑到url rewrite 可以在apache中实现,但是我感觉在程序项目中实现比较方便。
问题3:
如果利用配置文件去区分,感觉好像很难明确的区分出动、静态内容,一方面现在的web项目好像纯粹的html页面之类的静态内容越来越稀罕了,另一方面,往往动静态内容都混在一起了(有动态就是动态内容,这样的话是不是全是动态没哟静态了??),按照我在目前项目中的配置方法,好像所有的内容都是交给worker了,那样的话,是不是还不如直接使用tomcat效率好?毕竟在从apache何mod-jk走一回也是要消耗资源的?

楼主大人可否解疑释惑,赐教一二?

只有注册用户登录后才能发表评论。


网站导航: