Chinaunix首页 | 论坛 | 博客
  • 博客访问: 122526
  • 博文数量: 29
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 405
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-21 16:44
文章分类

全部博文(29)

文章存档

2009年(6)

2008年(23)

我的朋友

分类: 系统运维

2009-06-22 22:26:30

最近一直在弄tomcat,在处理几个擦屁股的项目/系统。源码编译、安装、配置、升级、迁移.....什么活都干,以本文记录次过程中的一些体会。

 

1、安装

 

1.1二进制包安装

 

1.1.1 JDK 安装

sun官方网站下载jdk1.5.0 for linux

解压后,移动到/usr/local/jdk下,将JAVA_HOME环境变量设置为/usr/local/jdk,然后将/usr/local/jdk/bin加入到PATH中, 并将JAVA_HOMECLASSPATH变量写在/etc/profile;

 

1.1.2 TOMCAT安装

tomcat官方网站找到 ,下载之,解压,改名放在/usr/local下叫做tomcat,即路径为/usr/local/tomcat,设置环境TOMCAT_HOME/usr/local/tomcat,写入/etc/profile中。


1.2 源码编译安装
为了修补http://tomcat.apache.org/security-5.htmltomcat5.5.27最近爆出的两个比较严重的漏洞

Important: Information Disclosure

Important: Denial of Service

需要打补丁,重新编译tomcat,步骤如下:

1.2.1 下载源码

tomcat官方网站下载 apache-tomcat-5.5.27-src.tar.gz文件,解压到目录apache-tomcat-5.5.27-src

1.2.2 下载补丁

先从 

 

  三个地址将所有的java补丁包下载下来,按照补丁包说明放在apache-tomcat-5.5.27-src对应的子目录下,如目录不存在,手动建立。

1.2.3 安装ant

下载地址:

下载后解压放在/usr/local/ant下,并将/usr/local/ant/bin加到PATH变量中,

export PATH=$PATH:/usr/local/ant/bin

1.2.4 编译tomcat

进入到 apache-tomcat-5.5.27-src/build目录下,先修改build.properties.default中的version.build=2627

修改version=5.5.265.5.27,再查看BUILDING.txt中的编译步骤,大致步骤如下:

ant download

ant

在执行ant download时,编译程序会自动下载很多开发包到/usr/share/java下,这个路径由build.properties.defaultbase.path=/usr/share/java的参数决定的。

下载的包解压后大约将近200M,这段时间根据下载的速度有所不一样。还可能会遇到各种各样的错误,依照错误提示即可找到解决方法。我遇到的是eclipse-JDT-3.3.1.zip 找不到的错误,google了一下,发现这个文件的download url已经变了,难怪找不到,修改build.xml或者手动下载后继续ant download 即可。

编译完成后,进入build目录,既是生成的tomcat

 

2 配置

 

2.1 基本配置、优化配置和安全配置

 

将刚才生成的build下所有的子目录和文件移动到/usr/local下,改名叫做/usr/local/tomcat

 

2.1.1 精简tomcat

 

