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.sha5121.2 验证安装包完整性
在将安装包传输到目标服务器前,强烈建议先进行完整性校验。使用sha512sum工具:
sha512sum -c apache-tomcat-9.0.xx.tar.gz.sha512正确的输出应该是:
apache-tomcat-9.0.xx.tar.gz: OK1.3 准备Java运行环境
Tomcat需要JDK环境,在离线环境下需要提前准备好:
- 下载对应版本的JDK(推荐JDK 8或11)
- 同样进行校验和验证
- 准备环境变量配置脚本
我通常会创建一个setup_java.sh脚本,包含以下内容:
#!/bin/bash JAVA_HOME=/usr/java/jdk1.8.0_xx PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH2. 安装包传输与解压
2.1 安全传输文件到目标服务器
在没有网络的环境下,可以使用以下方式传输文件:
- 使用U盘等物理介质
- 通过内网文件共享服务
- 使用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建议修改:
- 修改连接器配置,添加URI编码:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>- 关闭不必要的主机:
<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/bin4. 服务管理与监控
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 tomcat4.2 日志管理
Tomcat默认日志在/opt/tomcat/logs目录下。对于生产环境,建议:
- 配置日志轮转:
sudo vi /etc/logrotate.d/tomcat添加:
/opt/tomcat/logs/catalina.out { daily rotate 30 missingok compress copytruncate dateext }- 配置更详细的访问日志: 修改conf/server.xml中的AccessLogValve配置:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b %D" />5. 安全加固与常见问题
5.1 基础安全配置
- 删除默认应用:
rm -rf /opt/tomcat/webapps/docs /opt/tomcat/webapps/examples /opt/tomcat/webapps/ROOT- 修改关闭端口和命令: 编辑conf/server.xml:
<Server port="8005" shutdown="SECRET_SHUTDOWN_STRING">- 限制管理界面访问: 编辑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 常见问题排查
- 端口冲突问题:
netstat -tulnp | grep 8080- 内存不足问题: 在setenv.sh中调整JAVA_OPTS:
export JAVA_OPTS="-Xms1g -Xmx2g ..."- 权限问题:
sudo restorecon -Rv /opt/tomcat- 启动超时问题: 编辑systemd服务文件,增加:
TimeoutStartSec=3005.3 性能调优建议
- 连接器优化(server.xml):
<Connector maxThreads="200" minSpareThreads="25" acceptCount="100" enableLookups="false" />- JVM优化(setenv.sh):
export JAVA_OPTS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=200 ..."- 禁用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.war6.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.sh7. 备份与恢复策略
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.sh7.2 应用数据备份
关键数据目录:
- webapps/ (应用)
- conf/ (配置)
- logs/ (日志)
备份脚本示例:
rsync -avz /opt/tomcat/webapps /backup/tomcat/ rsync -avz /opt/tomcat/conf /backup/tomcat/7.3 恢复流程
- 停止Tomcat服务
- 恢复配置文件
- 恢复应用数据
- 修复权限
- 启动服务
恢复命令示例:
systemctl stop tomcat tar xzf /backup/tomcat-conf-20230101.tgz -C / chown -R tomcat:tomcat /opt/tomcat systemctl start tomcat