当前位置:首页 > Linux > 正文

linux环境下如何启动tomcat

在 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

启用服务

linux环境下如何启动tomcat  第1张

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: 常见原因是缺少写权限或内存不足,按以下顺序排查:

  1. 检查Tomcat目录权限:sudo chown -R tomcat:tomcat /opt/apache-tomcat-
  2. 增大堆内存限制:编辑bin/setenv.sh添加CATALINA_OPTS="-Xms512m -Xmx1024m"
  3. 查看完整错误日志:tail -n 100 logs/catalina.out

Q2: 如何实现Tomcat开机自启?

A: 采用systemd方案最可靠:

  1. 创建服务文件:sudo vi /etc/systemd/system/tomcat.service
  2. 输入前文所述的服务单元配置
  3. 执行启用命令:sudo systemctl enable tomcat
  4. 验证配置:sudo systemctl status tomcat 应显示”active (running)

0