Alibaba Cloud Linux 3 安装 Tomcat

在阿里云服务器上安装 Tomcat(Java Web 服务器),需要先确保已安装 Java 环境(JDK),以下是详细步骤:

一、安装 Java 环境(JDK)

Tomcat 依赖 Java 运行环境,需先安装 JDK:

Oracle JDK:

安装教程

OpenJDK:

适用于 CentOS/RHEL
powershell 复制代码
# 查看可用JDK版本
sudo yum search java | grep -i jdk

# 安装OpenJDK 1.8(推荐,稳定且常用)
sudo yum install java-1.8.0-openjdk-devel -y

# 验证安装
java -version
javac -version  # 若显示版本信息,说明安装成功

通常路径为:/usr/lib/jvm/java-1.8.0-openjdk

适用于 Ubuntu/Debian
powershell 复制代码
# 查看可用JDK版本
sudo apt search openjdk

# 安装OpenJDK 1.8
sudo apt install openjdk-8-jdk -y

# 验证安装
java -version
javac -version

通常路径为:/usr/lib/jvm/java-8-openjdk-amd64

二、安装 Tomcat

Tomcat 9 为例(最新稳定版可到Tomcat 官网查看):

1. 下载 Tomcat 安装包

powershell 复制代码
# 进入/usr/local目录(推荐安装路径)
cd /usr/local

# 下载Tomcat 9(替换为最新版本链接)
sudo wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.111/bin/apache-tomcat-9.0.111.tar.gz

若wget未安装,先执行:

CentOS:sudo yum install wget -y

Ubuntu:sudo apt install wget -y

或者:
手动下载后上传到服务器

2. 解压并重命名

powershell 复制代码
# 解压
sudo tar -zxvf apache-tomcat-9.0.111.tar.gz -C /usr/local/tomcat/

# 重命名为tomcat(简化路径)
sudo mv apache-tomcat-9.0.85 tomcat_9.0.85

3. 配置环境变量(可选)

方便快速启动 Tomcat,编辑环境变量文件:

编辑profile文件(在文件末尾添加,注意替换Tomcat路径)
powershell 复制代码
cat >> /etc/profile <<'EOF'
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.111
export PATH=$PATH:$CATALINA_HOME/bin

EOF
使配置生效
powershell 复制代码
source /etc/profile

三、启动 Tomcat

启动成功

powershell 复制代码
# 进入Tomcat的bin目录
cd /usr/local/tomcat/apache-tomcat-9.0.111/bin

# 赋予执行权限
sudo chmod +x *.sh

# 启动Tomcat
sudo ./startup.sh

启动成功会显示:Tomcat started.

访问:http://IP:8080

启动报错

出现 "Neither the JAVA_HOME nor the JRE_HOME" 错误,通常是因为 Tomcat 启动脚本(startup.sh)没有正确识别到系统中配置的 JDK 环境变量。即使你已经配置了环境变量,可能存在以下问题及解决方法:

powershell 复制代码
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
方法 1:检查环境变量配置是否正确

首先确认JAVA_HOME是否正确配置并生效:

powershell 复制代码
echo $JAVA_HOME # 确保输出正确的JDK路径
java -version
javac -version

若echo $JAVA_HOME输出为空,说明环境变量未正确配置

方法 2:直接在 Tomcat 启动脚本中指定 JDK 路径

如果系统环境变量没问题,但 Tomcat 仍无法识别,可直接在 Tomcat 的启动脚本中强制指定JAVA_HOME:

  1. 进入 Tomcat 的bin目录:
powershell 复制代码
cd /usr/local/tomcat/apache-tomcat-9.0.111/bin
  1. 编辑setenv.sh文件(若不存在则创建):
powershell 复制代码
sudo vi setenv.sh
  1. 添加以下内容(替换为你的 JDK 路径):
powershell 复制代码
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export JRE_HOME=$JAVA_HOME/jre
  1. 赋予执行权限:
powershell 复制代码
sudo chmod +x setenv.sh
  1. 重新启动 Tomcat:
powershell 复制代码
sudo ./startup.sh
方法 3:检查用户权限问题

如果使用sudo启动 Tomcat,可能会导致环境变量失效(sudo默认会重置环境变量)。尝试不使用sudo直接启动(前提是 Tomcat 目录权限足够):

powershell 复制代码
./startup.sh  # 去掉sudo

若必须用sudo,可通过-E参数保留当前环境变量:

powershell 复制代码
sudo -E ./startup.sh

四、验证安装

查看 Tomcat 进程

powershell 复制代码
ps -ef | grep tomcat

若有进程信息,说明启动成功。

访问默认页面

  1. 在本地浏览器输入:http://服务器公网IP:8080
  2. 若看到 Tomcat 默认欢迎页,说明安装成功。

五、开放安全组端口

Tomcat 默认监听8080 端口,需在阿里云控制台开放:

  1. 登录 ECS 控制台,进入目标实例的安全组配置
  2. 添加规则:
    • 端口范围:8080/8080
    • 授权对象:0.0.0.0/0(按需限制来源)

六、配置 Tomcat 用户(管理界面)

若需使用 Tomcat 的管理界面(如部署 WAR 包),需配置用户权限:

编辑用户配置文件:

powershell 复制代码
sudo vi /usr/local/tomcat/apache-tomcat-9.0.111/conf/tomcat-users.xml

在标签内添加用户(示例):

powershell 复制代码
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="123456" roles="manager-gui,admin-gui"/>
  • manager-gui:允许访问/manager(应用管理)
  • admin-gui:允许访问/host-manager(主机管理)

解决远程访问限制(默认只允许本地访问):

