CentOS7安装Tomcat8

Tomcat 是一个由Apache开发的开源Java Web应用服务器。

一、介绍及下载

1.1 版本支持

需要 JAVA环境,自然涉及到对应的版本。版本选择?

目前(2026-01-01)还支持的Tomcat版本。

Apache Tomcat Version Latest Released Version Supported Java Versions
11.0.x 11.0.15 17 and later
10.1.x 10.1.50 11 and later
9.0.x 9.0.113 8 and later

已经不支持Tomcat版本

Apache Tomcat Version Final Released Version Supported Java Versions EOL Date
10.0.x (superseded) 10.0.27 (superseded) 8 and later 2022-10-31
8.5.x (archived) 8.5.100 (archived) 7 and later 2024-03-31
8.0.x (superseded) 8.0.53 (superseded) 7 and later 2018-06-30
7.0.x (archived) 7.0.109 (archived) 6 and later (7 and later for WebSocket) 2021-03-31
6.0.x (archived) 6.0.53 (archived) 5 and later 2016-12-31
5.5.x (archived) 5.5.36 (archived) 1.4 and later 2012-09-31
4.1.x (archived) 4.1.40 (archived) 1.3 and later 2009-06-25
3.3.x (archived) 3.3.2 (archived) 1.1 and later 2004-03-09

1.2 下载

归档页

这里以最后的 8.5.100 为例。

1
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.100/bin/apache-tomcat-8.5.100.tar.gz

二、安装

2.1 安装JDK

CentOS7安装JDK8

1
tar xf jdk-8u461-linux-x64.tar.gz -C /usr/local/
1
ln -s /usr/local/jdk1.8.0_461/ /usr/local/java
1
2
3
4
5
6
7
cat >> /etc/profile.d/jdk.sh <<-EOF
#!/bin/bash
# 指定java安装目录
export JAVA_HOME=/usr/local/java
# 用于指定java系统查找命令的路径
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
1
source /etc/profile.d/jdk.sh
1
java -version

2.2 安装tomcat8

  1. 解压
1
tar xf apache-tomcat-8.5.100.tar.gz -C /usr/local
  1. 创建软链接
1
ln -s /usr/local/apache-tomcat-8.5.100/ /usr/local/tomcat
  1. 设置环境变量
1
2
3
4
5
cat >> /etc/profile.d/tomcat.sh <<-EOF
#!/bin/bash
export TOMCAT_HOME=/usr/local/tomcat
export PATH=\$PATH:\$TOMCAT_HOME/bin:\$JAVA_HOME/bin
EOF
  1. 刷新环境变量
1
source /etc/profile.d/tomcat.sh
  1. 验证
1
catalina.sh version

三、使用

3.1 管理端

默认打不开,需要修改配置文件

  1. 修改配置文件
1
vim /usr/local/tomcat/conf/tomcat-users.xml
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="1" roles="admin-gui,manager-gui"/>
</tomcat-users>
  1. 允许外部访问
1
cd /usr/local/tomcat/webapps
1
sed -i 's#127#\\d+#g' ./host-manager/META-INF/context.xml ./host-manager/WEB-INF/manager.xml ./manager/META-INF/context.xml
  1. 重启
1
2
catalina.sh stop
catalina.sh start
  1. 访问

http://192.168.10.101:8080

3.2 systemd 管理

1
vim /etc/sysconfig/tomcat
1
2
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:/usr/bin:/usr/sbin
1
vim /usr/lib/systemd/system/tomcat.service
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Tomcat java web container
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/usr/local/tomcat/bin/shutdown.sh &&sleep 1 && /usr/local/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
1
systemctl daemon-reload
1
systemctl enable --now tomcat

3.3 服务端

1
vim /usr/local/tomcat/conf/server.xml

主要定义端口,虚拟主机,日志等的一些参数。

默认的服务端配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

对比ngx

对比项 tomcat nginx
虚拟主机 Host server {}
域名 name=”域名” server_name java.bravexist.cn;
端口 Connector部分 port=”8080” listen 80;
站点目录 appBase=”webapps” root /www/wwwroot/blog;
自动解压 unpackWARs=”true”
自动部署 autoDeploy=”true”
日志目录 <Valve 部分 日志目录 directory=”logs” access_log /var/log/nginx/access.log main;
日志名字 <Valve 部分前半部分prefix=”localhost_access_log”
后半部分suffix=”.txt”
access_log /var/log/nginx/access.log main;
日志格式 <Valve 部分pattern=”%h %l %u %t “%r” %s %b” log_format main …………….;

日志格式

说明 tomcat nginx
定义访问日志的格式 Host部分的pattern定义 http区域 log_format部分
客户端ip地址 %h $remote_addr
访问的时间 %t $local_time
请求起始行 %r $request
状态码 %s $status
大小 %b $body_bytes_sent
从哪里跳转来的(用户如何访问网站) %{Referer}i $http_referer
客户端类型,浏览器 %{User-Agent}i $http_user_agent
XFF头记录 %{X-Forwarded-For}i $http_x_forwarded_for