使用 Salt 我应用了安装和运行 NGINX (1.14.0-0ubuntu1.7) 作为服务的状态。服务的状态是活动的,但 systemctl reload nginx
一直失败,因此无法应用更新的配置。
完整日志:
systemd[1]: nginx.service: Can't open PID file /run/nginx.pid (yet?) after reload: No such file or directory
systemd[1]: Reloaded A high performance web server and a reverse proxy server.
systemd[1]: Reloading A high performance web server and a reverse proxy server.
nginx[18095]: nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
systemd[1]: nginx.service: Control process exited, code=exited status=1
systemd[1]: Reload failed for A high performance web server and a reverse proxy server.
systemd[1]: Reloading A high performance web server and a reverse proxy server.
nginx[1209]: nginx: [error] invalid PID number "" in "/var/run/nginx.pid"
systemd[1]: nginx.service: Control process exited, code=exited status=1
systemd[1]: Reload failed for A high performance web server and a reverse proxy server.
答案 0 :(得分:0)
我认为在这种情况下的主要问题是 NGINX 服务在放置所需的 /etc/nginx/nginx.conf
之前最初已启动。在我看来,这个命令导致NGINX搜索nginx.conf中定义的PID文件,但是在启动时PID位置策略不同,因此PID文件没有定义在重载服务预期的位置。
但是,service.running 监视 file: /etc/nginx/nginx.conf
。但这还不够,因为服务的第一次启动发生在使用默认 nginx.conf
的软件包安装之后。
综上所述,解决方案是在安装包之前将/etc/nginx/nginx.conf
与不同的pid
指令放在一起(如果安装了包,确保所有NGINX进程都被杀死,使用所需的{启动服务{1}} 或 [小心,备份配置...] 只是完全删除包禁用服务和删除配置)。在 Salt Stack 的情况下,将 nginx.conf
(这里的 - require_in: pkg: nginx
是包安装状态的名称)放入管理 nginx
的状态。