webentwicklung-frage-antwort-db.com.de

nginx.service: Fehler beim Lesen der PID aus der Datei /run/nginx.pid: Ungültiges Argument

Ich arbeite an https://www.digitalocean.com/community/tutorials/how-to-serve-Django-applications-with-uwsgi-and-nginx-on-ubuntu-16-04 =. Ich habe die Übung abgeschlossen, bekomme aber einen 502-Fehler.

Meine Nginx Server Block Konfigurationsdatei:

server {
listen 80;
server_name 198..xxx.xxx.xxx mysite.org;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
    root /home/deploy/mysite3;
}

location / {
    include         uwsgi_params;
    uwsgi_pass      unix:/run/uwsgi/mysite3.sock;
}
}

[email protected]:/etc/nginx/sites-enabled$ Sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-02-06 17:30:53 EST; 4s ago
  Process: 7374 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 7383 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 7380 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 7384 (nginx)
   CGroup: /system.slice/nginx.service
           ├─7384 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
           └─7385 nginx: worker process

Feb 06 17:30:53 server systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 06 17:30:53 server systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
Feb 06 17:30:53 server systemd[1]: Started A high performance web server and a reverse proxy server.

das nginx-Fehlerprotokoll zeigt:

2017/02/06 21:10:32 [error] 7385#7385: *15 upstream prematurely closed connection while reading response header from upstream, client: 64.xxx.xxx.xxx, server: 198.xxx.xxx.xxx, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/run/uwsgi/mysite3.sock:", Host: "mysite.org"

Es sieht für mich so aus, als ob uwsgi in Ordnung läuft:

Feb 06 17:43:42 server uwsgi[7434]: WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0xc7ac10 pid: 7435 (default app)
Feb 06 17:43:42 server uwsgi[7434]: *** uWSGI is running in multiple interpreter mode ***
Feb 06 17:43:42 server uwsgi[7434]: spawned uWSGI master process (pid: 7435)
Feb 06 17:43:42 server uwsgi[7434]: Mon Feb  6 17:43:42 2017 - [emperor] vassal mysite3.ini has been spawned
Feb 06 17:43:42 server uwsgi[7434]: spawned uWSGI worker 1 (pid: 7439, cores: 1)
Feb 06 17:43:42 server uwsgi[7434]: spawned uWSGI worker 2 (pid: 7440, cores: 1)
Feb 06 17:43:42 server uwsgi[7434]: spawned uWSGI worker 3 (pid: 7441, cores: 1)
Feb 06 17:43:42 server uwsgi[7434]: spawned uWSGI worker 4 (pid: 7442, cores: 1)
Feb 06 17:43:42 server uwsgi[7434]: spawned uWSGI worker 5 (pid: 7443, cores: 1)
Feb 06 17:43:42 server uwsgi[7434]: Mon Feb  6 17:43:42 2017 - [emperor] vassal mysite3.ini is ready to accept requests

Wie kann ich das beheben?

bearbeiten:

[email protected]:~# mkdir /etc/systemd/system/nginx.service.d
[email protected]:~# printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
[email protected]:~# systemctl daemon-reload
[email protected]:~# systemctl restart nginx
[email protected]:~# systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
  Drop-In: /etc/systemd/system/nginx.service.d
           └─override.conf
   Active: active (running) since Tue 2017-02-07 08:18:26 EST; 6s ago
  Process: 10076 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5
  Process: 10084 ExecStartPost=/bin/sleep 0.1 (code=exited, status=0/SUCCESS)
  Process: 10082 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (cod
  Process: 10079 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process
 Main PID: 10083 (nginx)
   CGroup: /system.slice/nginx.service
           ├─10083 nginx: master process /usr/sbin/nginx -g daemon on; master_pr
           └─10085 nginx: worker process

Feb 07 08:18:26 server systemd[1]: Starting A high performance web server and a
Feb 07 08:18:26 server systemd[1]: Started A high performance web server and a r
[email protected]:~#
25
user61629

Diese Warnung mit der Datei nginx.pid ist ein bekannter Fehler (zumindest für Ubutnu, wenn nicht auch für andere Distributionen). Weitere Details hier: https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864

Problemumgehung (verwenden Sie auf einer ssh-Konsole als Root die folgenden Befehle):

mkdir /etc/systemd/system/nginx.service.d
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
systemctl daemon-reload
systemctl restart nginx 

Überprüfen Sie dann, ob der Fehler nginx.pid weiterhin auftritt und ob nginx tatsächlich ausgeführt wird und ob Sie eine Verbindung zu Port 80 auf Ihrem Server herstellen können.

Ich würde auch prüfen, ob dies tatsächlich existiert und die Berechtigungen dafür:

/run/uwsgi/mysite3.sock

Wenn nginx läuft und uWSGI auch läuft, dann ist es vermutlich ein Konfigurationsproblem

Ich verstehe, dass Sie Django verwenden möchten, daher würde ich empfehlen, Ihre aktuelle Konfiguration zu überprüfen und mit der von hier zu vergleichen:

http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

Ich hoffe, es hilft!

46
Bogdan Stoica