Setting up Gunicorn for Django Project - 203/EXEC

May 27, 2017 105 views
Django Ubuntu

Hi everyone,

I'm trying to follow this tutorial on hosting my django app: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04#prerequisites-and-goals

I'm on the step "Check for the Gunicorn Socket File" - everything before that has been very successful. However, when I try this step, I just get an unhelpful error message.

Here is my /etc/systemd/system/gunicorn.service file:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=arya
Group=www-data
WorkingDirectory=/home/arya/measuring_polyphony_django
ExecStart=/home/arya/envs/polyphonynev/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/arya/measuring_polyphony_django/measuring_polyphony.sock measuring_polyphony.wsgi:application

[Install]
WantedBy=multi-user.target

Here's the message I get when I run sudo systemctl status gunicorn

arya@polyphony:~$ sudo systemctl status gunicorn
● gunicorn.service - gunicorn daemon
   Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2017-05-27 16:04:09 UTC; 13min ago
 Main PID: 9039 (code=exited, status=203/EXEC)

May 27 16:04:09 polyphony systemd[1]: Started gunicorn daemon.
May 27 16:04:09 polyphony systemd[1]: gunicorn.service: Main process exited, code=exited, status=203/EXEC
May 27 16:04:09 polyphony systemd[1]: gunicorn.service: Unit entered failed state.
May 27 16:04:09 polyphony systemd[1]: gunicorn.service: Failed with result 'exit-code'.

There is no measuring_polyphony.sock file either.

Here's what sudo journalctl -u gunicorn says:

May 27 16:04:09 polyphony systemd[1]: Started gunicorn daemon.
May 27 16:04:09 polyphony systemd[1]: gunicorn.service: Main process exited, code=exited, status=203/EXEC
May 27 16:04:09 polyphony systemd[1]: gunicorn.service: Unit entered failed state.
May 27 16:04:09 polyphony systemd[1]: gunicorn.service: Failed with result 'exit-code'.

So not much more helpful than the previous command.
To go through all the things that were listed as could go wrong in the guide:

  1. The project files are owned by the "arya" user
  2. The WorkingDirectory is definitely the home directory for my django project
arya@polyphony:~$ ls /home/arya/measuring_polyphony_django
importer.py  measuring.csv        media      my_project_visualized.png  schema.png  static     viewer
manage.py    measuring_polyphony  mei_files  __pycache__                secrets.py  templates

3a. The path to Gunicorn is the correct one for my virtualenv (and the one I used to test gunicorn earlier in the tutorial)

arya@polyphony:~$ source ~/envs/polyphonynev/bin/activate
(polyphonynev) arya@polyphony:~$ which gunicorn
/home/arya/envs/polyphonynev/bin/gunicorn

3b. The directory in the --bind option is definitely able to be created (I tested by running nano and saving a random file to the directory)

3c. The "measuringpolyphony.wsgi" setting definitely translates to this folder in the WORKINGDIRECTORY

(polyphonynev) arya@polyphony:~/measuring_polyphony_django$ ls measuring_polyphony/wsgi.py
measuring_polyphony/wsgi.py

Does anyone else see what could be wrong with this? Thank you!

2 comments
1 Answer
Have another answer? Share your knowledge.