Назад | Перейти на главную страницу

Несколько демонов Gunicorn для проектов Django с Nginx приводят к 502 Bad Gateway для одного

Я хочу запустить два приложения Django на одном сервере с Nginx и Gunicorn. Я могу запускать их по отдельности, но не оба одновременно: когда я пытаюсь, один в порядке, но для другого я получаю 502. Вот мои файлы конфигурации:

Первая конфигурация nginx для первого проекта:

upstream app_server {
    server 127.0.0.1:9000 fail_timeout=0;
}

server {
    listen 80;
    # listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    client_max_body_size 4G;
    server_name domain1.com;

    keepalive_timeout 5;

    # Your Django project's media files - amend as required
    location /media  {
        alias /home/django/domain1/media;
    }

    # your Django project's static files - amend as required
    location /static {
        alias /home/django/domain1/static;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app_server;
    }
}

А для второго проекта django:

upstream app_server_2 {
    server 127.0.0.1:8000 fail_timeout=0;
}

server {
    listen 80;
    # listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    client_max_body_size 4G;
    server_name domain2.com;

    keepalive_timeout 5;

    # Your Django project's media files - amend as required
    location /media  {
        alias /home/django/domain2/media;
    }

    # your Django project's static files - amend as required
    location /static {
        alias /home/django/domain2/static;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app_server_2;
    }
}

И сценарий выскочки Gunicorn:

description "Gunicorn daemon for Django project"

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

# If the process quits unexpectedly trigger a respawn
respawn

setuid django
setgid django
chdir /home/django

exec gunicorn \
    --name=domain1 \
    --pythonpath=domain1 \
    --bind=127.0.0.1:9000 \
    --config /etc/gunicorn.d/gunicorn.py \
    domain1.wsgi:application

exec gunicorn \
    --name=domain2 \
    --pythonpath=domain2 \
    --bind=127.0.0.1:8000 \
    --config /etc/gunicorn.d/gunicorn.py \
    domain2.wsgi:application

Какие-либо предложения?

Обновление 24.01.2016

Пока я занимаюсь отладкой, я разделил сценарии выскочки Gunicorn на два (по одному для каждого проекта) и переименовал их. Я понял, что получаю 4 из следующих ошибок (2 для каждой, по одной для запуска, одна для остановки при перезапуске демона Gunicorn):

/etc/gunicorn.d/gunicorn.py:2: RuntimeWarning: Parent module '/etc/gunicorn.d/gunicorn' not found while handling absolute import
    from os import environ

Вот мой gunicorn.py:

"""gunicorn WSGI server configuration."""
from multiprocessing import cpu_count
from os import environ


def max_workers():
    return cpu_count() * 2 + 1

max_requests = 1000
worker_class = 'gevent'
workers = max_workers()