使用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.
1条答案
按热度按时间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: nginx
(nginx
是软件包安装状态的名称)转换为管理/etc/nginx/nginx.conf
的状态。