华为云Linux云服务器搭建Tomcat:从零开始部署Java Web应用服务器

apphuang2026年06月24日 08:46:439

1. 引言:为什么选择华为云Linux服务器部署Tomcat

在云计算时代,将Java Web应用部署到云端已成为开发者和企业的主流选择。华为云弹性云服务器(Elastic Cloud Server,ECS)凭借其稳定的性能、灵活的资源伸缩能力以及高性价比,成为众多Java开发者的首选云平台之一。Tomcat作为Apache软件基金会旗下的开源Web应用服务器,以其轻量级、高性能和稳定的Servlet容器特性,在Java Web开发领域占据重要地位。本文将带领读者在华为云Linux云服务器上从零开始搭建Tomcat,涵盖环境准备、软件安装、配置优化、应用部署、安全加固和运维监控等全链路内容,帮助读者将本地开发的Java Web应用顺利发布到云端。

需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联

2. 准备工作:华为云ECS弹性云服务器的选购与创建

2.1 选择云服务器规格

在华为云控制台中创建ECS实例时,需要根据应用的预期负载选择合适的规格。对于中小型Java Web应用,推荐使用以下配置:

  • 计费模式:包年/包月适合长期稳定运行的生产环境;按需计费适合开发测试或短期项目。
  • 规格:入门级推荐c7.large.2(2核4GB);高并发场景可选择c7.xlarge.2(4核8GB)或更高配置。
  • 镜像:可选择CentOS 7.4/7.9 64bit、Huawei Cloud EulerOS(HCE)或Ubuntu 18.04/20.04 LTS。
  • 系统盘:建议至少40GB,如需存储大量日志或应用文件可适当扩容。
  • 弹性公网IP:选择"现在购买",线路推荐全动态BGP,带宽根据访问量选择(如5Mbit/s)。

2.2 安全组规则配置

安全组是华为云最重要的网络访问控制手段。创建ECS后,需要配置安全组入方向规则,允许外部访问Tomcat服务。默认情况下,Tomcat监听8080端口,因此必须放行TCP 8080端口。如果后续配置了HTTPS,还需要放行443端口。安全组规则配置建议如下:

  • 规则1:优先级1,策略允许,类型IPv4,协议端口TCP:8080,源地址0.0.0.0/0(允许公网访问)。
  • 规则2:优先级1,策略允许,类型IPv4,协议端口ICMP:全部,源地址0.0.0.0/0(允许ping测试)。
  • 规则3(可选):如需SSH远程连接,需放行TCP:22端口,源地址建议限制为特定IP段以提高安全性。

2.3 远程连接工具准备

在Windows系统上,推荐使用PuTTY作为SSH远程访问工具,使用WinSCP作为文件传输工具。在Linux或macOS系统上,可直接使用系统自带的SSH命令:ssh root@你的弹性公网IP

3. 安装JDK:Java运行环境的核心

Tomcat运行依赖Java环境,因此安装JDK是搭建Tomcat的第一步。华为云Linux服务器支持多种JDK安装方式,以下分别介绍Yum/DNF安装和手动安装两种方法。

3.1 方法一:使用Yum/DNF包管理器安装OpenJDK

这是最简便的安装方式,适用于CentOS、HCE等基于Red Hat的发行版。

# 更新yum缓存(可选)
sudo yum update -y

# 安装OpenJDK 1.8
sudo yum install java-1.8.0-openjdk -y

# 或安装完整版JDK(包含开发工具)
sudo yum install java-1.8.0-openjdk-devel -y

# 验证安装
java -version

对于Huawei Cloud EulerOS(HCE),使用dnf命令:

sudo dnf install java-1.8.0-openjdk -y
java -version

安装完成后,OpenJDK通常被安装在/usr/lib/jvm/目录下。

3.2 方法二:手动下载安装Oracle JDK

如果项目需要使用Oracle JDK,可前往Oracle官网下载Linux版本的tar.gz包,然后手动解压安装。

# 创建JDK安装目录
sudo mkdir -p /usr/local/java

# 将下载的jdk tar.gz包上传至服务器(如使用WinSCP)
# 或直接使用wget下载(需获取具体下载链接)

# 解压到指定目录
sudo tar -zxvf jdk-8u***-linux-x64.tar.gz -C /usr/local/java/

# 重命名解压后的文件夹(便于后续配置)
sudo mv /usr/local/java/jdk1.8.0_*** /usr/local/java/jdk1.8

3.3 配置JDK环境变量

无论采用哪种安装方式,都需要配置JAVA_HOME环境变量,以便系统能够找到Java命令。

# 编辑/etc/profile文件
sudo vi /etc/profile

