Puncte:0

nginx: unrecognized service after upgrading Nginx on Ubuntu 18.04

drapel eg

I removed the default Nginx package from my server, and compiled it from source here. There is a script on the server that checks Nginx, and reports any problem:

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);
    }
}

When running service nginx configtest I get:

nginx: unrecognized service

However, running nginx -t returns:

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

Am I missing a configuration somewhere that I'm unaware of? Nginx is working, but it's saying it's an unrecognized service.

I created a systemd unit file with the following:

[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

I also enabled and started Nginx:

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

Nginx is running, and I can hit web sites using this server. What could I be missing? Thanks.

Puncte:1
drapel ru

Bătrânii serviciu apel este acolo pentru programele „moștenite”, dar nginx este o unitate SystemD și nu un serviciu SysVInit/Upstart vechi.

serviciu nginx configtest este (în general considerat) „depreciat” în favoarea dreptului sudo nginx -t comenzi pentru a testa configurația în zilele noastre și ar trebui să operați întotdeauna cu sudo nginx -t ca punct de plecare pentru testarea configurației. Bazează-te doar pe serviciu / systemctl pentru oprirea, pornirea și reîncărcarea serviciului. Nu vă mai bazați pe el pentru parametrii „configtest”.

(În chatul IRC nginx de pe Freenode, acum LiberaChat, am insistat mereu ca oamenii să-l folosească sudo nginx -t pentru testele lor de configurare și sudo nginx -T pentru a-și arunca configurațiile într-o formă complet lizibilă pentru depanare, deci acesta este „standardul” după care merg, deoarece forumurile nginx folosesc, de asemenea, această notație mai mult decât apelurile de serviciu.)

DevOpsSauce avatar
drapel eg
Mulțumesc. Se pare că va trebui să commit un cod pentru a schimba sintaxa acelei verificări. Remediere simplă. :)
DevOpsSauce avatar
drapel eg
Întrebare: Unde pot găsi în documente că `configtest` nu mai funcționează? Se pare că nu îl găsesc nicăieri, chiar și atunci când încerc să caut prin documentele Nginx.
drapel ru
@DevOpsSauce este doar cunoștințe generale în lumea nginx. Nu este documentat în documentația nginx. Dar, în general, `service nginx ...` este un mecanism SysVInit / Upstart depreciat care nu se traduce direct în lumea SystemD a nginx. De obicei, se sugerează că, pentru NGINX, rularea `sudo nginx -t` este modalitatea de a rula un test de configurare, deoarece este independent de sistem init, ceea ce înseamnă că funcționează pe toate distribuțiile și sistemele de init care încă există.
DevOpsSauce avatar
drapel eg
Multumesc mult pentru explicatie.
drapel ru
Bine ați venit, am adăugat câteva clarificări în acest sens la răspunsul meu cu privire la motivul pentru care este în general considerat „depreciat” în favoarea modului init-system-agnostic de a declanșa aceleași teste.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.