tomcat-web容器的介绍

时间:2021-07-27 15:25:06

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

http://tomcat.apache.org/

 tomcat-web容器的介绍

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

 如图:

 tomcat-web容器的介绍

立即生效:

# 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

tomcat-web容器的介绍

命令如下:

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端口

tomcat-web容器的介绍

重新服务

 

 

四、管理

1、启动服务

进入目录:

#cd /usr/local/tomcat/apache-tomcat-8.0.23/bin

启动服务

# nohup ./startup.sh &

 

查看启动进程如下:

tomcat-web容器的介绍

 

打开网页,输入:http://192.168.188.26:9090/

tomcat-web容器的介绍

表明tomat安装成功。

 

2、停止服务

查找tomcat进程

# ps aux|grep tomcat

 

杀进程

Kill-9 17166

        

  

3、查看版本

#./version

 tomcat-web容器的介绍

4、设置管理密码

管理页面访问:

http://192.168.188.26:9090/manager

初始使用时,提示输入用户和密码

tomcat-web容器的介绍

修改/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>

 

重启服务后,重新登入

tomcat-web容器的介绍

 

管理员详细介绍,请查看第五章节。

 

五、控制台

http://192.168.188.26:9090/manager

如果需要输入用户密码,请详细看4节的设置管理密码

tomcat-web容器的介绍

5.1、功能

1、应用程序列表

tomcat-web容器的介绍

2、部署应用程序

界面可以选择上传War file 文件,点击deploy

 

2、服务状态(server status)

tomcat-web容器的介绍

六、配置

配置前先了解下tomcat的目录结构。

6.1、目录结构

5.1.4、目录结构

tomcat-web容器的介绍

目录说明:

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版本一致

tomcat-web容器的介绍

3、重新run as 即可发布程序到本地安装目录

 

部署后,产生的文件如下:

tomcat-web容器的介绍

会自动备份conf下的配置文件,生成到新的目录。

 tomcat-web容器的介绍

通过比较部署前和部署后的配置文件(server.xml,web.xml, context.xml),只有server.xml 发生变化。

tomcat-web容器的介绍

多一个context节点。

docBase: 表示项目的跟目录

path:表示项目的名称,访问路径:http://localhost:8080/JSP_JavaBean_servlet

reloadable = true: 表示这个站点可以自动加载,代码重新部署无需重启服务。

source : 表示指定服务的名称。

 

通过参考这些,我们也可以进行手工部署。

7.1.2、拷贝代码手工部署

1、修改配置文件 server.xml

新增如下context节点

tomcat-web容器的介绍

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;

 

在部署代码前,需要确认数据库连接是否正常

 tomcat-web容器的介绍

7.2.1、拷贝代码手工部署

1、配置server.xml

tomcat-web容器的介绍

tomcat-web容器的介绍

2、将代码手工通过ftp上传linux的tomcat安装目录的webapps路径下

 

 

7.2.2、拷贝war手工部署

将JSP_JavaBean_servlet.war上传到webapps目录下

自动解压

7.2.3、通过控制台部署

登录后台:http://192.168.188.26:9090/manager

tomcat-web容器的介绍

选择文件,上传本地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