一、概述

    Tomcat 6.X实现了JCP的Servlet 2.5和JSP2.1的规范,并且包括其它很多有用的功能,使它成为开发和部署web应用和web服务的坚实平台。
    作为开源web服务器的java实现,tomcat几乎就是web开发者开发、测试的首选,有很多其他商业服务器的开发者也会优先选择tomcat作为开发时候使用,在介绍tomcat部署web服务的实现过程之前先了解一下Tomcat的运行架构:

   Server->Service(关联一个或多个Connector至某engine)->Engine(Container)->Host(一个engin可以包含多个host,但要有一个默认host)->Context(一个host内部可以有多个context,每一个Context对应与一个web应用程序,而每一个web应用程序需要至少一个部署描述符文件web.xml)

二、安装配置

1、安装前准备:

 
  1. 安装包: 
  2. apache-tomcat-7.0.29.tar.gz      
  3. jdk-7u5-linux-i586.rpm 
  4. 安装环境: 
  5.    ReadHat 5.5 Kernel:2.6.18-308.el5 
  6. 安装配置JDK: 
  7. # rpm -ivh jdk-7u5-linux-i586.rpm 
  8. # vim /etc/profile  //声明变量让依靠JVM运行的应用程序找到java的安装目录// 
  9. 添加和修改如下行: 
  10. JAVA_HOME=/usr/java/jdk1.7.0_05 
  11. PATH=$PATH:$JAVA_HOME/bin 
  12. export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC 
  13. # printenv                                  //重新连接主机,查看生效情况// 
  14. JAVA_HOME=/usr/java/jdk1.7.0_05         //确保有该项// 
  15. # java -version                             //查看java版本// 
  16. 注:/etc/init.d/jexec             //JDK启动脚本 
  17. /usr/java/jdk1.7.0_05/        //JDK安装目录 

2、安装过程

 
  1. # tar xf apache-tomcat-7.0.29.tar.gz -C /usr/local/ 
  2. # cd /usr/local/ 
  3. # ln -sv apache-tomcat-7.0.29/ tomcat 
  4. # /usr/local/tomcat/bin/catalina.sh start   //启动tomcat服务// 

  验证访问效果:

