部署Java Web环境(Tomcat)

更新时间:
一键部署
我的部署

方案选择

  • 自动化部署 (Terraform):单击一键运行,进入Terraform Explorer查看并执行Terraform代码,Terraform 将自动创建并配置好包含一台 ECS 实例、公网 IP 和相应安全组规则的完整环境。

  • 手动部署:如已购买ECS实例,希望控制部署过程、了解部署细节,请按照以下步骤操作。

准备工作

  1. 开通公网:为实例分配固定公网IP地址或绑定弹性公网IP(EIP)。

  2. 添加安全组规则

    • Linux:入方向放行 TCP 协议的22(SSH)8080(Tomcat)端口。

    • Windows:入方向放行 TCP 协议的3389(RDP)8080(Tomcat)端口。

  3. 手动部署OpenJDK:为服务器安装Java运行环境(JVM)和开发工具包。

操作步骤

Linux

步骤一:下载并安装Tomcat

  1. 登录ECS实例。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。

  2. 下载并解压Tomcat安装包。

    Tomcat v9.0.91为例,如需安装其他版本,可访问Tomcat官网获取下载地址,替换命令中的URL。

    # 下载Tomcat安装包
    sudo wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.91/bin/apache-tomcat-9.0.91.tar.gz  --no-check-certificate 
    
    # 解压到/usr/local目录
    sudo tar -zxvf apache-tomcat-9.0.91.tar.gz -C /usr/local/
  3. 创建软链接。

    升级版本时,只需修改此软链接的指向即可,无需更改服务配置文件。
    sudo ln -s /usr/local/apache-tomcat-9.0.91 /usr/local/tomcat

步骤二:将Tomcat配置为系统服务

Tomcat配置为systemd服务,实现开机自启动。

  1. 获取 JDK 路径。

    sudo readlink -f $(which java)
    • JDK 8:返回路径中jre目录的上一级为JDK的正确路径。

    • JDK 11+:返回路径即为JDK的正确路径。

  2. 创建tomcat.service服务文件。

    JDK_PATH需替换为上一步获取的JDK路径。

    sudo tee /etc/systemd/system/tomcat.service > /dev/null <<'EOF'
    [Unit]
    Description=Apache Tomcat Web Application Container
    After=network.target
    
    [Service]
    Type=forking
    
    Environment="JAVA_HOME=JDK_PATH"
    Environment="CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid"
    Environment="CATALINA_HOME=/usr/local/tomcat"
    Environment="CATALINA_BASE=/usr/local/tomcat"
    
    ExecStart=/usr/local/tomcat/bin/startup.sh
    ExecStop=/usr/local/tomcat/bin/shutdown.sh
    
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
  3. 启动并设置Tomcat服务开机自启。

    # 重新加载 systemd 配置,使新服务文件生效
    sudo systemctl daemon-reload
    # 启动 Tomcat 服务
    sudo systemctl start tomcat
    # 设置 Tomcat 服务开机自启动
    sudo systemctl enable tomcat

步骤三:验证部署结果

  1. 检查服务状态

    sudo systemctl status tomcat

    若返回active(running),说明Tomcat启动成功。

  2. 访问验证

    在本地浏览器地址栏中输入 http://<ECS实例公网IP>:8080。如果成功显示Tomcat欢迎页面,则说明Java Web环境已部署成功。

    image

Windows

64 位 Windows Server 2022 部署Tomcat 9.0.113为例。

步骤一:安装与配置Tomcat

  1. 登录ECS实例。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。选择连接方式为终端连接,输入账号和密码,登录图形化终端页面。

  2. 下载Tomcat 9.0.113并解压。

    建议将压缩包解压到不含中文字符的路径,例如 C:\Java\apache-tomcat-9.0.97,以避免潜在的路径识别问题。

    如需其他版本,请访问Tomcat官网,选择相应的版本,下载并解压安装包。

    image

  3. 配置环境变量。

    1. 右键单击此电脑,选择属性 > 高级系统设置 > 环境变量

    2. 系统变量区域,单击新建,创建CATALINA_HOME系统变量,变量值为Tomcat解压路径,完成后单击确定

      image

    3. 系统变量中找到Path变量,选中并单击编辑

      image

    4. 编辑环境变量中单击新建,添加%CATALINA_HOME%\bin,单击确定,保存配置。

      image

步骤二:将Tomcat安装为Windows服务并启动

