ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CentOS 7离线安装与配置Tomcat 9全指南

CentOS 7离线安装与配置Tomcat 9全指南

1. 离线环境下的准备工作

在CentOS 7系统中离线安装Tomcat,首先需要解决的是依赖环境和安装包的获取问题。与在线安装不同,离线安装需要提前准备好所有必要的组件。

1.1 获取Tomcat安装包

Apache Tomcat的官方下载地址是https://tomcat.apache.org。对于生产环境,我推荐使用最新的稳定版本(目前是Tomcat 9.x或10.x系列)。下载时需要注意:

  • 选择core压缩包(如apache-tomcat-9.0.xx.tar.gz)
  • 同时下载对应的sha512校验文件,用于验证包完整性
  • 如果服务器架构是ARM,需要特别选择对应的版本

实际操作中,我习惯在能联网的机器上先用wget下载:

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.xx/bin/apache-tomcat-9.0.xx.tar.gz wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.xx/bin/apache-tomcat-9.0.xx.tar.gz.sha512

1.2 验证安装包完整性

在将安装包传输到目标服务器前,强烈建议先进行完整性校验。使用sha512sum工具:

sha512sum -c apache-tomcat-9.0.xx.tar.gz.sha512

正确的输出应该是:

apache-tomcat-9.0.xx.tar.gz: OK

1.3 准备Java运行环境

Tomcat需要JDK环境,在离线环境下需要提前准备好:

  1. 下载对应版本的JDK(推荐JDK 8或11)
  2. 同样进行校验和验证
  3. 准备环境变量配置脚本

我通常会创建一个setup_java.sh脚本,包含以下内容:

#!/bin/bash JAVA_HOME=/usr/java/jdk1.8.0_xx PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH

2. 安装包传输与解压

2.1 安全传输文件到目标服务器

在没有网络的环境下,可以使用以下方式传输文件:

  1. 使用U盘等物理介质
  2. 通过内网文件共享服务
  3. 使用scp从跳板机传输(如果允许)

我个人的经验是,对于生产环境,最好先在测试机上验证安装包完整性,再通过加密方式传输。例如使用scp:

scp -C apache-tomcat-9.0.xx.tar.gz user@target-server:/tmp/

2.2 解压安装Tomcat

在目标服务器上,建议将Tomcat安装在/opt目录下:

sudo mkdir -p /opt/tomcat sudo tar xzf /tmp/apache-tomcat-9.0.xx.tar.gz -C /opt/tomcat --strip-components=1

这里使用了--strip-components=1参数,可以去掉压缩包中的一级目录结构,使安装更整洁。

2.3 目录结构说明

安装完成后,/opt/tomcat目录下会有以下重要子目录:

  • bin/: 启动脚本和工具
  • conf/: 配置文件
  • logs/: 日志文件
  • webapps/: 应用部署目录
  • work/: JSP编译生成的servlet文件

3. 配置与优化

3.1 环境变量配置

创建一个setenv.sh文件(如果不存在)来设置Tomcat运行参数:

sudo vi /opt/tomcat/bin/setenv.sh

添加以下内容:

export CATALINA_HOME=/opt/tomcat export CATALINA_BASE=/opt/tomcat export JAVA_HOME=/usr/java/jdk1.8.0_xx export JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"

注意:内存参数(Xms/Xmx)应根据服务器实际配置调整。生产环境建议Xms和Xmx设置为相同值。

3.2 修改server.xml配置

编辑主配置文件进行基本优化:

sudo vi /opt/tomcat/conf/server.xml

建议修改:

  1. 修改连接器配置,添加URI编码:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
  1. 关闭不必要的主机:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false">

3.3 用户权限配置

为安全考虑,应该创建专用用户运行Tomcat:

sudo groupadd tomcat sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat sudo chown -R tomcat:tomcat /opt/tomcat sudo chmod -R u+x /opt/tomcat/bin

4. 服务管理与监控

4.1 创建系统服务

