Tomcat系统文档
文档描述
主要了解Tomcat概念、作用、安装、启动及配置和部署应用程序。
二、Tomcat概念和作用
1、概念
Tomcat是Apache 软件基金会(ApacheSoftware Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器。
Tomcat部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache独立的进程单独运行的,
当配置正确时,Apache 为HTML页面服务,而Tomcat实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0。
2、特性
开源,
免费
技术先进,支持最新的jsp和servlet技术
3、应用
在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
4、版本
Tomcat 目前最新版本为8.0,7.0和6.0 也在常用中
Tomcat和servlet/JSP版本对应如下
Servlet/JSP____Apache Tomcat 版本。
---------------------------------------------
3.1/2.3____ 8.0.X[1]
3.0/2.2____ 7.0.X
2.5/2.1____ 6.0.X
三、安装
3.1、windows安装
3.1.1、工具准备
官网下载JDK,和tomcat,这个参考3.2.1节点,选择window版本 zip下载
3.1.2、工具准备
Tomcat解压即可使用
JDK解压即可使用,需要配置环境变量 JAVA_HOME 和PATH路径
3.2、linux安装
3.2.1、工具准备
需要JDK和tomcat安装包 ,这里都是使用最新安装包
1、下载JDK
参考文档:http://jingyan.baidu.com/article/e4511cf3e112ac2b845eaf8f.html
jdk-8u45-linux-x64.tar.gz
2、tomcat 8
apache-tomcat-8.0.23.tar.gz
3.2.2、上传JDK和Tomcat
在/usr/local目录下,新增java和tomcat目录。
/usr/local/java
/usr/local/tomcat
将安装包分别上传java和tomcat目录下。
3.2.3、安装JDK
来到JDK安装包所在的目录:
#cd /usr/local/java
1、解压
#tar –zxvf jdk-8u45-linux-x64.tar.gz
生成JDK目录:/usr/local/java/jdk1.8.0_45
# ./java –version
显示jdk版本表示安装成功
2、配置环境变量
# vi /etc/profile
在最后添加变量设置
export JAVA_HOME=/usr/local/java/jdk1.7
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:
$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
如图:
立即生效:
# source /etc/profile
3.2.4、安装Tomcat
来到安装包所在的目录:
#cd /usr/local/tomcat
#tar –zxvf apache-tomcat-8.0.23.tar.gz
生成目录:apache-tomcat-8.0.23
3.2.5、启动时指定JDK
若环境变量已经配置了JAVA_HOME并且在PATH路径添加了JAVA_HOME则,tomcat启动时默认调用这个。
若想指定的JDK来运行,需要如下配置
配置/usr/local/tomcat/bin/catalina.sh文件
#vi /usr/local/tomcat/apache-tomcat-8.0.23/bin/catalina.sh
编辑文件
添加 JAVA_HOME 和JRE_HOME
命令如下:
exportJAVA_HOME=/usr/local/java/jdk1.8.0_45
exportJRE_HOME=/usr/local/java/jdk1.8.0_45/jre
还推荐在setclasspath.sh文件开头也添加上面配置
3.2.6、配置内置端口
本机安装多个tomcat或者多个web容器时,则出现默认端口号被占用,则需修改内置端口。
#cd /usr/local/tomcat/apache-tomcat-8.0.23/conf
编辑:server.xml文件,修改8080端口为9090端口
重新服务
四、管理
1、启动服务
进入目录:
#cd /usr/local/tomcat/apache-tomcat-8.0.23/bin
启动服务
# nohup ./startup.sh &
查看启动进程如下:
打开网页,输入:http://192.168.188.26:9090/
表明tomat安装成功。
2、停止服务
查找tomcat进程
# ps aux|grep tomcat
杀进程
Kill-9 17166
3、查看版本
#./version
4、设置管理密码
管理页面访问:
http://192.168.188.26:9090/manager
初始使用时,提示输入用户和密码
修改/conf/tomcat_users.xml文件
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat"roles="tomcat"/>
<user username="both" password="tomcat"roles="tomcat,role1"/>
<user username="role1" password="tomcat"roles="role1"/>
</tomcat-users>
修改/conf/tomcat_users.xml文件
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="role1"/>
<user username="zhenyun.su" password="daphne"roles="manager-gui"/>
<user username="both" password="tomcat"roles="manager-gui,role1"/>
<user username="role1" password="tomcat"roles="role1"/>
</tomcat-users>
重启服务后,重新登入
管理员详细介绍,请查看第五章节。
五、控制台
http://192.168.188.26:9090/manager
如果需要输入用户密码,请详细看4节的设置管理密码
5.1、功能
1、应用程序列表
2、部署应用程序
界面可以选择上传War file 文件,点击deploy
2、服务状态(server status)
六、配置
配置前先了解下tomcat的目录结构。
6.1、目录结构
5.1.4、目录结构
目录说明:
bin :各种执行命令,比如启动脚本 startup.sh
conf:配置文件,比如server.xml 配置监听端口,web.xml
lib : 存放Tomcat运行需要的jar包
logs : Tomcat运行的相关日志文件,比如启动时的日志 catalina.log
temp : Tomcat运行的临时文件。
webapps: Web应用的发布目录,默认情况下把Web应用文件放于此目录。
work: Tomcat的工作目录,默认情况下把编译JSP文件生成的servlet类文件放于此目录下
6.2、配置
http://blog.csdn.net/gyming/article/details/36060843
1、JVM内存配置
编辑脚本:/bin/catalina.sh
新增配置如下:
JAVA_OPTS="-server -Xms256m -Xmx512m-XX:PermSize=64M -XX:MaxPermSize=128m
Windows下也是这样来配置的。
参数解释:
-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:java Heap初始大小。 默认是物理内存的1/64。
-Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。
-XX:PermSize:设定内存的永久保存区初始大小,缺省值为64M。(我用visualvm.exe查看的)
-XX:MaxPermSize:设定内存的永久保存区最大 大小,缺省值为64M。(我用visualvm.exe查看的)
-XX:SurvivorRatio=2 :生还者池的大小,默认是2,如果垃圾回收变成了瓶颈,您可以尝试定制生成池设置
-XX:NewSize: 新生成的池的初始大小。 缺省值为2M。
-XX:MaxNewSize: 新生成的池的最大大小。 缺省值为32M。
如果 JVM 的堆大小大于 1GB,则应该使用值:-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16,或者将堆的总大小的 50% 到 60% 分配给新生成的池。调大新对象区,减少Full GC次数。
2、线程数配置
在tomcat配置文档server.xml中的配置中,和连接数相关的参数有:
maxThreads:
Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。
acceptCount:
指定当任何能够使用的处理请求的线程数都被使用时,能够放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。
minSpareThreads:
Tomcat初始化时创建的线程数。默认值4。
maxSpareThreads:
一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值50。
enableLookups:
是否反查域名,默认值为true。为了提高处理能力,应配置为false
connnectionTimeout:
网络连接超时,默认值60000,单位:毫秒。配置为0表示永不超时,这样配置有隐患的。通常可配置为30000毫秒。
maxKeepAliveRequests:
保持请求数量,默认值100。
bufferSize:
输入流缓冲大小,默认值2048 bytes。
compression:
压缩传输,取值on/off/force,默认值off。
其中和最大连接数相关的参数为maxThreads和acceptCount。假如要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核
参数配置,通常Windows是2000个左右,Linux是1000个左右。
3、tomcat中如何禁止和允许列目录下的文档
在{tomcat_home}/conf/web.xml中,把listings参数配置成false即可,如下:
<servlet>
...
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
...
</servlet>
4、tomcat中如何禁止和允许主机或IP地址访问
<Host ...>
...
<ValveclassName="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
<ValveclassName="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
...
</Host>
七、部署应用程序
部署的应用程序,请查看我的博文并下载项目源代码:
http://blog.csdn.net/big2008bone/article/details/46723325
7.1、部署到本地安装的tomcat
7.1.1、使用eclipse来自动部署
参考这边文章即可:http://blog.csdn.net/lucklq/article/details/7621807
提示:
1、配置过程,需要单独启动Tomcat的服务。
2、web项目中指定tomcat 的lib必须和tomcat版本一致
3、重新run as 即可发布程序到本地安装目录
部署后,产生的文件如下:
会自动备份conf下的配置文件,生成到新的目录。
通过比较部署前和部署后的配置文件(server.xml,web.xml, context.xml),只有server.xml 发生变化。
多一个context节点。
docBase: 表示项目的跟目录
path:表示项目的名称,访问路径:http://localhost:8080/JSP_JavaBean_servlet
reloadable = true: 表示这个站点可以自动加载,代码重新部署无需重启服务。
source : 表示指定服务的名称。
通过参考这些,我们也可以进行手工部署。
7.1.2、拷贝代码手工部署
1、修改配置文件 server.xml
新增如下context节点
Workdir: 表示tomcat运行jsp或servlet后产生的java或class文件。
2、将JSP_JavaBean_servlet代码拷贝到
E:\6_Java\6_webcontainer\apache-tomcat\apache-tomcat-8.0.21\webapps\目录下
重新启动服务。访问:http://localhost:8080/JSP_JavaBean_servlet1/
7.1.3、使用war手工部署
将JSP_JavaBean_servlet.war拷贝到
apache-tomcat\apache-tomcat-8.0.21\webapps目录下,若tomcat服务已经开了,war文件自动解压,即可使用http://localhost:8080/JSP_JavaBean_servlet
若拷贝到其他目录,则需要配置server.xml下,新增context节点,来指定目录,请参考7.1.2,手工配置。
7.2、部署到远程的tomcat
环境说明:
linux= centos 5.10 64 位
JDK = jdk1.8
Tomcat = tomcat 8.0v
Mysql = mysql5
提示:mysql和tomcat同一台服务器
数据库代码部署:
(连接到mysql创建数据库demo,及表user)
Createdatabase demo;
DROPTABLE IF EXISTS `user`;
CREATETABLE `user` (
`id` int(10) unsigned NOT NULLAUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`iphone` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;
在部署代码前,需要确认数据库连接是否正常
7.2.1、拷贝代码手工部署
1、配置server.xml
2、将代码手工通过ftp上传linux的tomcat安装目录的webapps路径下
7.2.2、拷贝war手工部署
将JSP_JavaBean_servlet.war上传到webapps目录下
自动解压
7.2.3、通过控制台部署
登录后台:http://192.168.188.26:9090/manager
选择文件,上传本地war文件,然后点击deploy即可部署
八、性能监控
以后再补上
九、变更记录&常见问题&参考资料
9.1、变更记录
9.2、常见问题
1、访问网页报错如下
[Fiddler] The connection to '192.168.188.26' failed.
Error: ConnectionRefused (0x274d).
System.Net.Sockets.SocketException 由于目标机器积极拒绝,无法连接
后天tomcat 服务访问不通,可能原因tomcat服务挂掉
9.3、参考资料
参考博文:
http://blog.sina.com.cn/s/blog_6dae5a690100xgh3.html