Tomcat
一、什么是Tomcat?
1.1、Tomcat介绍
Tomcat又叫Apache Tomcat最早是sun公司开发的,1999年捐献给apache基金会,隶属于雅加达项目,现在已经独立成一个顶级项目,因为tomcat技术先进,性能稳定,又是一个开源的web应用服务器,所以很多企业都在使用,很多Java开发者也在使用,开发调试jsp的首选,被更多企业用于Java容器。
Tomcat官网:https://tomcat.apache.org
1.2、同类产品
除了tomcat之外还有很多同类的Java容器产品,resin服务器/jetty服务器/weblogic服务器
1.3、Apache、Nginx、Tomcat 三者比较
Apache 老牌web服务器,功能多、性能稳定,但是配置繁琐,很多初学者望而却步
Nginx 新出之秀,支持负载均衡、反向代理,属于轻量级服务器没apache功能多,但是并发比apache高
Tomcat 能够处理动态请求,可以独立apache运行,支持jsp,缺点静态文件处理不是很好,属于java容器
tomcat是java语言开发的,nginx、apache是c语言开发的。企业一般都是nginx或者apache处理静态配合tomcat处理动态的架构
二、安装Tomcat并启动
2.1、下载并安装Tomcat
!!!部署tomcat之前,必须先安装jdk环境
java11 lts
https://www.oracle.com/cn/java/technologies/javase-jdk11-downloads.html
准备工作
关闭防火墙
关闭Selinux
1.安装并验证jdk环境
[root@10-255-20-182 ~]
[root@10-255-20-182 ~]
java version "11.0.9" 2020-10-20 LTS java版本
Java(TM) SE Runtime Environment 18.9 (build 11.0.9+7-LTS) javase版本
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.9+7-LTS, mixed mode) java虚拟机版本
1.1.压缩包安装
[root@test ~]
[root@test ~]
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@test ~]
[root@test ~]
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
2.安装并验证tomcat
2.1下载
[root@10-255-20-182 ~]
2.2.解压安装包(tomcat属于二进制安装包,无需编译安装)
[root@10-255-20-182 ~]
[root@10-255-20-182 ~]
bin conf lib logs README.md RUNNING.txt webapps
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
2.3.启动并验证
[root@10-255-20-182 ~]
[root@10-255-20-182 bin]
Using CATALINA_BASE: /root/tomcat1
Using CATALINA_HOME: /root/tomcat1
Using CATALINA_TMPDIR: /root/tomcat1/temp
Using JRE_HOME: /usr
Using CLASSPATH: /root/tomcat1/bin/bootstrap.jar:/root/tomcat1/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@10-255-20-182 webapps]
Apache Tomcat/9.0.40
[root@10-255-20-182 webapps]
tcp LISTEN 0 1 127.0.0.1:8005 *:* users:(("java",pid=15852,fd=56))
tcp LISTEN 0 100 *:8080 *:* users:(("java",pid=15852,fd=43))
2.2、Tomcat端口
tomcat常见端口不是80,tomcat三个端口分别是
8080 web端口
8005 关闭端口
8009 ajp端口(默认关闭ajp端口)
2.3、Tomcat常见目录及文件
[root@10-255-20-182 tomcat1]# ls
bin conf lib logs webapps temp work
bin:tomcat可执行文件
----startup.sh 启动脚本
----shutdown.sh 关闭脚本
----catalina.sh 功能脚本
conf:tomcat配置文件
----server.xml 设备端口/域名等
----web.xml 设备页面
----tomcat-users.xml 管理tomcat用户
lib:tomcat用的关联库
logs:日志文件
localhost_access_log.2020-11-30.txt 访问日志
catalina.2020-11-30.log 输出日志
host-manager.2020-12-02.log host-manager项目的日志信息
manager.2020-12-02.log manager日志
localhost.2020-11-30.log 应用初始化错误日志
webapps:存放tomcat发布目录
----ROOT tomcat默认页面
temp:tomcat运行临时文件
work:存放jsp编译文件
三、关键配置文件详解
3.1、server.xml
......远程关闭端口,企业生产环境一定要更改,shutdown命令也一定要做更改
<Server port="8005" shutdown="SHUTDOWN">
......
......tomcat web端口,也可以更改
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
......ajp端口,默认关闭状态
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
......
3.2、web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
定义欢迎页,默认读取第一个
<session-config>
<session-timeout>30</session-timeout>
</session-config>
会话超时时间
3.3、tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
定义角色跟用户
manager-gui html接口
manager-script 纯文本接口
manager-jmx 代理接口
manager-status 访问状态查看
admin-gui 允许用户访问html管理页面
admin-script 允许用户访问文本管理界面
四、发布静态网页
1.创建目录
[root@10-255-20-182 webapps]
2.创建静态文件
[root@10-255-20-182 webapps]
3.重启tomcat
[root@10-255-20-182 bin]
4.测试
[root@10-255-20-182 webapps]
Wed Dec 02 11:01:26 CST 2020
五、发布动态网页
准备工作
下载jpress,官网http://www.jpress.io
1.文件放入webapps
[root@10-255-20-182 webapps]
docs examples host-manager jpress.jar manager ROOT test
2.重启tomcat
[root@10-255-20-182 bin]
3.查看webapps(tomcat会自动解压跟.jar同名的目录)
[root@10-255-20-182 webapps]
docs examples host-manager jpress manager ROOT test
4.安装数据库
[root@10-255-20-182 ~]
5.启动数据库
[root@10-255-20-182 ~]
6.创建数据库(默认没有密码)
[root@10-255-20-182 ~]
Enter password:
MariaDB [(none)]> create database jpress charset utf8; 创建数据库
MariaDB [(none)]> grant all on jpress.* to jpress@'localohost' identified by 'password'; 授权用户并设置用户密码
7.重启tomcat
[root@10-255-20-182 bin]
8.浏览器登录设置。
9.网页验证
[root@10-255-20-182 ~]
myweb
[1]欢迎使用JPress
六、Tomcat与Nginx结合
nginx反向代理可以实现动态请求转发到tomcat
1.更改nginx配置文件
[root@10-255-20-182 sbin]
server {
location /test {
proxy_pass http://127.0.0.1:8080;
}
}
2.测试
[root@10-255-20-182 sbin]
Wed Dec 02 11:24:08 CST 2020
七、Tomcat多实例
7.1、多端口意义
意义:
避免资源浪费,合理充分利用硬件资源
注意:
开启多实例要保证三个端口不能冲突
7.2、如何开启
1.复制
[root@10-255-20-182 ~]
2.更改端口(所有端口+1)
8005 web端口
8081 远程关闭端口
8009 ajp协议端口
[root@10-255-20-182 ~]
......web端口
<Server port="8006" shutdown="SHUTDOWN">
......
......tomcat远程关闭端口
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
......ajp端口,默认关闭状态
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
......
3.验证
[root@10-255-20-182 ~]
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 15852/java
tcp 0 0 127.0.0.1:8006 0.0.0.0:* LISTEN 6393/java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 15852/java
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 6393/java
可以使用
jmap -heap tomcat进程ID
命令来查看tomcat里面内存的使用情况
修改conf目录下面的server.xml文件来配置tomcat的最大连接数和线程数
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxConnections="2000"
maxThreads="100"
acceptCount="1000"/>
maxConnections="2000"表示允许的最大连接数是2000
maxThreads="100"表示开启100个线程
acceptCount="1000"表示系统达到最大连接数,然后开始排队的最大排队连接数
根据上面的配置可以看的出来,当系统达到3000连接数以后,在有连接过来将不会被处理
至此tomcat和jdk就安装完成了
tomcat最好是要和apache或者nginx一起使用,不要单独直接对外开放端口