Tomcat在Linux上的安装与配置 Tomcat6 Tomcat7对比测试

Tomcat在Linux上的安装与配置



    以下使用的Linux版本为: Redhat Enterprise Linux 7.0 x86_64,Tomcat版本为tomcat-7.0.54.


1.下载JDK与Tomcat.
    jdk下载地址:
    http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
    tomcat下载地址:
    http://tomcat.apache.org/download-70.cgi


2.jdk安装与配置.
    (1)jdk安装
    rpm包:
    # rpm -ivh jdk-7u55-linux-x64.rpm


    tar.gz包:解压缩
    # mkdir /usr/java
    # cd /usr/java
    # tar -zxvf /software/jdk-7u55-linux-x64.tar.gz
    生成链接以便版本升级
    # ln -s jdk1.7.0_55 latest
    # ln -s latest default


    (2)配置环境变量
    # vi /etc/profile
    export JAVA_HOME=/usr/java/default
    export JAVA_BIN=$JAVA_HOME/bin
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH


    使配置生效
    # source /etc/profile


    测试jdk.
    # java -version
    java version "1.7.0_55"
    Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)


3.Tomcat的安装
    解压缩
    # mkdir /usr/local/tomcat
    # cd /usr/local/tomcat
    # tar -zxvf /software/apache-tomcat-7.0.54.tar.gz
    生成链接以便版本升级
    # ln -s apache-tomcat-7.0.54 server


    启动Tomcat
    # cd /usr/local/tomcat/server/bin
    # ./startup.sh
    Using CATALINA_BASE: /usr/local/tomcat/server
    Using CATALINA_HOME: /usr/local/tomcat/server
    Using CATALINA_TEMDIR: /usr/local/tomcat/server/temp
    Using JRE_HOME: /usr/java/default
    Using CLASS_PATH: /usr/local/tomcat/server/bin/bootstrap.jar:/usr/local/tomcat/server/bin/tomcat-juli.jar
    Tomcat started.


    测试Tomcat:
    打开防火墙,使外部能访问
    # /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
    # service iptables save
    # service iptables restart
    或直接修改文件/etc/sysconfig/iptables.
    # vi /etc/sysconfig/iptables
    -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
    # service iptables restart
    在浏览器输入: http://192.168.16.133:8080
    如在本机可以输入: http://localhost:8080
    出现tomcat的页面表示安装成功.


    停止Tomcat
    # ./shutdown.sh


4.配置web管理帐号
   修改文件conf/tomcat-users.xml,在<tomcat-users>元素中添加帐号密码,需要指定角色.
   # vi /usr/local/tomcat/server/conf/tomcat-users.xml
     <tomcat-users>
       <user name="admin" password="admin" roles="admin-gui,manager-gui" />
     </tomcat-users>


5.配置web访问端口和设置UTF-8
   可以修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效.
   # vi /usr/local/tomcat/server/conf/server.xml
   <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"  URIEncoding="UTF-8" /> 

   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />


6.配置https安全连接(ssl加密连接)
   https连接需要用到数字证书与数字签名(MD5算法)
   网站https连接首先需要申请数字证书,配置加密连接器,浏览器安装证书.
   ·使用java的工具keytool产生数字证书
     # keytool -genkey -alias tomcat -keyalg RSA
     生成文件.keystore
     注意:CN为主机名称,本机可用localhost
   ·将文件.keystore放到Tomcat服务器的conf目录下
     # cp .keystore /usr/local/tomcat/server/conf/
   ·修改conf/server.xml文件,修改加密连接器,添加keystoreFile与keystorePass
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="conf/.keystore" keystorePass="123456"/>    
   ·重新启动tomcat.浏览器输入https://localhost:8443访问,并安装证书.


7.Tomcat的目录结构
   ·bin     //存放Tomcat的命令脚本文件
   ·conf    //存放Tomcat服务器的各种配置文件,最主要是server.xml
   ·lib     //存放Tomcat服务器支撑jar包
   ·logs    //存放日志文件
   ·temp    //存放临时文件
   ·webapps //web应用所在目录,外界访问web资源的存放目录
   ·work    //Tomcat的工作目录


8.web应用的目录结构
   webapp                           -- web应用所在目录
     |--- html, jsp, css, js文件等  -- 这些文件一般在web应用根目录下,根目录下的文件外界可以直接访问.
     |--- WEB-INF 目录              -- java类、jar包、web配置文件存在这个目录下,外界无法直接访问,由web服务器负责调用.
           |--- classes 目录        -- java类
           |--- lib 目录            -- java类运行所需要的jar包
           |--- web.xml 文件        -- web应用的配置文件


9.虚拟主机的配置
   指定虚拟主机名,修改conf/server.xml,添加<host>元素.
   <host name="hostname.domainname" appBase="/webapps">
     <Context path="/webapp" docBase="/webapps/webapp"/>
   </host>
   例:
   <host name="www.163.com" appBase="/webapps">
   </host>
   <host name="mail.163.com" appBase="/mailapps">
   </host>
   须设置DNS解析(host文件或DNS系统).




