加油
努力

如何在EulerOS 2.0 64位系统中启动并设置Nginx开机自启?

在 EulerOS 2.0(基于 CentOS 7 / RHEL 7 兼容内核,使用 systemd)中启动并设置 Nginx 开机自启,需按以下步骤操作。EulerOS 2.0 默认未预装 Nginx,因此需先确认是否已安装;若未安装,请先部署。


✅ 前提检查:确认 Nginx 已正确安装

EulerOS 2.0 官方源中默认不包含 Nginx(因安全策略和软件包策略),通常需通过以下方式之一安装:

方式一:使用华为官方源(推荐)

# 查看可用仓库(确认是否有 euler-os 或 appstream 等)
yum repolist

# 若有 euler-os-appstream 或 euler-os-plus 源,可尝试安装(部分版本已提供)
sudo yum install -y nginx

⚠️ 注意:EulerOS 2.0 SPx(如 SP3/SP9)的 euler-os-plusappstream 仓库中可能已收录 nginx(版本通常为 1.18.x 或 1.20.x)。建议先执行 yum search nginxdnf search nginx(若已升级 dnf)确认。

方式二:手动编译安装(如源中无包)

  • 下载源码(如 nginx-1.22.1)、编译安装至 /usr/local/nginx,并自行创建 systemd unit 文件(见下文)。

方式三:使用第三方源(谨慎评估安全性)

例如启用 EPEL(需确认兼容性):

sudo yum install -y https://repo.huaweicloud.com/euler/2.0/os/x86_64/Packages/euler-release-2.0-1.noarch.rpm
# 或导入 EPEL(非官方推荐,可能存在兼容风险)
sudo yum install -y epel-release
sudo yum install -y nginx

安装后验证

nginx -v                # 查看版本
nginx -t                # 测试配置语法
systemctl list-unit-files | grep nginx  # 检查是否已有 nginx.service

✅ 步骤 1:启动 Nginx 服务

# 启动(立即运行)
sudo systemctl start nginx

# 检查状态(应显示 active (running))
sudo systemctl status nginx

# 查看监听端口(默认 80)
sudo ss -tlnp | grep ':80'

✅ 步骤 2:设置开机自启

# 启用开机自启(写入 /etc/systemd/system/multi-user.target.wants/nginx.service)
sudo systemctl enable nginx

# 验证是否启用成功
sudo systemctl is-enabled nginx  # 应输出 "enabled"

✅ 步骤 3:(可选)配置防火墙放行 HTTP(80)端口

EulerOS 2.0 默认使用 firewalld

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
# 或直接开放端口
# sudo firewall-cmd --permanent --add-port=80/tcp
# sudo firewall-cmd --reload

🔍 若使用 iptables(较少见),请确保规则允许 :80


✅ 补充:若 Nginx 是手动编译安装(如 /usr/local/nginx

需创建 systemd unit 文件:

sudo tee /etc/systemd/system/nginx.service << 'EOF'
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s TERM /usr/local/nginx/logs/nginx.pid
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF

然后重载 systemd 并启用:

sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx

✅ 验证开机自启生效(可选测试)

# 模拟重启(生产环境慎用)
sudo reboot

# 或检查开机时服务是否被激活
sudo systemctl list-dependencies --before multi-user.target | grep nginx

❌ 常见问题排查

现象 可能原因 解决方法
Failed to start nginx.service: Unit not found 未安装或 unit 文件缺失 检查 rpm -qa | grep nginxls /usr/lib/systemd/system/nginx*
nginx: [emerg] getpwnam("nginx") failed 用户 nginx 不存在 sudo useradd -r -s /sbin/nologin nginx
Job for nginx.service failed 配置错误或端口被占 sudo nginx -t + sudo ss -tlnp | grep :80
enable 成功但 is-enabled 显示 disabled 权限/路径错误或 unit 未重载 sudo systemctl daemon-reload 后再 enable

✅ 总结命令(一键流程,假设已安装):

sudo nginx -t && 
sudo systemctl start nginx && 
sudo systemctl enable nginx && 
sudo firewall-cmd --permanent --add-service=http && 
sudo firewall-cmd --reload && 
echo "✅ Nginx 启动并设置开机自启成功!"

如需进一步定制(SSL、反向X_X等),可继续配置 /etc/nginx/nginx.conf 或站点配置文件(/etc/nginx/conf.d/*.conf)。

需要我为你生成一个完整的 nginx.conf 示例或 HTTPS 配置模板吗?

云服务器