注:第一次访问速度比较慢,因为要先进行编译;

  添加测试页面:

 
  1. # cd /usr/local/tomcat/webapps 
  2. # mkdir test 
  3. # cd test 
  4. # mkdir -pv WEB-INF/{lib,classes} 
  5. # vim index.jsp 
  6. 添加网页内容如下: 
  7. <%@page language="java" %> 
  8. <html> 
  9.             <head> 
  10.                     <title>TomcatA</title> 
  11.             </head> 
  12.             <body> 
  13.                     <h2><font color="red">TomcatA in www.magedu.com</font></h2> 
  14.                     <% out.println("Hello,World!"); %> 
  15.             </body> 
  16. </html> 

  重启tomcat服务并访问验证:

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  配置自己建立的jsp网页不使用默认的Context来部署而被访问到

    (即jsp网页不在/usr/local/tomcat/webapps目录下也能被访问到)
 
  1. # mkdir -pv /www/webapps 
  2. # mv /usr/local/tomcat/webapps/test/ /www/webapps/    //将先前我们建好的jsp网页移到/www/webapps目录下 
  3. 编辑配置文件/usr/local/tomcat/conf/server.xml,在host下添加Context 
  4. # vim /usr/local/tomcat/conf/server.xml  
  5. 在host下面添加如下行 
  6. <Context path="/test" docBase="/www/webapps/test" reloadable="true" /> 

  重启tomcat服务并访问验证:

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  添加一个更接近实际应用的网站

    这里使用的是JavaCenter社交网站,不过在安装之前首先要先安装mysql服务器,这里就不在赘述安装过程了,具体参考http://wjw7702.blog.51cto.com/5210820/957779

 
  1. # service mysqld start   //启动mysql服务// 
  2.   添加root用户密码 
  3. # mysql -e "SET PASSWORD FOR root@localhost=PASSWORD('redhat')" 
  4. # mysql -e "SET PASSWORD FOR root@’127.0.0.1’=PASSWORD('redhat')" -p 
  5.   下载JavaCenter_Home_2.0_GBK.tar.bz2包至本地/root目录下 
  6. # tar xf JavaCenter_Home_2.0_GBK.tar.bz2 
  7. # mv JavaCenter_Home_2.0_GBK /www/webapps/jcenter 
  8.   编辑配置文件/usr/local/tomcat/conf/server.xml,在host下添加Context 
  9. # vim /usr/local/tomcat/conf/server.xml  
  10.   在host下面添加如下行 
  11.   <Context path="/jcenter" docBase="/www/webapps/jcenter"   reloadable="true" /> 

  重启tomcat服务并安装JavaCenter

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  添加连接数据库用户和密码及创建数据库

  添加管理员账户和密码

  安装成功

  进入空间主页,Javasecter社交网站建设成功

  配置通过虚拟主机访问我们的Javasecter社交网站

 
  1. 编辑配置文件/usr/local/tomcat/conf/server.xml,添加新的host及Context 
  2. # vim /usr/local/tomcat/conf/server.xml 
  3.   <Host name="test.wjw.com" appBase="webapps"   // test.wjw.com可以自己命名,tomcat只支持基于名称的虚拟主机// 
  4.             unpackWARs="true" autoDeploy="true"> 
  5.       <Context path="" docBase="/www/webapps/jcenter" reloadable="true"/> 
  6.    </Host> 

  重启tomcat服务并在远端主机hosts文件中添加 172.16.11.11 test.wjw.com访问验证

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  配置访问路径中无8080端口

 
  1. 编辑配置文件/usr/local/tomcat/conf/server.xml,找到http连接器将8080端口改为80 
  2. # vim /usr/local/tomcat/conf/server.xml 
  3. 修改如下选项 
  4. <Connector port="80" protocol="HTTP/1.1"    //这里没有安装apache服务,所以端口不会产生冲突// 
  5.                connectionTimeout="20000" 
  6.                redirectPort="8443" /> 

  重启tomcat服务并访问验证

  添加访问日志文件

 
  1. # vim /usr/local/tomcat/conf/server.xml 
  2. 添加如下行 
  3. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" //添加日志文件格式// 
  4.                prefix="test_access_log." suffix=".txt"   //添加日志文件前缀和后缀// 
  5.                pattern="%h %l %u %t &quot;%r&quot; %s %b" />  //添加日文件模式// 

  重启tomcat服务

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  通过windows主机访问并查看日志文件内容

 
  1. # cat /usr/local/tomcat/logs/test_access_log.2012-08-10.txt  
  2. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET / HTTP/1.1" 200 17784 
  3. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /source/script_common.js HTTP/1.1" 304 - 
  4. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /source/script_face.js HTTP/1.1" 304 - 
  5. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /source/script_manage.js HTTP/1.1" 304 - 
  6. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /source/script_ajax.js HTTP/1.1" 304 - 
  7. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /template/default/style.css HTTP/1.1" 304 - 
  8. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /source/script_menu.js HTTP/1.1" 304 - 
  9. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /template/default/gift.css HTTP/1.1" 304 - 
  10. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /source/script_cookie.js HTTP/1.1" 304 - 
  11. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /template/default/network.css HTTP/1.1" 304 - 
  12. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /template/default/p_w_picpath/side_rbox_gray.gif HTTP/1.1" 304 - 
  13. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /template/default/p_w_picpath/logo.gif HTTP/1.1" 304 - 
  14. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /template/default/p_w_picpath/button_n.gif HTTP/1.1" 304 - 
  15. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /template/default/p_w_picpath/thumb20bg.gif HTTP/1.1" 304 - 
  16. 192.168.0.216 - - [10/Aug/2012:00:27:43 +0800] "GET /template/default/p_w_picpath/header_bg.gif HTTP/1.1" 304 - 
  17. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /template/default/p_w_picpath/scroll_page_arrow.gif HTTP/1.1" 304 - 
  18. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /template/default/p_w_picpath/guest_bg.jpg HTTP/1.1" 304 - 
  19. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /p_w_picpath/app/doing.gif HTTP/1.1" 304 - 
  20. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /template/default/p_w_picpath/guest_corner.gif HTTP/1.1" 304 - 
  21. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /p_w_picpath/app/mtag.gif HTTP/1.1" 304 - 
  22. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /p_w_picpath/app/album.gif HTTP/1.1" 304 - 
  23. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /p_w_picpath/app/share.gif HTTP/1.1" 304 - 
  24. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /data/avatar/000/00/00/01_avatar_small.jpg HTTP/1.1" 404 620 
  25. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /data/avatar/000/00/00/01_avatar_middle.jpg HTTP/1.1" 404 620 
  26. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /data/avatar/000/00/00/00_avatar_small.jpg HTTP/1.1" 404 620 
  27. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /p_w_picpath/app/poll.gif HTTP/1.1" 304 - 
  28. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /template/default/p_w_picpath/reg_button.gif HTTP/1.1" 304 - 
  29. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /do.jsp?ac=sendmail&rand=1344529660 HTTP/1.1" 200 5 
  30. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /p_w_picpath/app/blog.gif HTTP/1.1" 304 - 
  31. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /p_w_picpath/app/event.gif HTTP/1.1" 304 - 
  32. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /template/default/p_w_picpath/footerbar.gif HTTP/1.1" 304 - 
  33. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /template/default/p_w_picpath/showuser_label.gif HTTP/1.1" 304 - 
  34. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /template/default/p_w_picpath/avatar_blank.gif HTTP/1.1" 304 - 
  35. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /data/avatar/noavatar_small.gif HTTP/1.1" 304 - 
  36. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /p_w_picpath/top.gif HTTP/1.1" 304 - 
  37. 192.168.0.216 - - [10/Aug/2012:00:27:44 +0800] "GET /data/avatar/noavatar_middle.gif HTTP/1.1" 304 – 