10.web应用和虚拟目录的映射.
   可以修改xml配置文件的<Context>元素来设置web应用和虚拟目录的映射.
   ·conf/server.xml         //在<host>元素下添加<Context path="/webdir" docBase="/webappdir"/>,需要重新启动Tomcat服务生效,不建议使用.
   ·conf/context.xml        //添加<Context>元素所有web应用有效.
   ·conf/[enginename]/[hostname]/context.xml.default  //[enginename]一般是Catalina,主机[hostname]的所有web应用有效.
   ·conf/[enginename]/[hostname]/   //在目录下任意建一个文件(扩展名xml),文件名即为虚拟目录名.多级目录使用#分割. <Context docBase="/webappdir"/>
                                     //缺省值web应用目录可以定义为ROOT.xml,添加<Context docBase="/webappdir"/>,需重新启动Tomcat服务器.
   ·META-INF/context.xml    //
   可以将web应用放在webapps目录下让Tomcat服务器自动映射,适用开发环境,实际运用环境中不用自动映射。
   如没有修改配置文件,web应用目录为ROOT时则为默认web应用。


11.web应用首页(welcome file)的配置
   修改web应用的配置文件: [webapp]/WEB-INF/web.xml
    <welcome-file-list>
       <welcome-file>index.html</welcome-file>
       <welcome-file>index.htm</welcome-file>
       <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


0摘要

本文首先简述了Tomcat7的新特性和增强功能。然后对比tomcat6做了性能测试,测试结果表明,tomcat7的在性能上没有明显的提升,而主要贡献在于Servlet 3.0,内存检测泄露和增强的安全特性。

1 Tomcat7的特性

目前tomcat7已经发布到第34个版本(tomcat7.0.34),而tomcat6现在的版本是6.0.36,所以就bug修改来说,应该算是比较稳定了。

Tomcat7新特性:

1. 使用随机数去防止跨站脚本攻击;

2. 改变了安全认证中的jessionid的机制,防止session攻击;

3. 内存泄露的侦测和防止;

4. 在war文件外使用别名去存储静态内容;

Tomcat7的增强功能:

5 对Servlet 3.0,JSP 2.2和JSP-EL 2.2的支持;

6 更容易将Tomcat内嵌到应用去中去,比如JBoss;

7 异步日志记;

根据Mark Thomas,Tomcat 7委员会的经理的说法,Tomcat 7最显著的三个特征是Servlet 3.0,内存检测泄露和增强的安全特性。不过从变更中没有看到Tomcat7在性能方面的提升,下面测试一下性能。

2 性能测试

2.1 处理静态请求

2.1.1Tomcat6处理静态请求

命令:ab -n 40000 -c 2000 http://172.7.9.201:8080/about.html

Timeper request: 118.038 [ms] (mean)

Timeper request: 115.213 [ms] (mean)

Timeper request: 118.873 [ms] (mean)

Timeper request: 125.233 [ms] (mean)

Timeper request: 118.147 [ms] (mean)

平均 119.101 [ms] (mean)

2.1.2Tomcat7处理静态请求

命令:ab -n 40000 -c 2000 http://172.7.9.201:8080/about.html

Timeper request: 116.968 [ms] (mean)

Timeper request: 119.298 [ms] (mean)

Timeper request: 120.927 [ms] (mean)

Timeper request: 119.914 [ms] (mean)

Timeper request: 123.141 [ms] (mean)

平均 120.050 [ms] (mean)

2.2 请求动态请求

由于ApacheBench或者Webbench都不支持URL中存在类似loginAction!login.action字符串,而在视频去中action都是类似拼接的,这里只能用jmeter测试向Tomcat6/7发送验证登陆信息请求,故结果数据只做本节内对比,不与上节对比。

2.2.1Tomca6处理动态信息

700并发 循环发送5次

http://172.7.9.201:8080/loginAction!login.action?indexcode=abc&password=e10adc3949ba59abbe56e057f20f883e

Tomcat在Linux上的安装与配置
Tomcat6 Tomcat7对比测试

Tomcat在Linux上的安装与配置
Tomcat6 Tomcat7对比测试

Tomcat在Linux上的安装与配置
Tomcat6 Tomcat7对比测试

平均3218.000 [ms] (mean)

2.2.2Tomcat7处理动态信息

700并发 循环发送5次

http://172.7.9.201:8080/loginAction!login.action?indexcode=abc&password=e10adc3949ba59abbe56e057f20f883e

Tomcat在Linux上的安装与配置
Tomcat6 Tomcat7对比测试

Tomcat在Linux上的安装与配置
Tomcat6 Tomcat7对比测试

Tomcat在Linux上的安装与配置
Tomcat6 Tomcat7对比测试

平均3371.333 [ms] (mean)

2.3 性能测试小结

从处理静态请求看,tomcat6平均119.101 [ms],tomcat7平均120.050 [ms],Tomcat7响应性能没有提升。

从处理动态请求看,tomcat6平均3218.000 [ms],tomcat7平均3371.333 [ms]也没有提升。

3 总结

本文首先简述了Tomcat7的新特性和增强功能。然后对比tomcat6做了性能测试,测试结果表明,tomcat7的在性能上没有明显的提升,而主要贡献在于Servlet 3.0,内存检测泄露和增强的安全特性。