powershell 复制代码
# 编辑manager配置
sudo vi /usr/local/tomcat/apache-tomcat-9.0.111/webapps/manager/META-INF/context.xml

# 注释或删除以下限制IP的配置
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->

# 同理修改host-manager配置
sudo vi /usr/local/tomcat/apache-tomcat-9.0.111/webapps/host-manager/META-INF/context.xml

重启 Tomcat 使配置生效:

powershell 复制代码
sudo /usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh
sudo /usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh

七、常用 Tomcat 命令

powershell 复制代码
# 启动
sudo /usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh

# 停止
sudo /usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh

# 重启(先停止再启动)
sudo /usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh && sudo /usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh

# 查看日志(排查错误)
tail -f /usr/local/tomcat/apache-tomcat-9.0.111/logs/catalina.out

八、设置开机自启

1、创建专用用户和用户组

首先在系统中创建tomcat用户和同名用户组(确保其无登录权限,仅用于运行服务):

powershell 复制代码
# 创建tomcat用户组
sudo groupadd -r tomcat

# 创建tomcat用户,加入tomcat组,禁止登录(-s /sbin/nologin),并指定家目录(可自定义)
sudo useradd -r -g tomcat -s /sbin/nologin -d /usr/local/tomcat/apache-tomcat-9.0.111 tomcat
  • r:创建系统用户(ID 范围在系统预设的系统用户区间)。
  • g tomcat:指定用户所属的主组为tomcat。
  • s /sbin/nologin:禁止该用户通过终端登录,增强安全性。
  • d /usr/local/tomcat:指定用户家目录(建议与 Tomcat 安装目录一致,便于权限管理)。

2、授权 Tomcat 目录权限

将 Tomcat 安装目录的所有者改为tomcat用户和用户组,确保其有足够权限运行服务(读取配置、写入日志等):

powershell 复制代码
# 假设Tomcat安装在/usr/local/tomcat/apache-tomcat-9.0.111
sudo chown -R tomcat:tomcat /usr/local/tomcat/apache-tomcat-9.0.111
  • R:递归修改目录下所有文件和子目录的权限。

核心原则

  • 最小权限原则:运行服务的用户仅需拥有 Tomcat 运行必需的权限(如读写logs、temp、work目录,读取conf目录,执行bin目录脚本等),无需系统级权限。
  • 禁止登录:通过/sbin/nologin禁止用户直接登录系统,避免人为误操作或恶意登录。

CentOS/RHEL

创建系统服务文件
powershell 复制代码
sudo vi /etc/systemd/system/tomcat.service
服务文件内容
powershell 复制代码
# 添加以下内容(注意替换路径和JDK目录)
[Unit]
Description=Tomcat  # 服务描述信息,便于识别服务用途
After=network.target  # 定义服务启动顺序:在网络服务(network.target)启动后再启动Tomcat

[Service]
Type=forking  # 服务类型:forking表示服务启动后会创建子进程(Tomcat的startup.sh会后台运行)
Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_201"  # 配置JDK环境变量,需替换为实际JDK安装路径
Environment="CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.111"  # 配置Tomcat安装目录环境变量,需替换为实际路径
ExecStart=/usr/local/tomcat/apache-tomcat-9.0.111/bin/startup.sh  # 启动命令:执行Tomcat的startup.sh脚本
ExecStop=/usr/local/tomcat/apache-tomcat-9.0.111/bin/shutdown.sh  # 停止命令:执行Tomcat的shutdown.sh脚本
User=tomcat  # 运行Tomcat的用户(生产环境建议使用非root用户,如tomcat,需提前创建)
Group=tomcat  # 运行Tomcat的用户组(同上,建议与用户一致)

[Install]
WantedBy=multi-user.target  # 定义服务的安装目标:表示在多用户模式(系统正常运行模式)下启动该服务
生效并设置开机自启
powershell 复制代码
# 重新加载systemd配置,使新创建的tomcat.service生效
sudo systemctl daemon-reload
powershell 复制代码
# 设置Tomcat开机自启
sudo systemctl enable tomcat
powershell 复制代码
# 立即启动Tomcat服务
sudo systemctl start tomcat
重启Tomcat,查看状态
powershell 复制代码
# 重启Tomcat服务(若已启动)
sudo systemctl restart tomcat

# 查看服务状态,确认用户是否生效
sudo systemctl status tomcat

Ubuntu/Debian

步骤同上。完成以上步骤后,Tomcat 即可稳定运行,可通过http://公网IP:8080访问,或部署 WAR 包到/usr/local/tomcat/apache-tomcat-9.0.111/webapps目录运行 Java 应用。

取消 Tomcat 的开机自启动

powershell 复制代码
sudo systemctl disable tomcat

如果需要确认是否已成功取消自启,可以使用以下命令查看服务的自启状态:

powershell 复制代码
sudo systemctl is-enabled tomcat
相关推荐
yuniko-n2 小时前
【Linux】CentOS 部署 IPFS
linux·服务器·centos·ipfs
liu****2 小时前
12.线程同步与互斥
linux·数据结构·c++·算法·1024程序员节
此生只爱蛋2 小时前
【Linux】Socket编程预备及UDP
linux·网络·udp
二进制星轨2 小时前
科研人如何使用ubantu服务器
运维·服务器
网宿安全演武实验室3 小时前
【技术观察】反检测浏览器Camoufox 技术解构与思考
运维·安全
打不了嗝 ᥬ᭄3 小时前
NAT,代理服务,内网穿透,DNS
linux·网络·网络协议
凯子坚持 c3 小时前
基于VMware与CentOS 7的Hadoop集群部署全景指南
linux·hadoop·centos
硬核子牙4 小时前
存储核心:EXT文件系统
linux
isaki1374 小时前
arm day1
linux·运维·arm开发