阿里云(Alibaba Cloud Linux 3 )服务器安装nginx指南

1,151 阅读2分钟

近期在阿里云平台部署了一台ECS服务器,操作系统选用Alibaba Cloud Linux 3(Aliyun Linux 3),基于CentOS Stream 8构建,本文将详细地记录官方 Nginx的全过程

一、卸载旧版本

# 确认系统安装的nginx版本
nginx -v 
yum list installed | grep nginx

# 卸载前,先停止运行中的 Nginx 服务
sudo systemctl stop nginx
sudo systemctl disable nginx
sudo systemctl status nginx # 确认nginx 是否停止运行

# 卸载Nginx
sudo yum remove nginx -y

# 清理残留文件
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx
sudo rm -rf /var/www/html

#  清理 yum 缓存,确保系统不再引用已卸载的 Nginx 包
sudo yum clean all
sudo yum makecache

# 检查 Nginx 是否已完全卸载,为空则完全卸载
which nginx

# 移除nginx 源
sudo rm -f /etc/yum.repos.d/nginx.repo

二、解决 yum 排除过滤问题

检查yum 配置中存在 exclude=nginx,这行配置会阻止 yum 对 nginx 及其相关包执行任何操作,包括安装、更新和卸载

方案一 : 可以先注释该行配置,安装完成后再取消注释

# 先备份yum配置文件
sudo cp /etc/yum.conf /etc/yum.conf.bak

# 编辑配置文件,进入配置文件,Vi编辑器 输入i 进入编辑状态,在exclude=nginx*的行首#号(例如:#exclude=nginx*),按Esc后输入:wq,enter保存;如果想取消修改,输入:qa!,enter 退出编辑
sudo vi /etc/yum.conf

# 清除YUM缓存
sudo yum clean all

# 安装nginx

方案二 :临时禁用所有排除规则命令安装,--disableexcludes 仅对当前命令临时生效,不会修改系统配置文件。安装完成后,下次使用 dnf 时,原配置文件中的排除规则会自动恢复生效。

# 使用 --disableexcludes=all 参数临时禁用所有排除规则
sudo dnf -y --disableexcludes=all install nginx

三、安装nginx

由于 Nginx 官方不直接支持 CentOS 8/Alibaba Cloud Linux 3,需手动配置兼容的仓库;我们使用 https://nginx.org/packages/rhel/8/,因为 RHEL 8 的二进制包完全兼容 Alibaba Cloud Linux 3。

配置nginx 源

# 检查系统版本
cat /etc/redhat-release  # 确认是 Alibaba Cloud Linux 3

# 创建 Nginx 仓库配置文件(指向 RHEL 8,与 Alibaba Cloud Linux 3 兼容)
sudo tee /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/rhel/8/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

安装 Nginx

# 安装 Nginx(使用 RHEL 8 仓库,兼容 Alibaba Cloud Linux 3)
sudo dnf -y install nginx

# 验证安装
nginx -v  # 应显示 nginx/1.24.x 或更高版本

启动nginx

# 启动 Nginx 服务
sudo systemctl start nginx
sudo systemctl enable nginx

# 检查服务状态
sudo systemctl status nginx

# 测试访问(应返回 "Welcome to nginx!")
curl http://localhost

四、公网访问nginx服务配置

要从公网访问阿里云服务器上的 Nginx 服务,需要完成以下 3 个关键步骤配置安全组规则开放防火墙端口验证服务监听与公网连通性

1、配置安全组规则

阿里云服务器默认通过 安全组 控制公网入站流量,需手动开放 HTTP(80 端口)或 HTTPS(443 端口),根据以下操作进行配置:

  1. 登录阿里云控制台 访问 阿里云服务器管理控制台,找到你的服务器实例。
  2. 进入安全组配置
    • 点击实例右侧的 安全组 → 点击安全组名称 → 进入 安全组规则 页面。
    • 点击 添加安全组规则
  3. 添加 HTTP/HTTPS 规则
    • 规则方向:选择「入方向」
    • 授权策略:允许
    • 协议类型:选择「自定义 TCP 协议」
    • 端口范围:输入 80/80(HTTP)或 443/443(HTTPS)
    • 授权对象:输入 0.0.0.0/0(允许所有公网 IP 访问)
    • 描述:自定义(如 “Allow HTTP access”)
    • 点击 确定 保存规则

2、开放防火墙端口

# 检查防火墙状态(确保已启动)
sudo systemctl status firewalld

# 开放 HTTP 端口(80)
sudo firewall-cmd --permanent --add-port=80/tcp

# 开放 HTTPS 端口(443,可选)
sudo firewall-cmd --permanent --add-port=443/tcp

# 重新加载防火墙规则
sudo firewall-cmd --reload

3、验证服务监听与公网连通性

# 确保 Nginx 已启动并开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx  # 确认状态为 active (running)

# 查看 80 端口是否被监听(需显示 0.0.0.0:80)
sudo netstat -tunlp | grep nginx

# 或使用 ss 命令
sudo ss -ltnp | grep nginx

4、公网访问测试

  • 获取服务器公网 IP 在阿里云控制台实例页面查看公网 IP(例如:XXX.XXX.XXX.XXX)。

  • 本地浏览器访问 在浏览器输入公网 IP,若看到 Nginx 默认欢迎页面(“Welcome to nginx!”),说明访问成功。

  • 命令行测试(可选)

# 在本地终端使用 `curl` 命令:
curl http://公网IP

五、避免Docker 干扰

如果系统已经安装过 Docker,下载nginx 过程中,DNF 在处理新安装请求时仍会尝试更新所有启用的仓库元数据。Docker 仓库配置错误(如指向不存在的 centos/8 路径或 SSL 问题)会导致整个安装过程中断

  • 安装nginx 前,临时禁用 Docker 仓库,确保 Nginx 安装不受干扰
# 重命名 Docker 仓库配置文件(临时禁用)
sudo mv /etc/yum.repos.d/docker-ce.repo /etc/yum.repos.d/docker-ce.repo.bak
​
# 清除缓存并重新生成
sudo dnf clean all
sudo dnf makecache
  • 安装nginx

  • 恢复 Docker 仓库配置

# 恢复 Docker 仓库配置文件
sudo mv /etc/yum.repos.d/docker-ce.repo.bak /etc/yum.repos.d/docker-ce.repo

# 修复 Docker 仓库配置(指向 CentOS Stream 8)
sudo vi /etc/yum.repos.d/docker-ce.repo

# 将 baseurl 修改为(使用阿里云镜像源):
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/\$basearch/stable

# 重新生成缓存
sudo dnf makecache