Russell
Russell

Reputation: 1814

Django Gunicorn error

I'm trying to deploy django application on digital ocean using their tutorial how to setup django. Like others I'm also facing 502 error. I saw that no myproject.sock file generated. How to fix the error. my /etc/systemd/system/gunicorn.service

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

[Service]
User=root
Group=www-data
WorkingDirectory=/home/root/myproject
ExecStart=/home/root/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/root/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

And nginx config at /etc/nginx/sites-available/myproject

server {
    listen 80;
    server_name my_server_ip;

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

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/root/myproject/myproject.sock;
    }
}

I can not find any myproject.sock file in my project root folder

Upvotes: 0

Views: 191

Answers (1)

nrhode
nrhode

Reputation: 942

The nginx looks good but for the .sock file I would recommend to change it and call a .sh file: myproject.sock:

[Unit]
Description=Myproject gunicorn daemon

[Service]
Type=simple
User=root
ExecStart=/home/root/myproject_start.sh

[Install]
WantedBy=multi-user.target

myproject_start.sh

#!/bin/bash

NAME="myproject"                              
DJANGODIR=/home/root/myproject           
SOCKFILE=/home/root/myproject/myproject.sock      
USER=root                                       
#GROUP=www-data                                   
NUM_WORKERS=3                                    
DJANGO_SETTINGS_MODULE=myproject.settings   
DJANGO_WSGI_MODULE=myproject.wsgi

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
#IF YOU HAVE VIRTUALENV - OTHERWISE CHOOSE YOUR PYTHON DIR
source /home/root/myproject/myprojectenv/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn

exec /home/root/myproject/myprojectenv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
    --name $NAME \
    --workers $NUM_WORKERS \
    --user $USER \
    --bind=unix:$SOCKFILE

Upvotes: 1

Related Questions