# 删除 webapps下面所有的文件;
rm –fr $CATALINA_HOME/webapps/*


#
删除server/webapps下所有文件;
rm –fr $CATALINA_HOME/server/webapps/*

 

#删除 host-manager.xmlmanager.xmladmin.xml
rm -rf $CATALINA_HOME/conf/Catalina/localhost/*

 

#删除bin目录下一些文件,文件列表如下:
commons-launcher.jar
catalina.xml
launcher.properties
LauncherBootstrap.class
*-using-launcher*

 

#删除classes整个目录;

rm –rf $CATALINA_HOME/classes

 

#删除conf下的大多文件,只保留catalina.policycatalina.propertiescontext.xmllogging.propertiesserver.xml server-minimal.xml tomcat-users.xmlweb.xml;

 

#删除docs目录;

 rm –rf $CATALINA_HOME/docs

 

#删除tests目录;

 rm –rf $CATALINA_HOME/tests

 

2.1.2 修改日志配置

找到$CATALINA_HOME/conf下的logging.properties文件,将

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
修改为
handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler


.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
修改为.handlers = 1catalina.org.apache.juli.FileHandler

 

2.1.3 修改jvmJAVA_OPTS参数

 

/usr/java/jdk/jre/lib/i386/jvm.cfg修改成如下的内容:
-server KNOWN     #
从第二行移到第一行
-client IF_SERVER_CLASS -server
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR

 

tomcat默认可以使用的内存为128MB,对生产系统来说太小了,需要调整,找到$CATALINA_HOME/bin/catalina.sh,在脚本的最前面,增加如下设置:
JAVA_OPTS='-Xms
【初始化内存大小】 -Xmx【可以使用的最大内存】'

把这个两个参数值调大,具体大小可根据系统物理内存大小和应用所消耗的内存大小来设置
例如:JAVA_OPTS='-Xms256m -Xmx512m'
表示初始化内存为256MB,可以使用的最大内存为512MB

 

 

2.1.4修改Tomcat监听端口和连接数设置

$CATALINA_HOME/conf/server.xml文件,

找到这一段

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" redirectPort="8443" acceptCount="100"

               connectionTimeout="20000" disableUploadTimeout="true" />

修改如下:

为:
     
--可根据实际应用修改为其它端口
           maxTreads="500" minSpareThreads="10" maxSpareThreads="50"
           acceptCount="50" connectionTimeout="60000"
           enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
           compression="on"    --
启用传输压缩,取值on/off/force,默认值off 
           compressionMinSize="2048"  --
输入流缓冲大小,默认值2048 bytes
           noCompressionUserAgents="gozilla, traviata"
           compressableMimeType="text/html,text/xml"/>

  

2.1.5 修改web docs设置

$CATALINA_HOME/conf/server.xml中找到

       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
修改如下:
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
      

 

 

2.1.6 tomcat记录客户端WEB访问日志

$CATALINA_HOME/conf/server.xml,找到这么一段,去掉 注释,使之生效 

 

 

2.2 配置数据库连接池(mysqloracle

 

2.2.1 mysql连接池配置

mysql的官方找到mysql的驱动jar包,把mysql-connector-java-5.1.8-bin.jar文件放到tomcatcommon/lib

 

修改配置文件

$CATALINA_HOME/conf/context.xml 标记中加入如下段:
                     maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true---很重要,最好加上,否则如果程序无重连机制的话,在一些意外情况下断开数据库连接后会报错,可在tomcatcatalina.out里面见到报错信息。
              removeAbandoned="true"    
               removeAbandonedTimeout="60"  
               logAbandoned="true"/>   


removeAbandoned="true"        ----To configure a DBCP DataSource so that abandoned dB connections are removed and recycled.  (
回收被遗弃/忘记释放的数据库连接到连接池中。默认false)

removeAbandonedTimeout="60"   ---Use the removeAbandonedTimeout attribute to set the number of seconds a dB connection has been idle before it is considered abandoned.   (
数据库连接过多长时间不用将被视为被遗弃而收回连接池中,默认300)


logAbandoned="true"          ---The logAbandoned attribute can be set to true if you want DBCP to log a stack trace of the code which abandoned the dB connection resources. (
将被遗弃的数据库连接的回收记入日志。默认false)

以上三参数对oracle同样适用。

 

---其中TestDB为连接池名字,usernamepassword分别为访问db的用户名和密码,javatestdb的库名。

 

然后在web项目的web.xml中标记中加入如下段:   --其实可以省略
   
      DB Connection
      jdbc/TestDB
      javax.sql.DataSource
      Container
 

 

2.2.2 oracle连接池配置

Oracle官方网站找到Oracle的驱动jar包,把ojdb14.jar包放到tomcatcommon/lib

 

找到$CATALINA_HOME/conf/context.xml,在其中的 标记中加入如下段:

               type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
              username="scott" password="tiger" maxActive="20" maxIdle="10"
              maxWait="-1"/>
--myoracle
为连接池名,mysidoraclesidusernamepassword分别为访问db的名字和口令。

 

web项目的web.xml中标记中加入如下段:
 
 Oracle Datasource example
 jdbc/myoracle
 javax.sql.DataSource
 Container

 

 

 

3 整合apache

3.1 安装apache

apache版本是2.0.59

tar –zxvf httpd-2.0.59.tar.gz

cd httpd-2.0.59

./configure --prefix=/usr/local/apache2 --enable-mods-shared=all  --enable-rule=SHARED_CORE --enable-so --enable-rewrite

make

make install

3.2 下载mod_jk

从官方网站处下到符合自己平台和apache版本的mod_jk,我下的是i586/mod_jk-1.2.28-httpd-2.0.X.so,改名叫做mod_jk.so放在/usr/local/apache2/modules下。

3.3 配置mod_jkworks.properties

 

3.3.1 修改apachehttpd.conf文件,在最后里面添加这么一段

LoadModule jk_module module/mod_jk.so

JkWorkersFile "/usr/local/tomcat/conf/workers.properties"

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

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

JkLogLevel info

JkLogStampformat "[%a %b %d %H:%M:%S %Y] "

JkMount /servlet/* ajp13

JkMount /*.servlet ajp13

JkMount /*.jsp ajp13

JkMount /*.do ajp13

JkMount /*.action ajp13

 

3.3.2 修改/usr/local/tomcat/conf/workers.properties文件

 

方法一:

修改workers.properties文件,主要修改以下两个参数:

workers.tomcat_home=/usr/local/tomcat

workers.java_home=/usr/java/jdk1.5.0_18

注释掉如下几行tomcat5.5版本已废弃的参数:

worker.inprocess.type=jni

 

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar

 

worker.inprocess.cmd_line=start

 

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)classic$(ps)libjvm.so

 

worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout

 

worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr

 

其它的参数可酌情修改,比如去掉ajp12lb部分的内容。

 

方法二:

workers.properties改名为workers.properties.old,将workers.properties.minimal改名为workers.properties,将其中内容修改为:

 

workers.tomcat_home=/usr/local/tomcat

workers.java_home=/usr/java/jdk1.5.0_18

ps=/

worker.list=ajp13

 

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13

worker.ajp13.lbfactor=1

 

阅读(1294) | 评论(1) | 转发(0) |
0

上一篇:杂记

下一篇:领导请客

给主人留下些什么吧!~~

chinaunix网友2009-06-29 20:58:08

强烈希望JSong多发点技术文档