1. 安装前系统准备
在Debian上部署Tomcat前,需先更新系统软件包以修复潜在漏洞,并安装Java运行环境(JRE/JDK)。Tomcat依赖Java环境,推荐使用OpenJDK(如openjdk-11-jdk
),可通过sudo apt update && sudo apt install openjdk-11-jdk
安装,安装后通过java -version
验证是否成功。
2. Tomcat安装路径与权限设置
建议将Tomcat解压至专用目录(如/opt/tomcat
),避免与其他应用混淆。为提升安全性,需创建专用系统用户(如tomcat
)和组(如tomcat
),并将Tomcat目录所有权赋予该用户(sudo chown -R tomcat:tomcat /opt/tomcat
)。同时,需调整目录权限:conf
(配置文件)、logs
(日志)、temp
(临时文件)目录设置为755
,webapps
(应用部署目录)设置为755
,确保Tomcat用户有足够权限运行但无多余权限。
3. Java环境配置
Tomcat需要Java环境才能运行,需正确设置JAVA_HOME
环境变量(指向JDK安装路径,如/usr/lib/jvm/default-java
)。可通过编辑/etc/profile.d/tomcat.sh
(全局)或~/.bashrc
(用户级)文件添加export JAVA_HOME=/usr/lib/jvm/default-java
,并执行source
命令使配置生效。此外,建议在Tomcat的setenv.sh
(位于bin
目录)中设置JVM参数(如-Xms512M -Xmx1024M
调整堆内存),而非直接修改catalina.sh
。
4. systemd服务管理
为确保Tomcat随系统启动自动运行,需创建systemd服务文件(/etc/systemd/system/tomcat.service
)。文件内容需包含User=tomcat
、Group=tomcat
(以专用用户运行)、Environment
(设置JAVA_HOME
、CATALINA_HOME
等变量)、ExecStart
(启动命令)、ExecStop
(停止命令)及Restart=always
(崩溃后自动重启)。创建后执行sudo systemctl daemon-reload
重新加载配置,再通过sudo systemctl start tomcat
启动服务,sudo systemctl enable tomcat
设置开机自启。
5. 安全配置强化
server.xml
(conf
目录),将HTTP连接器端口从8080
改为其他端口(如8081
),避免暴露默认端口;若需HTTPS,可配置SSL连接器(SSLEnabled="true"
)。tomcat-users.xml
(conf
目录),添加具有manager-gui
(管理界面)、admin-gui
(管理员)角色的用户,密码需使用强密码(如包含大小写字母、数字和特殊字符),并禁用默认的admin
账户。web.xml
(conf
目录),添加自定义错误页面(如404
、500
),隐藏Tomcat版本信息,防止攻击者利用版本漏洞发起攻击。sudo ufw allow 8081/tcp
),或使用sudo ufw allow 'Tomcat Full'
允许HTTP和HTTPS流量。6. 性能优化配置
setenv.sh
中设置-Xms
(初始堆内存,如512M
)、-Xmx
(最大堆内存,如1024M
),避免频繁GC;可选择垃圾回收器(如-XX:+UseG1GC
),提升GC效率。server.xml
中调整maxThreads
(最大线程数,如200
,处理并发请求)、minSpareThreads
(最小空闲线程数,如10
,保持备用线程)、acceptCount
(最大排队请求数,如100
,队列满则拒绝请求)、compression="on"
(开启响应压缩,减少传输数据量)。7. 应用部署注意事项
webapps
目录(如/opt/tomcat/webapps
),Tomcat会自动解压并部署。若需部署至特定路径,可修改appBase
(Host
标签属性)或在WAR文件名中指定上下文路径(如myapp.war
对应/myapp
)。WEB-INF/lib
目录下(而非Tomcat的lib
目录),避免影响其他应用;若为全局依赖(如数据库驱动),可放置于Tomcat的lib
目录,但需注意版本兼容性。server.xml
的Connector
标签中添加uriencoding="utf-8"
,避免中文乱码(如请求参数解析错误)。8. 日志管理配置
Tomcat日志默认存储于logs
目录(如catalina.out
、localhost.log
),需定期清理以避免磁盘空间耗尽。可通过编辑logging.properties
(conf
目录)配置日志级别(如FINE
、INFO
)、输出路径(如${catalina.base}/logs/app.log
)及日志切割策略(如按天分割),便于后续分析与排查问题。