1. 为什么选择apt安装Tomcat?
在Ubuntu环境下部署Tomcat,apt方式是我最推荐新手采用的方法。相比手动下载压缩包配置,apt-get安装有三大不可替代的优势:
第一是依赖自动处理。Tomcat运行需要Java环境,手动安装时经常遇到"JAVA_HOME未设置"这类问题。apt会自动安装openjdk并配置好环境变量,实测在Ubuntu 20.04上安装时会自动拉取openjdk-11-jdk作为依赖。
第二是服务化管理。通过apt安装的Tomcat会注册为systemd服务,我们可以用标准的Linux服务命令控制它:
bash复制sudo systemctl start tomcat9 # 启动
sudo systemctl enable tomcat9 # 开机自启
第三是配置规范化。所有关键文件都按Linux标准存放在约定位置:
- 主程序目录:/usr/share/tomcat9
- 配置文件:/etc/tomcat9
- 日志文件:/var/log/tomcat9
- Web应用目录:/var/lib/tomcat9/webapps
重要提示:Ubuntu 18.04默认源中是tomcat8,20.04/22.04则是tomcat9。如果需特定版本,需要添加第三方仓库。
2. 完整安装流程实录
2.1 环境准备与依赖检查
首先更新软件包索引:
bash复制sudo apt update
检查Java环境是否就绪(非必须步骤,apt会自动处理):
bash复制java -version
# 若无输出,后续安装时会自动安装OpenJDK
2.2 核心安装命令
执行安装命令:
bash复制sudo apt install -y tomcat9 tomcat9-admin
这里安装了两个包:
- tomcat9:核心服务程序
- tomcat9-admin:管理界面功能
安装完成后验证服务状态:
bash复制sudo systemctl status tomcat9
正常应显示"active (running)",同时监听8080端口:
bash复制ss -tulnp | grep 8080
2.3 防火墙配置
如果系统启用了UFW防火墙,需要放行端口:
bash复制sudo ufw allow 8080/tcp
sudo ufw allow 8009/tcp # AJP协议端口
3. 关键配置调优指南
3.1 管理界面安全配置
默认情况下管理界面(/manager/html)无法访问,需要先配置用户角色:
bash复制sudo nano /etc/tomcat9/tomcat-users.xml
在<tomcat-users>标签内添加(注意替换密码):
xml复制<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="deploy" password="SecurePass123!" roles="manager-gui,admin-gui"/>
然后重启服务生效:
bash复制sudo systemctl restart tomcat9
3.2 内存参数调整
编辑服务配置文件:
bash复制sudo nano /etc/default/tomcat9
调整JVM参数(根据服务器配置):
properties复制JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m"
3.3 应用部署实践
标准部署方式是将WAR包放入webapps目录:
bash复制sudo cp /path/to/yourapp.war /var/lib/tomcat9/webapps/
或者通过管理界面上传(需先完成3.1配置):
code复制http://your-server-ip:8080/manager/html
4. 故障排查与日常维护
4.1 常见问题速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 404错误 | 服务未启动 | sudo systemctl start tomcat9 |
| 403权限拒绝 | 用户未配置 | 检查tomcat-users.xml |
| 启动缓慢 | 熵池不足 | 安装haveged:sudo apt install haveged |
| 内存溢出 | JVM配置不足 | 调整JAVA_OPTS参数 |
4.2 日志查看技巧
主要日志文件位置:
bash复制# 查看实时日志
sudo tail -f /var/log/tomcat9/catalina.out
# 按日期归档的日志
ls /var/log/tomcat9/
4.3 备份与迁移
关键目录备份清单:
- /etc/tomcat9:所有配置文件
- /var/lib/tomcat9/webapps:部署的应用
- /var/log/tomcat9:日志文件(可选)
建议的备份命令:
bash复制sudo tar -czvf tomcat9-backup-$(date +%F).tar.gz \
/etc/tomcat9 \
/var/lib/tomcat9/webapps \
/usr/share/tomcat9/conf
5. 进阶配置建议
5.1 多实例部署
如果需要运行多个Tomcat实例(比如测试和生产环境隔离),可以:
bash复制sudo cp /etc/default/tomcat9 /etc/default/tomcat9-test
sudo cp -r /etc/tomcat9 /etc/tomcat9-test
然后修改test实例的:
- 服务端口(server.xml中的8080/8005/8009)
- 环境变量文件中的CATALINA_BASE
- 创建新的systemd服务文件
5.2 与Nginx集成
建议在生产环境用Nginx做反向代理:
nginx复制server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
5.3 安全加固措施
- 禁用示例应用:
bash复制sudo rm -rf /var/lib/tomcat9/webapps/examples
- 定期更新:
bash复制sudo apt update && sudo apt upgrade tomcat9
- 限制管理界面访问IP:
xml复制<!-- 在/usr/share/tomcat9/etc/web.xml中添加 -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.1.*|127.0.0.1" />
经过这样一套完整配置后,你的Tomcat服务就已经具备生产环境部署的基本条件了。在实际运维中,建议配合监控工具如Prometheus+Granfa来观察JVM性能指标,这对长期稳定运行至关重要。