第一次重新加载后:“nginx:[错误]打开()“/var/run/nginx.pid“失败(2:无此类文件或目录)”

des4xlb0  于 2023-01-29  发布在  Nginx
关注(0)|答案(1)|浏览(164)

使用Salt I applied表示将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.
x4shl7ld

x4shl7ld1#

我认为这种情况下的主要问题是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进程都已终止,使用所需的nginx.conf启动服务,或者[小心,备份配置...]只需完全删除软件包(禁用服务并删除配置)。如果是Salt Stack,则放置- require_in: pkg: nginxnginx是软件包安装状态的名称)转换为管理/etc/nginx/nginx.conf的状态。

相关问题