1.什么是Tomcat?
简单理解:Tomcat就是一个"Java网站运行容器"。你写的JSP页面、Servlet代码,需要放在Tomcat里才能被其他人访问。它免费、开源,是学习Java Web开发的首选服务器。
2.Tomcat安装
2.1 检查并安装Java环境
Tomcat是用Java写的,必须先装JDK。打开终端,先看看系统有没有Java:
java -version
如果显示"command not found"或者版本低于11,需要安装:
sudo dnf install -y java-17-openjdk java-17-openjdk-devel
装完再验证一下:
java -version
javac -version
出现版本信息就说明Java准备好了。
2.2 下载Tomcat
去Tomcat官网找到下载链接。把软件放在/目录下
cd /
sudo wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.34/bin/apache-tomcat-10.1.34.tar.gz
下载完成后解压:
sudo tar -zxvf apache-tomcat-10.1.34.tar.gz
为了方便管理,改个简短的名字:
sudo mv apache-tomcat-10.1.34 tomcat10
2.3 配置环境变量
编辑当前用户的bash配置文件 :
vi ~/.bashrc
在文件末尾加上:
export CATALINA_HOME=/tomcat10
export PATH=PATH:CATALINA_HOME/bin
保存退出,让配置生效:
source ~/.bashrc
2.4 启动Tomcat
进入Tomcat的bin目录:
cd /tomcat10/bin\
启动服务:
./startup.sh
看到"Tomcat started"就说明成功了。
这时可以在浏览器输入:http://你的服务器IP:8080。如果是本机,输入http://localhost:8080。
看到那只猫的欢迎页面了吗?恭喜,Tomcat已经跑起来了!
2.5 防火墙设置
RHEL 9默认防火墙是开启的,需要放行8080端口:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
查看端口是否开放:
sudo firewall-cmd --list-ports
这时候再用浏览器访问,应该就能看到Tomcat首页了。
2.6 创建自己的第一个Web应用
在/tomcat10/webapps目录下新建一个文件夹,比如myapp:
cd /tomcat10/webapps
sudo mkdir myapp
在myapp里建一个最简单的网页:
cd myapp
sudo vi index.html
随便写点内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>我的第一个Tomcat应用</title>
</head>
<body>
<h1>Hello Tomcat on RHEL 9!</h1>
<p>2026年,马年大吉!</p>
</body>
</html>
保存文件。不用重启Tomcat,浏览器访问http://你的IP:8080/myapp/,就能看到你写的页面了。
2.7 可能遇到的坑及解决方法
-
端口被占用 :如果8080被其他程序占了,可以修改
/tomcat10/conf/server.xml,把8080改成其他端口(比如8081),然后重启。 -
启动时权限报错:解压后的Tomcat文件属主是root,如果用普通用户启动会报错。可以修改目录属主:
sudo chown -R 你的用户名:你的用户组 /tomcat10
- Manager页面403 :默认不允许远程访问管理界面。如果需要远程管理,编辑
conf/tomcat-users.xml,添加用户和角色,同时编辑webapps/manager/META-INF/context.xml,把IP限制注释掉(生产环境不推荐)。
2.8 常用命令
- 启动:/tomcat10/bin/startup.sh
- 关闭:/tomcat10/bin/shutdown.sh
- 查看日志:tail -f /tomcat10/logs/catalina.out
- 重启:先关闭,再启动
3.Tomcat + Memcached 双机集群会话共享实验
两台Tomcat + 两台Memcached,互相备份,任意一台宕机,Session零丢失。
实验环境
| 主机名 | IP地址 | 角色 |
|---|---|---|
| RS1 | 172.25.254.10 | Tomcat节点1 + Memcached节点1 |
| RS2 | 172.25.254.20 | Tomcat节点2 + Memcached节点2 |
3.1 准备Tomcat的Session共享JAR包
RS1上操作,将所需JAR包解压并分发到两台服务器的Tomcat库目录:
在RS1上
root@RS1 \~\]# unzip jar.zip -d jar
\[root@RS1 \~\]# cd jar/
复制到本地Tomcat
\[root@RS1 jar\]# cp \* /usr/local/tomcat/lib/
复制到RS2的Tomcat
\[root@RS1 jar\]# scp \* root@172.25.254.20:/usr/local/tomcat/lib/
#### 3.2 安装并配置Memcached
两台服务器都要安装:
RS1和RS2都要执行
\[root@RS1 \~\]# dnf install memcached -y
\[root@RS2 \~\]# dnf install memcached -y
修改Memcached配置文件,允许外网访问:
\[root@RS1 \~\]# vim /etc/sysconfig/memcached
\[root@RS2 \~\]# vim /etc/sysconfig/memcached
内容如下:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 0.0.0.0,::1"
启动Memcached并设置开机自启:
\[root@RS1 \~\]# systemctl start memcached
\[root@RS1 \~\]# systemctl enable memcached
\[root@RS2 \~\]# systemctl start memcached
\[root@RS2 \~\]# systemctl enable memcached
验证服务是否正常监听:
\[root@RS1 \~\]# netstat -antluple \| grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:\* LISTEN 988 142615 35756/memcached
tcp6 0 0 ::1:11211 :::\* LISTEN 988 142616 35756/memcached
防火墙放行Memcached端口(两台都做):
\[root@RS1 \~\]# firewall-cmd --permanent --add-port=11211/tcp
\[root@RS1 \~\]# firewall-cmd --reload
\[root@RS2 \~\]# firewall-cmd --permanent --add-port=11211/tcp
\[root@RS2 \~\]# firewall-cmd --reload
#### 3.3 配置Tomcat的Session共享
##### RS1的配置
\[root@RS1 \~\]# vim /usr/local/tomcat/conf/context.xml
在` Session ID: \<%= session.getId() %\>\ 服务器时间: \<%= new java.util.Date() %\>\ 您在本会话中已访问 \\<%= count %\>\ 次。\ 存入Memcached测试属性:马年大吉2026\Tomcat节点:\<%= request.getLocalAddr() %\>:\<%= request.getLocalPort() %\>\
\