Я удалил стандартный пакет 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('it_staff@mydomain.com', $subject, $message);
}
}
При запуске service nginx configtest
я получаю:
nginx: неопознанная служба
Однако при запуске nginx -t
возвращает:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Могу ли я где-то пропустить конфигурацию, о которой я не знаю? Nginx работает, но сообщает, что это неопознанный сервис
.
Я создал файл модуля 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 запущен, и я могу посещать веб-сайты, используя этот сервер. Что я мог упустить? Спасибо.
Старый вызов службы
предназначен для «устаревших» программ, но nginx
является модулем SystemD, а не устаревшим SysVInit / Служба выскочки.
служба nginx configtest
устарела в пользу прямого sudo nginx -t
в настоящее время, и вы всегда должны использовать sudo nginx -t
в качестве средства настройки тестирование. Положитесь только на службу
/ systemctl
для остановки, запуска и перезагрузки службы. Больше не полагайтесь на него в параметрах configtest.