I followed the systemd deployment instructions here at http://docs.gunicorn.org/en/stable/deploy.html
/etc/systemd/system/gunicorn3.service:
[Unit] Description=gunicorn3 daemon Requires=gunicorn3.socket After=network.target [Service] PIDFile=/run/gunicorn3/pid User=feritsuser Group=feritsuser RuntimeDirectory=gunicorn3 WorkingDirectory=/home/feritsuser/Ferits ExecStart=/usr/bin/gunicorn3 --pid /run/gunicorn3/pid \ --bind unix:/run/gunicorn3/socket Ferits.wsgi ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target /etc/systemd/system/gunicorn3.socket
[Unit] Description=gunicorn3 socket [Socket] ListenStream=/run/gunicorn3/socket [Install] WantedBy=sockets.target /etc/tmpfiles.d/gunicorn3.conf:
d /run/gunicorn3 0755 feritsuser feritsuser \ --workers 2 \ --timeout 300 \ --error-logfile /var/log/gunicorn3/error.log \ --log-level=debug I have gunicorn.conf symlinked to gunicorn3.conf as well.
My nginx proxy to the gunicorn socket is working. I can load the application and use it in a browser, but I'm getting a 502 timeout on one page. Nginx error log is:
2018/07/25 10:31:18 [error] 614#614: *3 upstream prematurely closed connection while reading response header from upstream, client: 10.18.3.145, server: _, request: "GET /browse/expenses/ HTTP/1.1", upstream: "http://unix:/run/gunicorn3/socket:/browse/expenses/", host: "10.18.3.59", referrer: "http://10.18.3.59/"
The timeout is occurring after 30 seconds, and it's not writing to the log file specified in gunicorn3.conf/gunicorn.conf, so it appears that my socket implementation is not honoring the .conf file. What am I doing wrong? I've tried chowning the .conf files for feritsuser:feritsuser, and still, nothing.