nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument

76,639

That warning with the nginx.pid file is a know bug (at least for Ubutnu if not for other distros as well). More details here: https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/1581864

Workaround (on a ssh console, as root, use the commands bellow):

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 

Then check if you still see that nginx.pid error and also if nginx is actually running and if you can connect to port 80 on your server.

I would also check if this actually exists and the permissions on it:

/run/uwsgi/mysite3.sock

If nginx is running and uWSGI is running as well then I guess it's a configuration problem

I understand you want to use Django so I would recommend to review your actual configuration and compare it with the one from here:

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

I hope it helps!

Share:
76,639

Related videos on Youtube

user1592380
Author by

user1592380

Updated on July 09, 2022

Comments

  • user1592380
    user1592380 almost 2 years

    I'm working through https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-16-04. I've completed the tut but I'm getting a 502 error.

    My nginx server block configuration file:

    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;
    }
    }
    
    deploy@server:/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.
    

    nginx error log shows:

    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"
    

    It looks to me that uwsgi is running ok:

    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
    

    How can I fix this?

    edit:

    root@server:~# mkdir /etc/systemd/system/nginx.service.d
    root@server:~# printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
    root@server:~# systemctl daemon-reload
    root@server:~# systemctl restart nginx
    root@server:~# 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
    root@server:~#
    
  • leo
    leo about 7 years
    I needed to first do this: mkdir /etc/systemd/system/nginx.service.d
  • Peter Krauss
    Peter Krauss almost 7 years
    I am using apt install nginx with fresh UBUNTU 16 LTS... And need to correct this bug. How to install NGINX whithout this bug?
  • David
    David over 6 years
    The paragraph about uWSGI needs some more explanation. I'm pretty sure it's not required and I also don't use it.
  • ram
    ram almost 6 years
    This works. I got a permissions denied message when I tried the printf statement with just a 'sudo' before it. So, I had to go into root ('sudo su') first. It got executed then. The remaining worked with plain 'sudo'.
  • Spangen
    Spangen over 5 years
    In case anyone comes here using openresty with the same issue. Also fixed by adding file as /lib/systemd/system/openresty.service.d/override.conf
  • Bheid
    Bheid almost 4 years
    printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" | \ sudo tee /etc/systemd/system/nginx.service.d/override.conf fixed my problem
  • Admin
    Admin over 2 years
    You can also use systemctl edit to open an editor and automatically reload (not restart) the unit.