努力
加油

在华为云EulerOS 2.0系统上如何部署一个静态网站?

在华为云 EulerOS 2.0 上部署静态网站,核心逻辑其实非常清晰:选一个轻量级的 Web 服务器(Nginx 或 Apache),把代码放上去,配好端口和防火墙。考虑到 EulerOS 是面向企业级服务的系统,稳定性优先,我推荐首选 Nginx,因为它处理静态资源并发能力更强,配置也更简洁。

以下是基于 EulerOS 2.0 (基于 CentOS/RHEL 体系) 的标准部署流程,去掉了所有废话,直接上干货。

第一步:环境准备与基础检查

登录到你的 ECS 实例(推荐使用 SSH 密钥对登录,更 secure)。首先确认系统版本和网络连通性。

# 查看系统版本,确认是 EulerOS 2.0
cat /etc/os-release

# 更新系统包(可选,但建议做,确保内核和基础库最新)
sudo yum update -y

第二步:安装 Nginx

EulerOS 的软件源默认包含 Nginx。如果官方源里没有或者版本太旧,可以考虑添加第三方源或使用源码编译,但在生产环境中,直接用 YUM 安装的稳定版足够应付大多数静态站点需求。

# 安装 Nginx
sudo yum install nginx -y

# 启动 Nginx 并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

验证安装是否成功:

systemctl status nginx

看到 active (running) 且绿色字样,说明服务已正常启动。此时你可以尝试通过浏览器访问 http://<你的ECS公网IP>,应该能看到 Nginx 的欢迎页面。

第三步:放置静态网站文件

Nginx 默认的网页根目录通常在 /usr/share/nginx/html。你可以直接将你的 HTML、CSS、JS 文件上传到这个目录。

方法一:本地上传(适合小项目)

使用 scp 命令从本地电脑上传:

# 在本地终端执行
scp -r ./my-website/* root@<你的ECS公网IP>:/usr/share/nginx/html/

方法二:Git 拉取(适合有代码仓库的项目)

如果你的静态网站托管在 GitLab/GitHub/Gitee,可以直接在服务器上拉取:

cd /usr/share/nginx/html
sudo rm -rf *  # 清空默认内容
git clone https://gitee.com/your-repo/my-static-site.git .
# 注意最后有个点,表示克隆到当前目录

注意:确保文件权限正确,Nginx 进程用户通常是 nginx 或 root,建议将文件所有者设为 nginx:

sudo chown -R nginx:nginx /usr/share/nginx/html

第四步:配置 Nginx(关键步骤)

虽然默认配置能跑通,但为了安全和性能,建议修改配置文件。

  1. 编辑配置文件:

    sudo vi /etc/nginx/nginx.conf
  2. 主要调整点:

    • worker_processes: 设置为 auto,让 Nginx 自动根据 CPU 核心数调整。
    • 错误日志级别: 生产环境建议改为 error 或 warn,减少磁盘 I/O。
    • 默认 server 块: 确保 root 指向你的实际路径(如果是 /usr/share/nginx/html 则无需改)。
  3. 如果你希望使用域名访问,需要配置虚拟主机。例如,创建一个新文件 /etc/nginx/conf.d/static-site.conf:

    server {
        listen 80;
        server_name your-domain.com www.your-domain.com;
    
        root /usr/share/nginx/html;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        # 可选:开启 gzip 压缩,提升加载速度
        gzip on;
        gzip_types text/plain application/json application/javascript text/css;
    }
  4. 测试配置语法是否正确:

    sudo nginx -t

    如果显示 syntax is ok 和 test is successful,则重载配置:

    sudo systemctl reload nginx

第五步:华为云安全组与防火墙配置

这是新手最容易踩坑的地方。EulerOS 内部防火墙可能开着,但更重要的是华为云控制台的安全组。

  1. 华为云控制台操作:

    • 进入 ECS 实例详情页 -> “安全组” -> “管理规则”。
    • 添加入方向规则:
      • 协议:TCP
      • 端口范围:80
      • 来源:0.0.0.0/0(允许所有 IP)
    • 如果有 HTTPS 需求,还需开放 443 端口。
  2. 系统内部防火墙(firewalld):
    EulerOS 默认启用 firewalld。确保 HTTP 服务被放行:

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload

第六步:HTTPS 配置(进阶但必要)

现在主流浏览器对 HTTP 会标记“不安全”,强烈建议配置 SSL。在华为云上,最简单的方式是使用 华为云证书管理服务 配合 WAF 或直接下载证书手动配置。

这里简述手动配置 Let’s Encrypt 或购买证书的流程:

  1. 获取 .crt 和 .key 文件,上传到服务器 /etc/nginx/ssl/ 目录。

  2. 修改 Nginx 配置,监听 443 端口:

    server {
        listen 443 ssl;
        server_name your-domain.com;
    
        ssl_certificate /etc/nginx/ssl/your_domain.crt;
        ssl_certificate_key /etc/nginx/ssl/your_domain.key;
    
        # 其他配置同上...
    }
    
    # 强制 HTTP 跳转 HTTPS
    server {
        listen 80;
        server_name your-domain.com;
        return 301 https://$server_name$request_uri;
    }
  3. 再次 nginx -t 和 systemctl reload nginx。

常见问题排查

  • 502 Bad Gateway:通常不是 Nginx 的问题,而是后端应用没起来。但静态网站一般不会出现这个,除非你误配了 proxy_pass。
  • 403 Forbidden:权限问题。检查 /usr/share/nginx/html 及其子文件的权限,确保 nginx 用户有读和执行权限。可以使用 ls -l 查看。
  • 无法访问:90% 是安全组没开 80/443 端口,或者防火墙没放行。先 ping 一下 IP,再 telnet IP 80,最后查安全组。

总结

在 EulerOS 2.0 上部署静态网站,本质就是:YUM 装 Nginx -> 放文件 -> 改配置 -> 开安全组。整个过程不超过 10 分钟。对于高并发场景,记得在华为云控制台给 ECS 绑定弹性公网 IP(EIP),并根据流量情况考虑升级到更高配置的实例或使用 CDN 提速静态资源。