# 在文件末尾添加以下内容(根据实际JDK路径调整)
# 对于OpenJDK,路径通常为:/usr/lib/jvm/java-1.8.0-openjdk-xxx/jre
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.xxx-xxxx
# 对于Oracle JDK,路径为:/usr/local/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 保存并退出,然后执行以下命令使配置生效
source /etc/profile

# 再次验证
java -version
echo $JAVA_HOME

4. 安装Tomcat:多种方式任你选择

Tomcat的安装同样支持多种方式,读者可根据实际需求灵活选择。

4.1 方法一:使用Yum/DNF包管理器安装Tomcat

这是最简单的安装方式,但需要注意Yum源中的Tomcat版本可能较旧。

# CentOS 7需先安装EPEL源
sudo yum install epel-release -y

# 安装Tomcat
sudo yum install tomcat -y

# 安装完成后,Tomcat被安装在/usr/share/tomcat目录
# 启动Tomcat
sudo systemctl start tomcat

# 设置开机自启动
sudo systemctl enable tomcat

4.2 方法二:手动下载安装Tomcat(推荐)

手动安装可以自由选择Tomcat版本,且便于自定义配置,是生产环境的推荐方式。

# 创建Tomcat安装目录
sudo mkdir -p /usr/local/tomcat

# 进入该目录
cd /usr/local/tomcat

# 使用wget下载Tomcat(以8.5.85版本为例)
sudo wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.85/bin/apache-tomcat-8.5.85.tar.gz

# 解压
sudo tar -zxvf apache-tomcat-8.5.85.tar.gz

# 创建软链接,方便版本升级
sudo ln -s /usr/local/tomcat/apache-tomcat-8.5.85 /usr/local/tomcat/latest