3、通过Web Gui(图形界面)来管理tomcat服务

    那么就来说一下manager和host manager了,manager主要是用来管理程序部署操作、会话管理和查看Status信息的,而host manager主要来管理虚拟主机的,而要访问manager中的不同的接口就需要不同角色来完成,访问gui接口的角色是manager-gui;访问host manager的gui接口需要定义admin-gui角色;

  为manager定义一个manager-gui角色和密码

 
  1. # vim /usr/local/tomcat/conf/tomcat-users.xml 
  2. 添加如下行 
  3. <role rolename="manager-gui"/> 
  4. <user username="tomcat" password="tomcat" roles="manager-gui" />  // username和password可以根据自己需要来定义// 

  重启tomcat服务并用定义的manager-gui角色名称个密码登录访问manager

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  进入manager管理界面

注:至于manager管理过程这里就不再做详细解释,过程很简单,相信你会的;

  为host manager定义一个admin-gui角色和密码

 
  1. # vim /usr/local/tomcat/conf/tomcat-users.xml 
  2. 添加如下行 
  3. <role rolename="admin-gui"/> 
  4. <user username="wjw" password="tomcat" roles="admin-gui" />  // username和password可以根据自己需要来定义// 
 

  重启tomcat服务并用定义的admin-gui角色名称个密码登录访问host manager

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  进入host manager管理界面

   注:至于host manager怎么管理虚拟主机的过程这里就不再做详细解释,过程很简单,相信你会的。

4、Tomcat的Session Manager(会话管理)

  1)StandardManager(标准会话管理器)

    Tomcat服务要正常关闭,会话信息不会丢失;

    Kill -9导致服务关闭,会话信息将会丢失;
    所有会话被保存到/usr/local/tomcat/work/Catalina/localhost/manager/SESSIONS.ser文件中;

  2)PersistentManager(持久会话管理器)

   将每一个用户请求对应的会话保存至某一目录下Directory指定的目录中的文件中,文件名为Session id.session并通过后台线程每隔一段时间(checkInterval参数定义,默认为60秒)检查一次超时会话;

将会话数据保存至持久存储中,并且能在服务器意外中止后重新启动时重新加载这些会话信息。
   支持的会话存储机制:
   1)FileStore
   2) JDBC存储(JDBCStore)-保存至RDBMS中;

  为localhost添加标准会话管理

 
  1. # vim /usr/local/tomcat/conf/server.xml 
  2. 添加如下行 
  3. <Manager className="org.apache.catalina.session.PersistentManager" 
  4.     saveOnRestart="true"> 
  5.     <Store className="org.apache.catalina.session.FileStore" 
  6.         directory="/data/tomcat-sessions"/> 
  7. </Manager> 

  重启tomcat服务并验证访问manager打开会话信息

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  重启tomcat服务,查看以上会话信息依然存在

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  定义持久会话管理并将会话保存至FileStore中

 
  1. # vim /usr/local/tomcat/conf/server.xml 
  2. 添加如下行 
  3. <Manager className="org.apache.catalina.session.PersistentManager" 
  4.     saveOnRestart="true"> 
  5.     <Store className="org.apache.catalina.session.FileStore" 
  6.         directory="/data/tomcat-sessions"/> 
  7. </Manager> 
  8. # mkdir -pv /data/tomcat-sessions    //创建保存会话的目录// 

  重启Tomcat服务并访问manager打开会话信息

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

 

  再次重新启动tomcat服务,重新访问manager打开会话信息

 
  1. # /usr/local/tomcat/bin/catalina.sh stop 
  2. # /usr/local/tomcat/bin/catalina.sh start 

  3)小结

    以上就是tomcat服务的会话管理的内容,后续更多tomcat的内容将会与大家分享。