在华为云 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 安全组(必须操作)
登录华为云控制台:
- 找到你的 ECS 实例。
- 点击“安全组”标签页。
- 进入该实例绑定的安全组。
- 添加入方向规则:
- 协议: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
第七步:验证与排错
-
本地测试:
curl http://localhost应返回你刚才写的 HTML 内容。
-
远程测试:
浏览器访问http://<公网IP>或通过curl http://<公网IP>从另一台机器测试。 -
常见问题排查:
- 权限问题:如果访问 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
- 权限问题:如果访问 403 Forbidden,检查
总结
在华为云 EulerOS 2.0 上装 Nginx 的核心就是:
yum install nginx- 开
firewalld端口 - 开华为云安全组端口(这一步最容易被忽略)
- 写好 conf 文件并
nginx -t&&systemctl reload
这套流程适用于绝大多数基于 RPM 的 Linux 发行版,在华为云鲲鹏或 x86 实例上均适用。
云技术博客