Нужно ли нам использовать команду runserver в production для запуска нашего проекта django?
Нужно ли нам использовать команду runserver в production для запуска нашего проекта? Если да, то как это сделать, а если нет, то как запускается сервер проекта?
На данный момент наиболее распространенным способом запуска Django в продакшене является использование UWSGI (https://uwsgi-docs.readthedocs.io/en/latest/) (или асинхронной версии ASGI). Вам нужен такой конфиг:
[uwsgi]
socket = 0.0.0.0:3300
chdir = /app/src
pythonpath=/app/src
wsgi-file = /app/src/django_app/wsgi.py
env = DJANGO_SETTINGS_MODULE=django_app.settings
module = django.core.wsgi:get_wsgi_application()
max-requests = 1000
harakiri = 60
buffer-size = 65535
no-orphans = true
touch-reload = /var/run/uwsgi-touch-reload
uid = www-data
gid = www-data
master = 1
workers = 8
И затем вы начинаете свое приложение с:
#!/usr/bin/env bash
uwsgi --ini /app/uwsgi.ini
Затем ваш HTTP-сервер, например, nginx, посылает запросы приложению uwsgi. Конфигурация Nginx может быть следующей:
upstream django {
server django:3300;
}
location / {
include uwsgi_params;
default_type text/html;
uwsgi_pass django;
uwsgi_param HTTP_X_FORWARDED_PROTOCOL 'https';
}