Tomcat 服务器是一个免费的开放源代码的 web 应用服务器, 属于轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用, 是开发和调试 JSP 程序的首选. 对于一个初学者来说, 可以这样认为, 当在一台机器上配置好 Apache 服务器, 可利用它响应 html(标准通用标记语言下的一个应用) 页面的访问请求. 实际上 Tomcat 是 Apache 服务器的扩展, 但运行时它是独立运行的, 所以当你运行 tomcat 时, 它实际上作为一个与 Apache 独立的进程单独运行的.
一. Tomcat 介绍
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器, 属于轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用, 是开发和调试 JSP 程序的首选. 对于一个初学者来说, 可以这样认为, 当在一台机器上配置好 Apache 服务器, 可利用它响应 HTML(标准通用标记语言下的一个应用) 页面的访问请求. 实际上 Tomcat 是 Apache 服务器的扩展, 但运行时它是独立运行的, 所以当你运行 tomcat 时, 它实际上作为一个与 Apache 独立的进程单独运行的.
诀窍是, 当配置正确时, Apache 为 HTML 页面服务, 而 Tomcat 实际上运行 JSP 页面和 Servlet. 另外, Tomcat 和 IIS 等 Web 服务器一样, 具有处理 HTML 页面的功能, 另外它还是一个 Servlet 和 JSP 容器, 独立的 Servlet 容器是 Tomcat 的默认模式. 不过,
Tomcat 处理静态 HTML 的能力不如 Apache 服务器.
二. Tomcat 安装
安装前准备:
在安装 Tomcat 之前必须先安装 JDK,JDK 全称是 Java Development Kit, 是 SUN 公司免费提供的 java 语言的软件开发工具包, 其中包含 Java 虚拟机 (JVM), 编写好的 java 源程序经过编译可生产 java 字节码, 只要安装了 JDK, 就可以利用 JVM 解释这些
字节码文件, 从而保证了 Java 的跨平台性.
在平台兼容性方面, JDK 作为解释字节码文件并根据此调用操作系统的 API 实现对应功能的 java 虚拟机, 与操作系统位数密切相关, 因此存在不同类型的版本, Tomcat 也具有上述特征, 所以需要预先下载好 JDK 和 Tomcat
JDK 下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/
tomcat 下载地址: http://tomcat.apache.org
1. 卸载系统自带的 openjdk 并安装 jdk
- [root@tomcat1 ~]# rm -rf $(which java)
- [root@tomcat1 ~]# tar xf jdk-7u80-Linux-x64.tar
- [root@tomcat1 ~]# mv jdk1.7.0_80/ /usr/local/java
2. 解压安装 Tomcat
- [root@tomcat1 ~]# tar xf apache-tomcat-8.5.20.tar.gz
- [root@tomcat1 ~]# mv apache-tomcat-8.5.20 /usr/local/tomcat8
3. 设置 JAVA 环境变量
- [root@tomcat1 ~]# VIM /etc/profile.d/java.sh
- export JAVA_HOME="/usr/local/java" ## 设置 java 根目录
- export PATH=$PATH:$JAVA_HOME/bin:/usr/local/tomcat8/bin #在 PATH 环境变量中添加 java 跟目录的 bin 子目录
- [root@tomcat1 ~]# . /etc/profile #将 java.sh 脚本导入到环境变量, 使其生效
4. 运行 java -version 或者 javac -version 命令查看 java 版本
- [root@tomcat1 ~]# java -version
- java version "1.7.0_65"
- Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
- Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
5. 启动 Tomcat
- [root@tomcat1 ~]# /usr/local/tomcat7/bin/startup.sh
- Using CATALINA_BASE: /usr/local/tomcat7
- Using CATALINA_HOME: /usr/local/tomcat7
- Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
- Using JRE_HOME: /usr/local/java
- Using CLASSPATH: /usr/local/tomcat7/bin/Bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
- Tomcat started.
Tomcat 默认运行在 8080 端口
- [root@tomcat1 ~]# netstat -anpt |grep :8080
- tcp 0 0 :::8080 :::* LISTEN 3318/java
6. 关闭 Tomcat
[root@tomcat1 ~]# /usr/local/tomcat7/bin/shutdown.sh
浏览器访问测试 http://IP: 端口
7. 修改端口号
[root@tomcat1 ~]# VIM /usr/local/tomcat8/conf/server.xml
修改端口:
- 8080 - 9528
- 8005 - 9529
- 8009 - 9530
- [root@tomcat1 ~]# /usr/local/tomcat8/bin/startup.sh
- [root@tomcat1 ~]# netstat -anpt | grep java
- tcp 0 0 0.0.0.0:9528 0.0.0.0:* LISTEN 5625/java
- tcp 0 0 127.0.0.1:9529 0.0.0.0:* LISTEN 5625/java
- tcp 0 0 0.0.0.0:9530 0.0.0.0:* LISTEN 5625/java
注意: 关闭防火墙和 selinux 安全机制, 如果是阿里云服务器, 控制台安全组需要放行 TCP 协议 8080 端口.
systemctl disable firewalld 永久关闭防火墙
systemctl stop firewalld 临时关闭防火墙
setenforce 0 关闭 Selinux
8.Tomcat 配置相关说明
/usr/local/tomcat 主目录 (安装目录)
bin 存放 Windows 或 Linux 平台上启动或关闭的 Tomcat 的脚本文件
conf 存放 Tomcat 的各种全局配置文件, 其中最主要的是 server.xml 和 Web.xml
lib 存放 Tomcat 运行需要的库文件 (JARS)
logs 存放 Tomcat 执行时的 LOG 文件
webapps Tomcat 的主要 Web 发布目录 (包括应用程序事例)htdocs(HTML PHP)
work 存放 jsp 编译后产生的 class 文件
[root@tomcat1 ~]# ls /usr/local/tomcat/conf/
catalina.policy 权限控制配置文件
catalina.properties Tomcat 属性配置文件
context.xml 上下文配置文件 (selinux)
logging.properties 日志 log 相关配置文件
server.xml 主配置文件
tomcat-users.xml manager-gui 管理用户配置文件 (Tomcat 安装后生成的管理界面, 该文件可开启访问)
Web.xml Tomcat 的 servlet,servlet-mapping,filter,MIME 等相关配置
server.xml 主要配置文件, 可修改启动端口, 设置网站根目录, 虚拟主机, 开启 https 等功能.
三. Tomcat 优化
1. 禁用 tomcat 的 AJP 协议
[root@tomcat1 conf]# VIM server.xml
注释:
2. 修改通讯模式 BIO 修改为 NIO 提高并发处理能力
# 去掉注释
3. 启用外部连接池
- # 去掉注释并修改 maxThreads:
- maxThreads="300" minSpareThreads="4"/>
- -->
- # 去掉注释并修改 protocol:
- port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
- connectionTimeout="20000"
- redirectPort="8443" />
- # 删除俩参数:
- (这是删除后的)
- #
- port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
- maxThreads="1000"
- minSpareThreads="100"
- maxSpareThreads="200"
- acceptCount="1000"
- disableUploadTimeout="true"
- connectionTimeout="20000"
- URIEncoding="UTF-8"
- enableLookups="false"
- compression="on"
- compressionMinSize="2048"
- compressableMimeType="text/html,text/xml,text/javascript,text/CSS,text/plain,image/gif,image/jpg,image/png"
- redirectPort="8443" />
4.JVM 调优生产配置
编辑 catalina.sh 配置文件
- [root@tomcat1 ~]# VIM /usr/local/tomcat8/bin/catalina.sh
- # OS specific support. $var _must_ be set to either true or false. 下面添加
- JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+UseParallelGCThreads=8 -XX:CMSInitiatingOccupancyFraction=80 -XX:
- +UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:-PrintGC -XX:-PrintGCDetails -XX:-PrintGCTimeStamps -Xloggc:../logs/gc.log"
参数
描述
-Xms
堆内存初始大小, 单位 m,g
-Xmx
堆内存最大允许大小, 一般不要大于物理内存的 80%
-XX:PermSize
非堆内存初始大小, 一般应用设置初始化 200m, 最大 1024m 就够了
-XX:MaxPermSize
非堆内存最大允许大小
-XX:+UseParallelGCThreads=8
并行收集器线程数, 同时有多少个线程进行垃圾回收, 一般与 CPU 数量相等
-XX:+UseParallelOldGC
指定老年代为并行收集
-XX:+UseConcMarkSweepGC
CMS 收集器 (并发收集器)
-XX:+UseCMSCompactAtFullCollection
开启内存空间压缩和整理, 防止过多内存碎片
5. 生产配置实例
- #server.xml 配置文件下:
- [root@tomcat1 ~]# VIM /usr/local/tomcat8/conf/server.xml
- #
- port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
- maxThreads="1000"
- minSpareThreads="100"
- maxSpareThreads="200"
- acceptCount="1000"
- disableUploadTimeout="true"
- connectionTimeout="20000"
- URIEncoding="UTF-8"
- enableLookups="false"
- compression="on"
- compressionMinSize="2048"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png"
- redirectPort="8443" />
- # 参数说明:
org.apache.coyote.http11.Http11NioProtocol: 调整工作模式为 Nio
maxThreads: 最大线程数, 默认 150. 增大值避免队列请求过多, 导致响应缓慢.
minSpareThreads: 最小空闲线程数.
maxSpareThreads: 最大空闲线程数, 如果超过这个值, 会关闭无用的线程.
acceptCount: 当处理请求超过此值时, 将后来请求放到队列中等待.
disableUploadTimeout: 禁用上传超时时间
connectionTimeout: 连接超时, 单位毫秒, 0 代表不限制
URIEncoding:URI 地址编码使用 UTF-8
enableLookups: 关闭 dns 解析, 提高响应时间
compression: 启用压缩功能
compressionMinSize: 最小压缩大小, 单位 Byte
compressableMimeType: 压缩的文件类型
来源: http://server.51cto.com/sOS-598059.htm