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

Отладка Gunicorn + Nginx + Django

Я пытаюсь развернуть читать экземпляр на моем собственном сервере. Рекомендуемый способ развертывания - использование Gunicorn + nginx с postgres. Поскольку в основном нет документации о том, как это сделать (кроме их fabfiles, которые, конечно, работают только на их сервере), я пытался настроить свой собственный сервер вручную.

Вот мой nginx.conf:

server {
    listen 80 default;
    server_name mysite.com;
    access_log /var/log/nginx/mysite.access.log;
    error_log /var/log/nginx/mysite.error.log;

    location /favicon.ico {
        root /home/mysite/Code/checkout/readthedocs.org/media/images;
        break;
    }

    location robots.txt {
        root /home/mysite/Code/checkout/readthedocs.org/media;
        break;
    }

    location /static/ {
        alias /home/mysite/Code/checkout/readthedocs.org/media/;
        expires 30d;
        break;
    }

    location /media/ {
        alias /home/mysite/Code/checkout/readthedocs.org/media/;
        expires 30d;
        break;
    }

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://127.0.0.1:8888;
    }
}

В settings.py для конфигурации django можно найти Вот. Единственное, на чем я поменял settings.py я добавляю gunicorn на INSTALLED_APPS так что я могу бегать с ним.

Команда, которую я использую для запуска сервера Gunicorn:

./manage.py run_gunicorn -b 127.0.0.1:8888

Тогда, если я попытаюсь получить доступ 127.0.0.1 из локального браузера он будет работать, но всегда будет отображать страницу 404, независимо от того, какой URL я ввел. Бег ./manage.py runserver все будет работать правильно.

Сейчас я не системный администратор и практически не имею опыта работы с django, gunicorn или nginx раньше. Я гуглил и играл с конфигурацией в течение нескольких недель, с 0 результатом. У меня вопрос:

  1. Как мне узнать, какой маршрут django вызван Gunicorn? Могу я отладить это? Все файлы журналов, которые я могу найти, не отображали этого.
  2. Вы видите что-то не так с моим файлом конфигурации? Если да, скажите, пожалуйста, в чем дело?

Большое спасибо.

Вы пробовали загрузить сайт через порт 8888, чтобы убедиться, что он работает правильно?

Есть ли у вас сообщение 404? nginx в тексте? Это будет означать, что у nginx возникла проблема с поиском ресурса, а не службы на порту 8888. В этом случае вы можете устранить неполадки в файле конфигурации.

Вы регистрируете доступ в nginx, поэтому вы можете посмотреть свой журнал для получения дополнительной информации. tail -n 10 /var/log/nginx/mysite.access.log позволит вам увидеть последние 10 строк этого журнала.

По умолчанию nginx использует комбинированный формат журнала:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

Это должно помочь вам понять, что означает каждый столбец в вашем файле журнала.