一.Tomcat介绍
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
二.安装Tomcat
安装前准备:
Tomcat运行需要依赖Java,所以安装Tomcat先安装JDK
先检查本机是否安装JDK
[root@server1 ~]# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
可以看到我的Redhat已经安装了JDK
如果没有则需要安装
安装方法有两种
(1)yum安装
如果Linux没有配置yum源可以参考https://blog.csdn.net/lucky_ykcul/article/details/100877505配置yum源
[root@server1 ~]# yum install java
(2)rpm安装
先下载JDK
JDK下载地址:*
http://www.oracle.com/technetwork/java/javase/downloads/
Tomcat不同版本对应Java不同版本,大家可以根据需要下载需要的版本
tomcat下载地址:http://tomcat.apache.org
我的JDK是1.8的所以我下载了Tomcat8
安装Tomcat
tomcat下载地址
https://tomcat.apache.org/download-80.cgi
[root@server1 Downloads]# ls
apache-tomcat-8.5.46 docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
apache-tomcat-8.5.46.tar.gz epel-release-7-11.noarch.rpm
container-selinux-2.107-1.el7_6.noarch.rpm zabbix-server-mysql-3.2.0-1.el7.x86_64.rpm
container-selinux-2.74-1.el7.noarch.rpm
[root@server1 Downloads]# mv apache-tomcat-8.5.46 /usr/local/tomcat8
设置JAVA环境变量
先找一下Java位置
[root@server1 bin]# which java
/usr/bin/java
在/etc/profile中设置Java变量
[root@server1 bin]# vim /etc/profile
JAVA_HOME="/usr/local/java"
PATH=$PATH:$JAVA_HOME/bin:/usr/local/tomcat8/bin
[root@tomcat1 ~]# source /etc/profile #使变量生效
5.启动Tomcat
[root@server1 bin]# cd /usr/local/tomcat8/bin/
[root@server1 bin]# ls
bootstrap.jar ciphers.bat configtest.bat digest.sh shutdown.sh tomcat-native.tar.gz version.sh
catalina.bat ciphers.sh configtest.sh setclasspath.bat startup.bat tool-wrapper.bat
catalina.sh commons-daemon.jar daemon.sh setclasspath.sh startup.sh tool-wrapper.sh
catalina-tasks.xml commons-daemon-native.tar.gz digest.bat shutdown.bat tomcat-juli.jar version.bat
[root@server1 bin]# sh startup.sh
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcatjuli.jar
Tomcat started.
看下是否有Tomcat进程
[root@server1 bin]# ps -ef |grep java
root 4553 1 0 22:16 pts/0 00:00:03 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat8 -Dcatalina.home=/usr/local/tomcat8 -Djava.io.tmpdir=/usr/local/tomcat8/temp org.apache.catalina.startup.Bootstrap start
root 4782 2535 0 22:23 pts/0 00:00:00 grep --color=auto java
默认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.修改Tomcat端口号
[root@tomcat1 ~]# vim /usr/local/tomcat8/conf/server.xml
修改端口:
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
重新查看端口
[root@tomcat1 ~]# /usr/local/tomcat8/bin/startup.sh
[root@tomcat1 ~]# netstat -anpt | grep java
tcp 0 0 0.0.0.0:9005 0.0.0.0:* LISTEN 5625/java
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 5625/java
tcp 0 0 0.0.0.0:9009 0.0.0.0:* LISTEN 5625/java
注意:关闭防火墙和selinux安全机制
systemctl stop firewalld 临时关闭防火墙
setenforce 0 关闭Selinux
三.Tomcat各端口含义及作用
8005端口
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
tomcat监听的关闭端口
当执行shutdown.sh关闭tomcat就是链接8005端口执行SHUTDOWN命令
8080(8443)端口
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
该port用于监听浏览器发送的请求,设置为80后可以直接使用http://localhost访问
其中redirectPort表示如果发送的是https请求,就将请求发送到8443端口
8009端口
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Nginx、Apache等反向代理tomcat时就可以使用ajp协议反向代理到该端口。
虽然我们经常使用http反向代理到8080端口,但由于ajp建立tcp链接后一般长时间保持,从而减少Http反复进行tcp链接和断开的开销,所以反向代理中ajp是比http高效的。
四.Tomcat优化
1.内存优化
[root@tomcat1 conf]# vim catalina.sh
JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’
-Xms JVM初始化堆的大小
-Xmx JVM堆的最大值
重启Tomcat生效
2.线程优化
maxThreads=“X” 表示最多同时处理X个连接 minSpareThreads=“X” 初始化X个连接
maxSpareThreads=“X” 表示如果最多可以有X个线程,一旦超过X个,则会关闭不在需要的线程
3.避免root用户登录
创建普通用户,使用普通用户登录Tomcat,尽量避免使用root用户登录、操作。