如何解决第一次重新加载后:"nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)"
使用 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.
解决方法
我认为在这种情况下的主要问题是 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
的状态。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。