Tomcat安装为Windows服务,而不是使用startup.bat临时运行,可以让Tomcat在后台稳定运行并实现开机自启。

  1. 安装服务。

    以管理员身份打开命令提示符,切换到Tomcatbin目录,执行安装命令。

    service.bat install Tomcat9

    若返回信息提示The service 'Tomcat9' has been installed.,表示安装成功。

    Tomcat9是自定义的服务名称,后续管理服务时将使用此名称。
  2. 启动服务并设置为自动启动。

    1. 右键单击开始,然后单击运行,输入services.msc并回车,打开服务管理器。

    2. 找到Apache Tomcat 9.0 Tomcat9服务,右键单击该服务,选择属性,将启动类型设置为自动,然后单击启动

    若日志中出现中文乱码,请参考Tomcat的日志信息显示中文乱码

步骤三:验证部署结果

在本地浏览器地址栏中输入http://<ECS实例公网IP>:8080。如果显示Tomcat欢迎页面,说明Java Web环境已部署成功。

image

后续步骤

上传 Web 项目

使用Workbench上传或下载文件,将一个Web应用程序(.war文件)上传到Tomcat的网站根目录(默认为webapps),Tomcat会自动检测并部署WAR文件。

部署后,可通过http://<公网IP>:8080/<项目名>访问应用。

配置Tomcat

修改配置文件

  1. 进入Tomcat安装目录下的conf文件夹,打开server.xml文件。

  2. 修改Tomcat的相关配置。

    • Tomcat默认使用8080端口,如需修改端口号,可以修改port的属性值。

      修改端口后,需在实例的安全组中添加安全组规则放行修改后的端口。

      image

    • Tomcat默认的网站根目录为webapps,如需修改Tomcat的网站根目录,可以修改appBase的属性值。

      image

设置TomcatJVM内存参数

Linux

  1. 创建setenv.sh文件,通过setenv.sh文件集中管理JVM参数。

    请根据ECS实例规格和应用负载调整JVM初始堆和最大堆内存。

    sudo tee /usr/local/tomcat/bin/setenv.sh > /dev/null <<'EOF'
    #!/bin/bash
    # 示例:适用于2GB内存的ECS,分配512MB
    JAVA_OPTS="-server -Xms512m -Xmx512m"
    export JAVA_OPTS
    EOF
  2. 为该文件添加可执行权限并设置所有权。

    sudo chmod +x /usr/local/tomcat/bin/setenv.sh
  3. 重启Tomcat,使配置生效。

Windows

  1. 进入Tomcat安装目录下的bin文件夹,打开catalina.bat文件。

  2. 添加或修改JVM参数。

    在文件靠前的位置(通常在setlocal之后,call "%CATALINA_HOME%\bin\setenv.bat"之前)添加或修改JAVA_OPTS 。请根据ECS实例规格和应用负载调整JVM初始堆和最大堆内存。

    # 示例:适用于2GB内存的ECS,分配512MB
    set "JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx512m"
    如果已有JAVA_OPTS,直接在后面追加参数(注意不同参数之间需留有空格)。
  3. 重启Tomcat,使配置生效。

应用于生产环境建议

在生产环境中,为了减少安全风险,建议在部署成功后执行以下操作。

  1. 删除默认应用 

    为了减少潜在的攻击面,建议删除 webapps 目录下的所有默认示例应用(docsexamplesmanagerhost-manager)。

    • Linuxsudo rm -rf /usr/local/tomcat/webapps/*

    • Windows: 通过文件资源管理器手动删除 CATALINA_HOME\webapps 目录下的所有子目录。

  2. 配置 HTTPS 

    生产环境应使用HTTPS,需Tomcat服务器安装SSL证书(Linux),使用Nginx 、负载均衡(SLB)作为反向代理来处理HTTPS请求。

常见问题

浏览器访问超时或显示“无法访问此网站”

  • 检查安全组:检查ECS实例的安全组入方向规则是否已放行8080端口。

  • 检查操作系统防火墙:检查操作系统内部的防火墙(如firewalldWindows Defender Firewall)是否关闭或已放行8080端口。

  • 检查端口监听:确认8080端口正被Tomcat监听。

    • Linuxss -lntp | grep 8080

    • Windowsnetstat -ano | findstr ":8080"

Tomcat启动失败

  1. 查看日志:Tomcat的主要日志位于其安装目录下的logs文件夹中。查看catalina.out(Linux)或catalina.<date>.log(Windows)和localhost.<date>.log文件,若日志中出现Address already in use错误,表示端口已被其他程序占用。详情请参见pingECS实例但端口不通的排查方法

  2. JDK路径错误:检查Java的环境变量JAVA_HOME配置是否正确。

Tomcat的日志信息显示中文乱码

该问题通常是由于Windows命令提示符(CMD)的默认编码(GBK)与Tomcat日志输出的编码(通常是UTF-8)不一致导致的。

  1. 打开Tomcat安装目录下的conf文件夹,找到并编辑logging.properties文件。

  2. 将文件中所有默认的编码UTF-8修改为GBK

  3. 保存文件并重新启动Tomcat,验证日志中的中文是否乱码。