nginx 源码编译安装后需手动配置 systemd 服务实现开机自启,关键步骤包括:确认安装路径、统一 pid 文件路径、创建 /etc/systemd/system/nginx.service 文件、执行 systemctl daemon-reload、enable 和 start 命令。

Nginx 通过源码编译安装(即二进制安装)后,默认不会注册为系统服务,必须手动配置 systemd 服务单元文件才能实现开机自启。关键在于路径匹配、PID 文件一致性和服务类型正确设置。
确认 Nginx 实际安装路径
二进制安装通常将 nginx 放在 `/usr/local/nginx/` 下,主程序路径为 `/usr/local/nginx/sbin/nginx`,配置文件为 `/usr/local/nginx/conf/nginx.conf`。 先验证:nginx -t # 检查配置语法是否正确
which nginx # 若无输出,用 /usr/local/nginx/sbin/nginx 测试
/usr/local/nginx/sbin/nginx -t
统一 PID 文件路径
systemd 需要读取 nginx 主进程的 PID 文件,而该路径必须与 nginx 自身写入的一致。 编辑 `/usr/local/nginx/conf/nginx.conf`,确保开头有且仅有一行:pid /run/nginx.pid;
如果目录 `/run/` 下无法写入(权限问题),可改为 `/var/run/nginx.pid`,但需同步更新后续 service 文件中的 PIDFile 字段。创建并配置 nginx.service 文件
新建服务定义文件:sudo nano /etc/systemd/system/nginx.service
填入以下内容(注意替换 ExecStart 和 ExecStartPre 中的路径为你的实际路径):[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
PIDFile=/run/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 QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启用并验证开机自启
执行三步命令:- sudo systemctl daemon-reload # 重载服务配置
- sudo systemctl enable nginx # 创建软链接,启用开机自启
- sudo systemctl start nginx # 立即启动并检查状态
systemctl status nginx # 应显示 active (running)
sudo reboot && systemctl is-active nginx # 重启后确认仍运行