为了让Tomcat随系统启动,可以创建systemd服务单元:

sudo vi /etc/systemd/system/tomcat.service

添加以下内容:

[Unit] Description=Apache Tomcat Web Application Container After=syslog.target network.target [Service] Type=forking User=tomcat Group=tomcat Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/tomcat ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh Restart=on-failure [Install] WantedBy=multi-user.target

然后启用服务:

sudo systemctl daemon-reload sudo systemctl enable tomcat sudo systemctl start tomcat

4.2 日志管理

Tomcat默认日志在/opt/tomcat/logs目录下。对于生产环境,建议:

  1. 配置日志轮转:
sudo vi /etc/logrotate.d/tomcat

添加:

/opt/tomcat/logs/catalina.out { daily rotate 30 missingok compress copytruncate dateext }
  1. 配置更详细的访问日志: 修改conf/server.xml中的AccessLogValve配置:
<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 %D" />

5. 安全加固与常见问题

5.1 基础安全配置

  1. 删除默认应用:
rm -rf /opt/tomcat/webapps/docs /opt/tomcat/webapps/examples /opt/tomcat/webapps/ROOT
  1. 修改关闭端口和命令: 编辑conf/server.xml:
<Server port="8005" shutdown="SECRET_SHUTDOWN_STRING">
  1. 限制管理界面访问: 编辑conf/tomcat-users.xml:
<role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="admin" password="complex_password" roles="manager-gui,admin-gui"/>

5.2 常见问题排查

  1. 端口冲突问题:
netstat -tulnp | grep 8080
  1. 内存不足问题: 在setenv.sh中调整JAVA_OPTS:
export JAVA_OPTS="-Xms1g -Xmx2g ..."
  1. 权限问题:
sudo restorecon -Rv /opt/tomcat
  1. 启动超时问题: 编辑systemd服务文件,增加:
TimeoutStartSec=300

5.3 性能调优建议

  1. 连接器优化(server.xml):
<Connector maxThreads="200" minSpareThreads="25" acceptCount="100" enableLookups="false" />
  1. JVM优化(setenv.sh):
export JAVA_OPTS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=200 ..."
  1. 禁用DNS查询:
<Connector enableLookups="false" ... />

6. 应用部署与管理

6.1 手动部署WAR包

将WAR包复制到webapps目录:

cp application.war /opt/tomcat/webapps/

Tomcat会自动解压WAR包。如果想指定上下文路径,可以:

cp application.war /opt/tomcat/webapps/myapp.war

6.2 配置上下文

在conf/Catalina/localhost目录下创建XML文件:

<Context docBase="/path/to/application" path="/myapp" reloadable="false"> </Context>

6.3 热部署控制

生产环境建议关闭自动部署:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false">

然后通过管理界面或脚本控制部署:

/opt/tomcat/bin/shutdown.sh # 更新文件 /opt/tomcat/bin/startup.sh

7. 备份与恢复策略

7.1 配置文件备份

重要的配置文件包括:

  • conf/server.xml
  • conf/tomcat-users.xml
  • conf/context.xml
  • bin/setenv.sh

建议定期备份:

tar czf /backup/tomcat-conf-$(date +%Y%m%d).tgz /opt/tomcat/conf /opt/tomcat/bin/setenv.sh

7.2 应用数据备份

关键数据目录:

  • webapps/ (应用)
  • conf/ (配置)
  • logs/ (日志)

备份脚本示例:

rsync -avz /opt/tomcat/webapps /backup/tomcat/ rsync -avz /opt/tomcat/conf /backup/tomcat/

7.3 恢复流程

  1. 停止Tomcat服务
  2. 恢复配置文件
  3. 恢复应用数据
  4. 修复权限
  5. 启动服务

恢复命令示例:

systemctl stop tomcat tar xzf /backup/tomcat-conf-20230101.tgz -C / chown -R tomcat:tomcat /opt/tomcat systemctl start tomcat
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进