CentOS 7部署Tomcat 7.0.27全流程指南

一、环境准备:JDK安装与验证

Tomcat作为Java应用服务器,其运行依赖Java开发工具包(JDK)。Tomcat 7.0.x版本最高支持JDK 8,建议选择OpenJDK 8作为运行环境。

  1. 环境检查
    执行命令java -version确认系统是否已安装JDK。若输出类似command not found,则需进行安装。

  2. OpenJDK安装
    通过包管理器安装OpenJDK 8及开发工具包:

    1. sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

    安装完成后再次验证版本:

    1. java -version
    2. # 预期输出:openjdk version "1.8.0_XXX"
  3. 环境变量配置(可选)
    若需全局使用JDK,可在/etc/profile中添加:

    1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    2. export PATH=$JAVA_HOME/bin:$PATH

    执行source /etc/profile使配置生效。

二、Tomcat安装与目录结构解析

  1. 获取安装包
    从官方托管仓库或可信渠道下载Tomcat 7.0.27二进制包(建议使用.tar.gz格式)。

  2. 解压与目录说明

    1. tar -zxvf apache-tomcat-7.0.27.tar.gz
    2. cd apache-tomcat-7.0.27

    关键目录说明:

    • bin/:启动/停止脚本及工具
    • conf/:核心配置文件(如server.xml
    • webapps/:Web应用部署目录
    • logs/:运行时日志文件
    • work/:JSP编译缓存目录

三、服务启动与访问验证

  1. 启动服务
    进入bin/目录执行启动脚本:

    1. cd bin
    2. ./startup.sh
    3. # 或使用绝对路径
    4. /path/to/apache-tomcat-7.0.27/bin/startup.sh

    成功启动后控制台输出Tomcat started,日志文件位于../logs/catalina.out

  2. 访问验证
    默认监听8080端口,通过以下方式验证:

    • 本地访问:http://localhost:8080
    • 远程访问:http://<服务器IP>:8080
      正常应显示Tomcat默认欢迎页(含猫图标)。

四、Web应用部署实战

  1. WAR包部署流程
    将编译好的WAR文件复制至webapps/目录:

    1. cp /path/to/myapp.war /path/to/apache-tomcat-7.0.27/webapps/

    Tomcat会自动解压WAR包并加载应用,可通过日志确认部署状态:

    1. tail -f ../logs/catalina.out
  2. 应用访问测试
    部署完成后访问:

    1. http://<服务器IP>:8080/myapp

    若出现404错误,需检查:

    • WAR包内WEB-INF/web.xml配置
    • 应用上下文路径(Context Path)设置
  3. 热部署限制说明
    Tomcat 7默认不支持动态重新加载类文件,修改代码后需:

    1. 删除webapps/下对应应用目录及WAR包
    2. 重新复制WAR文件
    3. 重启服务(见下文关闭章节)

五、服务管理最佳实践

  1. 优雅关闭服务
    使用shutdown.sh脚本通知JVM停止:

    1. ./shutdown.sh

    通过进程检查确认关闭状态:

    1. ps -ef | grep tomcat
  2. 启动参数优化
    bin/catalina.sh开头添加JVM参数(解决启动慢问题):

    1. export JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom"

    参数说明:

    • -Xms/-Xmx:初始/最大堆内存
    • -Djava.security.egd:加速随机数生成
  3. 作为系统服务管理
    创建/etc/systemd/system/tomcat.service文件:

    1. [Unit]
    2. Description=Apache Tomcat 7
    3. After=syslog.target network.target
    4. [Service]
    5. Type=forking
    6. Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    7. Environment=CATALINA_PID=/path/to/apache-tomcat-7.0.27/temp/tomcat.pid
    8. Environment=CATALINA_HOME=/path/to/apache-tomcat-7.0.27
    9. ExecStart=/path/to/apache-tomcat-7.0.27/bin/startup.sh
    10. ExecStop=/path/to/apache-tomcat-7.0.27/bin/shutdown.sh
    11. User=tomcat
    12. Group=tomcat
    13. UMask=0007
    14. RestartSec=10
    15. Restart=always
    16. [Install]
    17. WantedBy=multi-user.target

    启用服务:

    1. sudo systemctl daemon-reload
    2. sudo systemctl enable tomcat
    3. sudo systemctl start tomcat

六、常见问题深度解析

  1. JAVA_HOME未定义错误

    • 现象:启动时报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    • 解决方案:
      1. 确认JDK安装路径:readlink -f $(which java)
      2. catalina.sh开头显式定义:
        1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
  2. 端口冲突处理

    • 现象:Address already in use
    • 排查步骤:
      1. 确认端口占用:netstat -tulnp | grep 8080
      2. 修改conf/server.xml中的<Connector port="8080">
      3. 更新防火墙规则:
        1. sudo firewall-cmd --add-port=新端口/tcp --permanent
        2. sudo firewall-cmd --reload
  3. 性能调优建议

    • 线程池配置:修改server.xml中的Executor配置:
      1. <Executor name="tomcatThreadPool"
      2. namePrefix="catalina-exec-"
      3. maxThreads="200"
      4. minSpareThreads="10"/>
    • 连接器优化
      1. <Connector executor="tomcatThreadPool"
      2. port="8080"
      3. protocol="HTTP/1.1"
      4. connectionTimeout="20000"
      5. redirectPort="8443"
      6. acceptCount="100"
      7. maxKeepAliveRequests="100"/>

七、生产环境增强建议

  1. 安全加固

    • 删除webapps/下默认应用(ROOT、docs等)
    • 修改管理界面默认端口(默认8005)
    • 启用SSL加密(需配置conf/server.xml中的HTTPS Connector)
  2. 日志管理

    • 配置日志轮转:创建/etc/logrotate.d/tomcat
      1. /path/to/apache-tomcat-7.0.27/logs/catalina.out {
      2. copytruncate
      3. daily
      4. rotate 7
      5. compress
      6. missingok
      7. size 10M
      8. }
  3. 监控集成

    • 通过JMX暴露监控指标(需在JAVA_OPTS中添加):
      1. -Dcom.sun.management.jmxremote
      2. -Dcom.sun.management.jmxremote.port=9004
      3. -Dcom.sun.management.jmxremote.ssl=false
      4. -Dcom.sun.management.jmxremote.authenticate=false

通过以上步骤,您可在CentOS 7系统上构建稳定的Tomcat 7.0.27运行环境。对于新项目开发,建议评估升级至Tomcat 9或更高版本以获得更好的性能和安全支持。如需处理高并发场景,可考虑结合Nginx反向代理及负载均衡方案。