# 设置目录权限(Tomcat运行用户需有执行权限)
sudo chown -R root:root /usr/local/tomcat/latest/
sudo chmod +x /usr/local/tomcat/latest/bin/*.sh

4.3 配置Tomcat环境变量

设置CATALINA_HOME环境变量,使Tomcat命令全局可用。

# 编辑/etc/profile
sudo vi /etc/profile

# 添加以下内容
export CATALINA_HOME=/usr/local/tomcat/latest
export PATH=$PATH:$CATALINA_HOME/bin

# 使配置生效
source /etc/profile

5. 启动Tomcat并验证服务

5.1 启动Tomcat

手动安装的Tomcat通过startup.shshutdown.sh脚本控制启停。

# 进入Tomcat的bin目录
cd $CATALINA_HOME/bin

# 启动Tomcat
./startup.sh

# 查看启动日志
 tail -f $CATALINA_HOME/logs/catalina.out

当日志中出现"Server startup in xxx ms"字样时,表示Tomcat已成功启动。

5.2 验证访问

在浏览器中输入 http://你的弹性公网IP:8080,如果看到Tomcat的默认首页(一只猫的图标),说明部署成功。如果无法访问,请按以下顺序排查:

  1. 确认安全组已放行8080端口。
  2. 确认ECS已绑定弹性公网IP。
  3. 确认Tomcat进程正在运行:ps -ef | grep tomcat
  4. 检查防火墙是否阻断了8080端口:systemctl status firewalld

6. 部署Java Web应用(WAR包)

将开发完成的Java Web应用部署到Tomcat是搭建服务器的最终目的。传统部署方式是将WAR包复制到Tomcat的webapps目录下。

6.1 部署WAR包

# 将WAR包上传至服务器(使用WinSCP或scp命令)
# 然后将WAR包复制到webapps目录
cp /path/to/your-app.war $CATALINA_HOME/webapps/

# Tomcat会自动解压WAR包并部署应用
# 查看日志确认部署成功
tail -f $CATALINA_HOME/logs/catalina.out

部署完成后,可通过 http://你的弹性公网IP:8080/应用名 访问应用。如果将WAR包命名为 ROOT.war,则应用会部署在根路径下,可直接通过 http://你的弹性公网IP:8080 访问。

6.2 使用Manager App部署

Tomcat自带的Manager App提供了Web界面的部署方式,适合开发测试环境。需要在 conf/tomcat-users.xml 中配置管理员账号。

<role rolename="manager-gui"/>
<user username="admin" password="your_password" roles="manager-gui"/>

配置完成后重启Tomcat,访问 http://你的IP:8080/manager/html 即可通过界面上传部署WAR包。

7. 配置Tomcat开机自启动

生产环境要求服务器重启后Tomcat能够自动启动。以下是两种常见的配置方法。

7.1 方法一:使用systemd服务(推荐)

创建 /etc/systemd/system/tomcat.service 文件:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.xxx
Environment=CATALINA_HOME=/usr/local/tomcat/latest
Environment=CATALINA_BASE=/usr/local/tomcat/latest
ExecStart=/usr/local/tomcat/latest/bin/startup.sh
ExecStop=/usr/local/tomcat/latest/bin/shutdown.sh
User=root
Group=root
Restart=on-failure

[Install]
WantedBy=multi-user.target

然后执行以下命令启用服务:

sudo systemctl daemon-reload
sudo systemctl enable tomcat
sudo systemctl start tomcat
sudo systemctl status tomcat

7.2 方法二:使用rc.local(传统方式)

# 编辑/etc/rc.local
sudo vi /etc/rc.local

# 在exit 0之前添加一行
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-xxx && /usr/local/tomcat/latest/bin/startup.sh

# 赋予执行权限
sudo chmod +x /etc/rc.local

8. Tomcat性能优化:让应用飞起来

在生产环境中,合理的性能优化可以显著提升Tomcat的并发处理能力和响应速度。

8.1 线程池与连接数优化

conf/server.xml 中配置Connector参数:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           maxThreads="500"
           minSpareThreads="50"
           acceptCount="200"
           maxHttpHeaderSize="65536"
           disableUploadTimeout="true"
           useBodyEncodingForURI="true"
           enableLookups="false"
           URIEncoding="UTF-8"/>
  • maxThreads:Tomcat可创建的最大线程数,建议根据服务器CPU核心数设置(一般200-1000)。
  • minSpareThreads:最小空闲线程数,建议设为50-100。
  • acceptCount:请求队列的最大长度,超过此数值的请求将被拒绝。
  • connectionTimeout:连接超时时间,单位毫秒。

8.2 启用NIO连接器

NIO(Non-blocking I/O)连接器比传统的BIO具有更好的并发性能:

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" .../>

8.3 开启静态资源压缩与缓存

在Connector中开启Gzip压缩,减少网络传输量:

<Connector ... compression="on" compressionMinSize="1024" />

conf/web.xml 中配置静态资源缓存:

<mime-mapping>
    <extension>js</extension>
    <mime-type>application/javascript</mime-type>
</mime-mapping>

<!-- 在web-app中添加缓存控制 -->
<filter>
    <filter-name>ExpiresFilter</filter-name>
    <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
    <init-param>
        <param-name>ExpiresByType text/css</param-name>
        <param-value>access plus 1 day</param-value>
    </init-param>
</filter>

8.4 JVM参数调优

编辑 bin/catalina.sh,在文件开头添加JVM参数:

export JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC"
  • Xms:初始堆内存大小。
  • Xmx:最大堆内存大小,建议不超过服务器物理内存的70%。
  • MaxMetaspaceSize:元空间最大大小。
  • UseG1GC:使用G1垃圾回收器,适合大内存应用。

9. Tomcat安全加固:保护你的Web应用

9.1 修改默认端口

将默认的8080端口改为其他端口(如8088),降低被扫描攻击的风险。

<Connector port="8088" protocol="HTTP/1.1" .../>

9.2 修改Shutdown端口和命令

Tomcat默认的shutdown端口为8005,命令为"SHUTDOWN",应予以修改:

<Server port="8006" shutdown="COMPLEX_SHUTDOWN_CMD">

9.3 禁用Manager和Host-manager应用

删除或重命名 webapps 目录下的 managerhost-manager 文件夹,防止未授权访问。

9.4 配置HTTPS(SSL证书)

为Tomcat配置HTTPS是生产环境的必要步骤。首先在华为云SSL证书管理服务中申请或上传证书,下载Tomcat格式的证书文件(包含 .jks 证书文件和密码文件)。

conf/server.xml 中添加HTTPS Connector配置:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="200" scheme="https" secure="true"
           keystoreFile="/path/to/your_certificate.jks"
           keystorePass="your_keystore_password"
           clientAuth="false" sslProtocol="TLS"/>

配置完成后,确保安全组已放行443端口。

9.5 目录权限最小化

设置应用程序目录权限为500,仅对必要目录开放写权限。禁用自动部署功能,仅部署经过验证的WAR包。

10. 日志管理与监控告警

10.1 Tomcat日志文件

Tomcat的日志文件位于 $CATALINA_HOME/logs/ 目录下:

  • catalina.out:主日志文件,包含启动信息和运行时输出。
  • localhost.log:应用部署相关日志。
  • manager.log:Manager App操作日志。
  • access_log:访问日志(需在server.xml中配置AccessLogValve)。

查看实时日志:

tail -f $CATALINA_HOME/logs/catalina.out

10.2 华为云云日志服务(LTS)

华为云云日志服务(Log Tank Service,LTS)可以集中采集和存储Tomcat日志。在ECS上安装ICAgent日志采集工具后,即可将 catalina.out 等日志文件上报到LTS,实现日志的搜索、分析和告警。

10.3 华为云云监控服务(Cloud Eye)

通过华为云云监控服务(Cloud Eye)监控ECS和Tomcat的运行状态。可配置以下告警规则:

  • CPU使用率超过80%
  • 内存使用率超过85%
  • 磁盘使用率超过80%
  • Tomcat进程意外退出(需配合自定义监控脚本)

11. 常见问题与故障排查

11.1 端口被占用

启动Tomcat时提示端口已被占用。解决方法:

# 查看端口占用情况
netstat -tlnp | grep 8080

# 杀死占用端口的进程,或修改server.xml中的端口号

11.2 权限不足

执行启动脚本时提示"Permission denied"。解决方法:

chmod +x $CATALINA_HOME/bin/*.sh

11.3 外部无法访问

确保安全组已放行8080端口,且ECS已绑定弹性公网IP。可尝试在服务器本地使用 curl http://localhost:8080 测试,若本地可访问但外部不可访问,则问题出在安全组或防火墙。

11.4 JDK版本不匹配

Tomcat启动失败,日志提示Java版本错误。检查 java -version 输出的版本是否满足Tomcat要求(Tomcat 8需JDK 7+,Tomcat 9需JDK 8+)。

11.5 内存溢出(OutOfMemoryError)

调整JVM堆内存参数,在 catalina.sh 中增大 -Xmx 值。同时检查应用代码是否存在内存泄漏。

12. 总结

本文完整地介绍了在华为云Linux云服务器上搭建Tomcat的全过程,从ECS的选购与创建、安全组配置、JDK安装、Tomcat安装与启动、WAR包部署,到性能优化、安全加固、日志监控和故障排查,覆盖了从零到生产环境部署的所有关键环节。华为云弹性云服务器与Tomcat的组合,为Java Web应用提供了一个稳定、高效、可扩展的运行平台。希望本文能够帮助读者顺利完成在华为云上的Tomcat部署,将优秀的Java Web应用安全、高效地呈现给最终用户。

Q&A:常见问题速答

Q1:华为云ECS上安装Tomcat必须使用root用户吗?
A1:不必须。建议创建专用用户(如tomcat)运行Tomcat服务,以提高安全性。但使用root用户操作更为简便,适合开发测试环境。

Q2:Tomcat默认端口8080被占用怎么办?
A2:修改 conf/server.xml 中的Connector端口号,改为其他未被占用的端口(如8088),同时需要在华为云安全组中放行新端口。

Q3:部署WAR包后访问出现404错误是什么原因?
A3:可能原因包括:WAR包未成功解压(检查webapps目录下是否有对应文件夹)、访问路径错误(应为 /应用名)、应用本身存在配置问题(查看catalina.out日志)。

Q4:如何查看Tomcat的实时运行日志?
A4:使用 tail -f $CATALINA_HOME/logs/catalina.out 命令可实时查看主日志输出。

Q5:Tomcat服务重启后无法自动启动怎么办?
A5:检查systemd服务配置文件(/etc/systemd/system/tomcat.service)中的JAVA_HOME和CATALINA_HOME路径是否正确,然后执行 systemctl daemon-reload && systemctl enable tomcat 重新启用服务。

Q6:华为云ECS的安全组规则修改后需要重启ECS吗?
A6:不需要。安全组规则是实时生效的,修改后立即生效,无需重启云服务器。

相关文章

上海华为云代理有哪些

上海华为云代理有哪些

上海好的华为云代理商比较少,年销量能达到1亿+的代理商就更少了,而我们就是这杰出的代理中的一家。我们从2016年开始从事华为云代理商业务,能够为客户输出各种价值,比如能替用户节省一定的成本,能为华为云…

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

很多朋友都在吐槽:“华为云服务器太贵了,预算有限实在买不起!” 其实,买华为云服务器贵不贵,关键看你会不会选、会不会买。今天就来给大家分享一套超实用的省钱攻略,小公司、创业团队也能轻松用得起稳定又安全…

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

最近不少做 IT 运维或企业采购的朋友跟我吐槽,公司要上华为云服务器,去官网一看报价直接犯了难 —— 按年付费算下来,比预期预算高出不少。要是赶上业务扩张需要多台服务器,这笔开支更是让财务部门直皱眉。…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

上海汪远信息科技有限所在公司年销华为云产品3亿+,属于头部代理梯队,可为合作客户提供最高30%的返佣优惠,直接帮助企业降低30%的云资源成本。…

华为云代理商有哪些?华为云代理返点是真的么?

华为云代理商有哪些?华为云代理返点是真的么?

一,华为云代理商简介华为云代理商,顾名思义就是替华为云做华为云服务器数据库等公有云产品推广的代理商,每推广出一单华为云服务器,华为云会跟这个代理商结算佣金,佣金比例分为月度佣金,季度佣金和年度佣金,华…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

一、华为云代理商的核心价值定位1. 代理商的角色与职责华为云代理商作为华为云生态的核心合作伙伴,承担着三重核心职能:•产品推广销售:负责推广销售华为云全系列云产品,包括云服务器ECS、云数据…