Tomcat是源自Apache软件基金会(Apache Software Foundation,http://tomcat.apache.org)的Java Serverlet容器(Container),也称Web应用服务器。web请求有静态和动态之分,当用户请求静态资源时,web服务器直接将静态资源响应给用户,无需做额外处理;当用户请求动态资源,如显示当前登录用户的个人资料,所展示的结果必须从站点服务器中的数据库服务器中查询出对应用户的信息(这里只是简单的介绍了一下静态网站和动态网站的区别,如果此前没有接触过的同学,需要好好的先去补充一下知识哦,毕竟这是更好的理解tomcat的必备基础知识)。Tomcat所擅长的就是处理动态内容,并且它是开源的,我们可以自由获取、自由学习。
一、Tomcat的安装
简单的理解了Tomcat,就可以下载对应平台的版本进行安装配置了,官方提供了通用二进制版本和源码版本,通用二进制版本只需简单的做下配置即可直接使用,而源码版本需进行源码编译,一般来说,如果我们不去定制额外的功能的话,都会选择通用二进制版本,而如果通用二进制版本的功能不满足我们的需求,我们才会选择源码编译,定制编译选项以适合我们实际需求。
在Linux平台下,以通用二进制版本apache-tomcat-6.0.43.tar.gz为例,
Tomcat的安装大致为以下步骤:
安装配置JDK;
配置Tomcat运行所需的环境变量;
1、安装配置JDK
# rpm -ivh jdk-7u75-linux-x64.rpm
默认jdk安装目录为: /usr/java/jdk1.7.0_75
配置环境变量并测试是否配置成功
# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.7.0_75
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile.d/java.sh
# java -version
当正确的显示了JDK版本以后,证明你已经成功配置了JDK。
2、配置Tomcat运行所需的环境变量
解压tomcat并配置环境变量
# tar xf apache-tomcat-6.0.43.tar.gz -C /usr/local
# cd /usr/local/apache-tomcat-6.0.43
# pwd
/usr/local/apache-tomcat-6.0.43
# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/apache-tomcat-6.0.43
# source /etc/profile.d/tomcat.sh
启动tomcat
# cd bin
# ./catalina.sh run
启动成功以后,可以通过浏览器测试是否成功启动tomcat
当看到这只"猫虎",就表示安装和启动成功了。
二、Tomcat的启动、关闭和自动启动
1、启动有如下方式:
1)# ./startup.sh
2)# ./catalina.sh start
3)# ./catalina.sh run
第三种方式的好处是,启动tomcat,并在当前控制台上显示启动信息,方便我们进行启动错误信息查看
2、关闭
1)# ./shutdown.sh
2)# ./catalina.sh stop
3、自动启动
很多时候,我们希望可以开机就能自动启动tomcat,因此可以使用服务脚本,来实现开机自动启动
以下为简单的tomcat启动和关闭的服务脚本
# vim /etc/rc.d/init.d/tomcat
#/bin/bash
#
# chkconfig: 2345 96 14
# description: Apache tomcat's init script
#
export JAVA_HOME=/usr/java/jdk1.7.0_75
export CATALINA_HOME=/usr/local/apache-tomcat-6.0.43
exec $CATALINA_HOME/bin/catalina.sh $*
给服务脚本执行权限
# chmod +x /etc/rc.d/init.d/tomcat
添加服务脚本到开机自动启动
# chkconfig --add tomcat
# chkconfig --list tomcat
接下来,就可以使用如下命令便捷的启动和关闭tomcat了
# service tomcat start
# service tomcat stop
三、配置Tomcat
配置Tomcat大体有以下几项配置:
修改默认端口;
JVM配置;
管理领域(Realm)、角色和用户;
控制会话;
访问JNDI和JDBC资源;
Servlet自动重载;
定制用户目录;
公共网管接口(CGI);
1、修改默认端口
默认tomcat的端口为8080,如果需要修改默认端口,有以下方式可以进行修改:
1)修改Connector的配置,在server.xml配置文件中修改
# cd /usr/local/apache-tomcat-6.0.43
# vim conf/server.xml
将<Connector port="8080" ... 中的8080 修改为 80 即可
2)当登录用户不是root时,就不具备在端口80上启动服务器的权限,可以通过iptables的端口映射来实现端口从8080到80的端口映射
# iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
# iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080
2、JVM配置
Tomcat运行起来,其实就是一个JVM实例,我们经常要设置JVM的堆栈大小,来适应我们实际生产环境的需求,大小的设置没有唯一的标准,根据实际的生产环境需求,经过反复的、不断测试而定
在上文提到的tomcat服务脚本中添加JAVA_OPTS环境变量,即可实现tomcat的JVM设置
# vim /etc/rc.d/init.d/tomcat
#/bin/bash
#
# chkconfig: 2345 96 14
# description: Apache tomcat's init script
#
export JAVA_HOME=/usr/java/jdk1.7.0_75
export CATALINA_HOME=/usr/local/apache-tomcat-6.0.43
export JAVA_OPTS="-Xmx512M -Xms512M"
exec $CATALINA_HOME/bin/catalina.sh $*
# ps aux | grep catalina
查看启动tomcat的参数-Xms -Xmx 是否为你修改的值
3、管理领域(Realm)、角色和用户
通过管理领域(Realm)、角色和用户,从而实现对tomcat的远程管理
对tomcat的远程管理大致可分为/manager, /host-manager, /status三种管理,
这三种管理的web接口,默认tomcat都自带了,但默认需要设置对应的角色和用户才能使用
管理领域:tomcat有多种Realm,这里主要以UserDatabaseRealm为例,
UserDatabaseRealm是从静态文件tomcat-user.xml中加载到内存的,因此如果修改它,需要重启tomcat服务以便修改的配置生效
1)/manager需要manager-gui角色才能使用
/manager可以实现远程部署web应用,管理web应用
# cd /usr/local/apache-tomcat-6.0.43
# cd conf
# cp tomcat-users.xml tomcat-users.xml.bak
在tomcat-users.xml中添加如下两行
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
重启服务器,在浏览器中输入http://localhost:8080/manager/html进行测试
可以看到此时tomcat服务器上部署的webapp列表。
2)/status需要manager-gui角色才能使用
/status可以实现远程查看tomcat的服务器状态,如JVM使用情况
在浏览器中输入http://localhost:8080/manager/status 进行测试
3)/host-manager需要admin-gui角色才能使用
/host-manager可以实现临时测试虚拟机的作用,因此所修改的所有配置,在重启tomcat以后都将失效,如果是临时需要进行虚拟主机的测试,可以使用/host-manager,非常方便。
4、Servlet自动重载
默认情况下,当tomcat发现server文件修改,会自动重载,在调试时,很方便,但是为了实现此功能,tomcat必须周期新的检查每个Server文件的修改,势必会消耗服务器的资源。因此如果需要关闭此功能,只需要在web应用程序中的Context元素(在web.xml中)中设置reload-able属性,并重启服务器即可。
一旦关闭自动重载功能,如果需要重新加载servlet类,可以通过/manager来加载web应用,只需要reload一下,即重新加载了所有的Servlet类。
至此,基本的tomcat使用以及配置就高一段落,tomcat的配置,在这里只介绍了其中的几点,如果有兴趣研究其他的配置,或者更系统的学习tomcat,推荐去阅读<<Tomcat权威指南>>,O'Relly系列的书籍写得都非常好,相信当你接触到它以后,会渐渐喜欢上它...,祝愿所有有志者,事竟成!