努力
加油

华为云EulerOS 2.0系统安装Nginx并配置网站的步骤是什么?

在华为云 EulerOS 2.0 (基于 CentOS/RHEL 体系) 上部署 Nginx 并配置网站,流程其实非常标准化。作为老手,我直接给你一套能跑通、且符合生产环境基本规范的实操步骤。

这里假设你使用的是 EulerOS 2.0 SP3 或更高版本(目前主流是 SP3/SP5),包管理工具依然是 yum。

第一步:更新系统并安装 EPEL 源(可选但推荐)

虽然 Nginx 官方源或者基础源里可能有,但为了获取最新稳定版和依赖完整性,建议先确保基础环境干净。

# 1. 更新所有系统包到最新
sudo yum update -y

# 2. 安装 EPEL 源 (Extra Packages for Enterprise Linux)
# 很多第三方库和工具依赖它,EulerOS 兼容 RHEL,所以这个命令通常有效
sudo yum install epel-release -y

# 3. 刷新缓存
sudo yum makecache

第二步:安装 Nginx

在 EulerOS 2.0 中,Nginx 通常可以通过基础仓库直接安装。如果基础仓库里没有,可以使用 Nginx 官方提供的 RPM 包源,或者继续使用 EPEL。

方法 A:使用默认仓库(最简单)

sudo yum install nginx -y

方法 B:使用 Nginx 官方源(推荐用于需要特定版本)

如果你想要更稳定的官方维护版本,可以添加官方源:

# 创建 repo 文件
sudo vi /etc/yum.repos.d/nginx.repo

# 内容如下(以 x86_64 为例):
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# 然后安装
sudo yum install nginx -y

注意:EulerOS 2.0 底层兼容 CentOS 7 的包结构,所以上面的路径写 centos/7 通常没问题。如果是较新的 EulerOS V2R0Pxx 系列,请确认你的架构是 aarch64 (鲲鹏) 还是 x86_64 (通用)。如果是鲲鹏服务器,上述官方源可能没有对应架构,建议优先尝试 yum install nginx 看是否能从华为云自带源拉取。

第三步:启动服务并设置开机自启

# 启动 Nginx
sudo systemctl start nginx

# 设置开机自启
sudo systemctl enable nginx

# 检查状态
sudo systemctl status nginx

如果看到 active (running),说明服务已正常启动。

第四步:配置防火墙和安全组(关键!)

这是新手最容易踩坑的地方。只配了防火墙没开安全组,或者反之,都会导致网络无法访问。

1. 服务器内部防火墙 (firewalld)

EulerOS 默认启用 firewalld。你需要放行 HTTP (80) 和 HTTPS (443) 端口。

# 查看当前区域
sudo firewall-cmd --get-default-zone

# 永久开放 80 端口
sudo firewall-cmd --permanent --add-port=80/tcp

# 永久开放 443 端口(如果需要 SSL)
sudo firewall-cmd --permanent --add-port=443/tcp

# 重载防火墙配置
sudo firewall-cmd --reload

# 验证规则是否生效
sudo firewall-cmd --list-all

2. 华为云 ECS 安全组(必须操作)

登录华为云控制台:

  1. 找到你的 ECS 实例。
  2. 点击“安全组”标签页。
  3. 进入该实例绑定的安全组。
  4. 添加入方向规则:
    • 协议:TCP
    • 端口范围:80, 443
    • 源地址:0.0.0.0/0 (或指定你的 IP 段)
    • 动作:允许

提醒:很多人本地 curl 不通,是因为忘了去华为云控制台开安全组,而不是服务器内部防火墙的问题。

第五步:配置网站目录与默认页面

Nginx 默认的网站根目录通常是 /usr/share/nginx/html。

# 进入默认目录
cd /usr/share/nginx/html

# 查看现有文件
ls -la

# 你可以删除默认文件,上传自己的 index.html
# 例如创建一个测试页
echo "<h1>Hello from EulerOS + Nginx</h1>" > index.html

此时,访问 http://<你的ECS公网IP> 应该能看到 Hello World。

第六步:自定义站点配置(进阶)

实际生产中,我们不会直接用默认目录,而是创建独立的配置文件。

1. 创建网站目录

sudo mkdir -p /var/www/mywebsite
sudo chown -R $USER:$USER /var/www/mywebsite
sudo chmod -R 755 /var/www/mywebsite

# 写入一个简单的 index.html
echo "<html><body><h1>My Custom Site on EulerOS</h1></body></html>" > /var/www/mywebsite/index.html

2. 创建 Nginx 配置文件

sudo vi /etc/nginx/conf.d/mywebsite.conf

填入以下内容(根据需求调整):

server {
    listen 80;
    server_name example.com www.example.com; # 替换为你的域名或 IP

    root /var/www/mywebsite;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # 错误页面定制(可选)
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

3. 测试配置语法并重载

# 测试配置文件是否有语法错误
sudo nginx -t

# 如果显示 "syntax is ok" 和 "test is successful",则重载
sudo systemctl reload nginx

第七步:验证与排错

  1. 本地测试:

    curl http://localhost

    应返回你刚才写的 HTML 内容。

  2. 远程测试:
    浏览器访问 http://<公网IP> 或通过 curl http://<公网IP> 从另一台机器测试。

  3. 常见问题排查:

    • 权限问题:如果访问 403 Forbidden,检查 /var/www/mywebsite 的属主和权限。Nginx worker 进程通常以 nginx 用户运行,确保该用户对目录有读取权限。
      sudo chown -R nginx:nginx /var/www/mywebsite
    • SELinux:EulerOS 默认开启 SELinux。如果修改了默认 Web 目录,可能需要调整 SELinux 上下文:
      sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/mywebsite(/.*)?"
      sudo restorecon -Rv /var/www/mywebsite
    • 日志查看:如果还是不行,看日志找原因。
      tail -f /var/log/nginx/error.log
      tail -f /var/log/nginx/access.log

总结

在华为云 EulerOS 2.0 上装 Nginx 的核心就是:

  1. yum install nginx
  2. 开 firewalld 端口
  3. 开华为云安全组端口(这一步最容易被忽略)
  4. 写好 conf 文件并 nginx -t && systemctl reload

这套流程适用于绝大多数基于 RPM 的 Linux 发行版,在华为云鲲鹏或 x86 实例上均适用。