nginx:在 Ubuntu 18.04 上升级 Nginx 后无法识别的服务

nginx:在 Ubuntu 18.04 上升级 Nginx 后无法识别的服务

我从服务器中删除了默认的 Nginx 包,并从源代码编译它这里服务器上有一个脚本可以检查 Nginx,并报告任何问题:

if ($result->num_rows > 0) {
    exec('sudo service nginx configtest 2>&1', $output, $returnCode);
    if ($returnCode === 0) {
        passthru('sudo service nginx restart');
    } else {
        $subject = 'Nginx config test failed on ' .gethostname();
        $message = implode('<br>', $output);
        Mail::sendEmail('[email protected]', $subject, $message);
    }
}

运行时service nginx configtest我得到:

nginx: unrecognized service

然而,跑步的nginx -t回报是:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

我是否在某个我不知道的地方遗漏了配置?Nginx 正在运行,但它说它是一个unrecognized service

我创建了一个 systemd 单元文件,内容如下:

[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

我还启用并启动了 Nginx:

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

Nginx 正在运行,我可以使用此服务器访问网站。我可能遗漏了什么?谢谢。

答案1

service有的调用适用于“遗留”程序,但它nginx是一个 SystemD 单元,而不是遗留的 SysVInit/Upstart 服务。

service nginx configtest如今,它(通常被认为)已被“弃用”,取而代之的是直接sudo nginx -t使用命令来测试配置,您应该始终将其sudo nginx -t作为配置测试的首选。仅依靠service/systemctl来停止、启动和重新加载服务。不要再依赖它来执行“configtest”参数。

(在 Freenode 现为 LiberaChat 上的 nginx IRC 聊天中,我们始终鼓励人们使用sudo nginx -t它来进行配置测试,并将sudo nginx -T他们的配置以完全可读的形式转储以进行调试,所以这是我遵循的“标准”,因为 nginx 论坛也比服务调用更多地使用这种符号。)

相关内容