1. 项目概述
Tomcat作为Java生态中最流行的Web应用服务器之一,几乎成为每个Java开发者必须掌握的基础技能。但很多新手在初次配置时总会遇到各种"坑"——环境变量设置错误、端口冲突、权限不足等问题层出不穷。本文将基于我多年运维经验,从下载安装到生产环境调优,手把手带你完成Tomcat全流程部署。
2. 环境准备
2.1 硬件与系统要求
- 内存:建议至少2GB可用内存(生产环境推荐8GB+)
- 磁盘空间:安装包约10MB,运行时需要额外200MB空间
- 操作系统:支持Windows/Linux/macOS(本文以CentOS 7为例)
2.2 前置依赖检查
bash复制# 检查Java环境(要求JDK 1.8+)
java -version
# 输出应类似:openjdk version "1.8.0_292"
注意:如果未安装JDK,需先通过
yum install java-1.8.0-openjdk-devel安装
3. 安装步骤详解
3.1 获取安装包
推荐从Apache官网下载最新稳定版(当前为Tomcat 9.0.x):
bash复制wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
3.2 解压与目录结构
bash复制tar -zxvf apache-tomcat-9.0.56.tar.gz -C /opt/
cd /opt/apache-tomcat-9.0.56
关键目录说明:
bin/:启停脚本conf/:配置文件webapps/:应用部署目录logs/:日志文件
4. 基础配置
4.1 用户权限设置
bash复制# 创建专用用户
useradd -r tomcat
chown -R tomcat:tomcat /opt/apache-tomcat-9.0.56
4.2 服务启动脚本
创建/etc/systemd/system/tomcat.service:
ini复制[Unit]
Description=Apache Tomcat
After=network.target
[Service]
User=tomcat
Group=tomcat
Environment="CATALINA_HOME=/opt/apache-tomcat-9.0.56"
ExecStart=/opt/apache-tomcat-9.0.56/bin/catalina.sh run
ExecStop=/opt/apache-tomcat-9.0.56/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动服务:
bash复制systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcat
5. 安全加固
5.1 修改默认端口
编辑conf/server.xml:
xml复制<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
建议将8080改为非常用端口(如18080)
5.2 禁用管理界面
删除webapps目录下的host-manager和manager文件夹
6. 性能调优
6.1 JVM参数优化
修改bin/setenv.sh(需新建):
bash复制export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m"
6.2 连接器配置
在server.xml中调整:
xml复制<Connector
maxThreads="200"
minSpareThreads="25"
acceptCount="100"
enableLookups="false"
/>
7. 常见问题排查
7.1 启动失败排查
bash复制# 查看详细日志
tail -f logs/catalina.out
常见错误:
- 端口冲突:
Address already in use - 权限不足:
Permission denied - Java版本不匹配:
Unsupported major.minor version
7.2 内存泄漏处理
在conf/context.xml中添加:
xml复制<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager pathname="" />
</Context>
8. 生产环境建议
- 定期日志轮转:配置logrotate
- 启用HTTPS:配置SSL证书
- 监控方案:集成Prometheus+JMX
- 备份策略:定时打包conf和webapps目录
我在实际运维中发现,80%的Tomcat问题源于配置不当。建议首次部署后使用telnet localhost 8080测试连通性,并通过ps -ef | grep java确认JVM参数是否生效。