在华为云 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(关键步骤)
虽然默认配置能跑通,但为了安全和性能,建议修改配置文件。
-
编辑配置文件:
sudo vi /etc/nginx/nginx.conf -
主要调整点:
- worker_processes: 设置为
auto,让 Nginx 自动根据 CPU 核心数调整。 - 错误日志级别: 生产环境建议改为
error或warn,减少磁盘 I/O。 - 默认 server 块: 确保
root指向你的实际路径(如果是/usr/share/nginx/html则无需改)。
- worker_processes: 设置为
-
如果你希望使用域名访问,需要配置虚拟主机。例如,创建一个新文件
/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; } -
测试配置语法是否正确:
sudo nginx -t如果显示
syntax is ok和test is successful,则重载配置:sudo systemctl reload nginx
第五步:华为云安全组与防火墙配置
这是新手最容易踩坑的地方。EulerOS 内部防火墙可能开着,但更重要的是华为云控制台的安全组。
-
华为云控制台操作:
- 进入 ECS 实例详情页 -> “安全组” -> “管理规则”。
- 添加入方向规则:
- 协议:TCP
- 端口范围:80
- 来源:0.0.0.0/0(允许所有 IP)
- 如果有 HTTPS 需求,还需开放 443 端口。
-
系统内部防火墙(firewalld):
EulerOS 默认启用 firewalld。确保 HTTP 服务被放行:sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
第六步:HTTPS 配置(进阶但必要)
现在主流浏览器对 HTTP 会标记“不安全”,强烈建议配置 SSL。在华为云上,最简单的方式是使用 华为云证书管理服务 配合 WAF 或直接下载证书手动配置。
这里简述手动配置 Let’s Encrypt 或购买证书的流程:
-
获取
.crt和.key文件,上传到服务器/etc/nginx/ssl/目录。 -
修改 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; } -
再次
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 提速静态资源。
云技术博客