概述

如果你的Nginx是通过源码编译安装的,我们通常是在程序根目录下./sbin/nginx 运行。查看是否在后台运行ps -ef|grep nginx这种方法,查看运行日志很不方便,这里我们可以通过systemd管理。

配置systemd

1
2
3
#在/lib/systemd/system下创建nginx.service
cd /lib/systemd/system
vim nginx.service

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#  控制单元:主要给出服务描述、启动顺序和依赖关系
[Unit]
Description=nginx service
After=network.target

# 服务:主要给出服务的启动行为,如何启动、重启、停止
[Service]
Type=forking

ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

# 安装部分:主要说明如何安装这个配置文件,把该 unit 安装在哪个 target上,做到开机自启
[Install]
WantedBy=multi-user.target

最后保存退出即可。

测试

1
2
3
4
5
6
7
8
启动nginx服务
# systemctl start nginx.service
停止nginx服务
# systemctl stop nginx.service
查看服务当前状态
# systemctl status nginx.service
设置开启自启动
# systemctl enable nginx.service

常见故障

1
2
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
#这个错误提示是 nginx.pid 文件缺失导致的错误

解决方法:关掉该进程,重启。

1
2
#  pkill -9 nginx
# /usr/local/nginx/sbin/nginx -s reload

PID文件的作用:为了防止用户同时启动多个nginx,在你每次成功退出后/usr/local/nginx/logs/nginx.pid文件就会被自动清理掉。