上一篇
linux环境下如何启动tomcat
- Linux
- 2025-08-16
- 13
在 Linux 中,进入 Tomcat 的 bin 目录,执行
./startup.sh
脚本即可启动
前置条件验证
核心依赖项检查
组件 | 作用 | 验证命令 | 预期结果示例 |
---|---|---|---|
Java SE | Tomcat运行必需的JVM环境 | java -version |
OpenJDK Runtime Environment |
操作系统 | Linux内核支持 | uname -a |
Linux x86_64 |
文件系统权限 | 确保可读写执行 | ls -l /opt/tomcat/ |
rwxr-xr-x (755) |
关键提示:
- Tomcat 9+需Java 8及以上版本,推荐使用OpenJDK 11/17 LTS长期支持版
- 若未安装Java,可通过
sudo apt install openjdk-11-jdk
(Debian系)或yum install java-11-openjdk
(RHEL系)安装
标准启动流程(交互式终端)
获取Tomcat安装包
# 官网直接下载(最新版) wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.27/bin/apache-tomcat-10.1.27.tar.gz # 解压至指定目录 sudo tar -zxvf apache-tomcat-.tar.gz -C /opt/ cd /opt/apache-tomcat- # 进入解压目录
️ 目录结构解析
子目录/文件 | 功能说明 | 典型用途 |
---|---|---|
bin/ |
启动/关闭脚本 | startup.sh , shutdown.sh |
conf/ |
配置文件集 | server.xml , web.xml |
logs/ |
运行日志存储 | catalina.out (主日志) |
webapps/ |
部署Web应用默认目录 | 放置WAR包自动解压 |
work/ |
JSP编译临时文件 | 开发调试时重点关注 |
temp/ |
临时文件存放区 | 磁盘空间监控重点 |
首次启动测试
# 切换至Tomcat根目录 cd /opt/apache-tomcat- # 赋予执行权限(新安装必做) chmod +x bin/.sh # 以后台进程方式启动 ./bin/startup.sh
成功标志判断:
- 控制台无报错信息
- 浏览器访问
http://<服务器IP>:8080
显示Tomcat测试页 - 查看进程状态:
ps aux | grep tomcat
应看到java进程
进程管理方案对比表
管理方式 | 适用场景 | 优点 | 缺点 | 命令示例 |
---|---|---|---|---|
手动脚本 | 临时测试/个人学习 | 简单直接 | 重启后失效,无自动恢复 | ./bin/startup.sh |
systemd服务 | 生产环境/长期运行 | 开机自启,日志统一管理 | 配置稍复杂 | systemctl enable --now tomcat |
supervisor守护 | 多实例管理/进程监控 | 实时日志追踪,异常自动重启 | 增加额外依赖 | supervisorctl start tomcat |
nohup挂起 | 长时间运行但不脱离终端 | 终端断开仍继续运行 | 日志分散,难以统一管理 | nohup ./startup.sh & |
Systemd服务化配置(推荐生产方案)
# 创建软链接便于管理 sudo ln -s /opt/apache-tomcat-/bin/startup.sh /etc/init.d/tomcat sudo ln -s /opt/apache-tomcat-/bin/shutdown.sh /etc/init.d/tomcat.shutdown # 注册为systemd服务 sudo nano /etc/systemd/system/tomcat.service
服务单元文件内容:
[Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking ExecStart=/opt/apache-tomcat-/bin/startup.sh ExecStop=/opt/apache-tomcat-/bin/shutdown.sh User=tomcat Group=tomcat RestartSec=10 Restart=always [Install] WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload sudo systemctl enable tomcat # 开机自启 sudo systemctl start tomcat # 立即启动
日志监控系统搭建
核心日志文件定位
日志类型 | 文件路径 | 分析工具建议 | |
---|---|---|---|
Catalina主日志 | logs/catalina.out |
启动/关闭事件,错误堆栈 | tail -f 实时监控 |
访问日志 | logs/localhost_access_log..txt |
HTTP请求记录 | goaccess生成统计报表 |
错误日志 | logs/localhost_error_log..txt |
5xx错误详情 | grep筛选特定状态码 |
垃圾回收日志 | logs/gc.log |
JVM内存回收情况 | jvisualvm远程分析 |
日志切割策略:
修改conf/logging.properties
配置滚动日志,防止单个文件过大:
# 每日滚动,保留7天历史 1 Catalina.out.handler = org.apache.juli.FileHandler 1 Catalina.out.prefix = logs/catalina.out 1 Catalina.out.suffix = .yyyy-MM-dd 2 Catalina.out.rotate = true 3 Catalina.out.maxDays = 7
安全加固要点
基础安全配置
风险项 | 防范措施 | 实施命令/修改位置 |
---|---|---|
管理端暴露公网 | 禁用manager-gui/text接口 | conf/web.xml 注释相关servlet |
弱口令风险 | 修改默认admin/password | conf/tomcat-users.xml |
跨目录遍历破绽 | 限制WEB-INF上传功能 | conf/web.xml 配置securityConstraint |
敏感信息泄露 | 隐藏版本号(remove version header) | conf/server.xml 添加响应头过滤 |
示例:修改管理员账号
<!-conf/tomcat-users.xml --> <role rolename="manager-gui"/> <user username="newAdmin" password="SecurePass123!" roles="manager-gui"/>
故障排查速查表
现象 | 可能原因 | 解决方案 |
---|---|---|
启动失败无报错 | JAVA_HOME未设置 | export JAVA_HOME=/usr/lib/jvm/java-11-openjdk |
端口8080已被占用 | 其他进程占据该端口 | netstat -tulnp |
页面加载缓慢 | 内存分配不足 | 修改conf/server.xml 中MaxRAMPercentage=75% |
CSS样式错乱 | 字符编码不一致 | 在conf/web.xml 添加URIEncoding=UTF-8 |
JSPC编译失败 | 缺少编译器依赖 | apt install build-essential libtool autoconf |
相关问答FAQs
Q1: Tomcat启动后立即退出怎么办?
A: 常见原因是缺少写权限或内存不足,按以下顺序排查:
- 检查Tomcat目录权限:
sudo chown -R tomcat:tomcat /opt/apache-tomcat-
- 增大堆内存限制:编辑
bin/setenv.sh
添加CATALINA_OPTS="-Xms512m -Xmx1024m"
- 查看完整错误日志:
tail -n 100 logs/catalina.out
Q2: 如何实现Tomcat开机自启?
A: 采用systemd方案最可靠:
- 创建服务文件:
sudo vi /etc/systemd/system/tomcat.service
- 输入前文所述的服务单元配置
- 执行启用命令:
sudo systemctl enable tomcat
- 验证配置:
sudo systemctl status tomcat
应显示”active (running)