Django на VPS: деплой production-приложения
Как задеплоить Django на VPS: Gunicorn, Nginx, PostgreSQL, static/media, systemd и SSL. Полный гайд для Python backend.
Краткий ответ: Django на VPS = Gunicorn (WSGI) + Nginx (static + reverse proxy) + PostgreSQL + systemd. Соберите static, настройте .env, выпустите SSL — production готов.
Python backend на VPS — классика. Если уже знаете FastAPI деплой — Django отличается static files и admin panel.
Стек production
Пользователь → Nginx (SSL) → Gunicorn → Django → PostgreSQL
↓
static / media
Опционально: Redis для кэша и Celery, RabbitMQ для очередей.
Подготовка VPS
Следуйте настройке Ubuntu:
sudo apt install python3-pip python3-venv nginx postgresql -y
Проект и venv
cd /var/www
sudo -u deploy git clone https://github.com/you/project.git django-app
cd django-app
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt gunicorn
python manage.py collectstatic --noinput
python manage.py migrate
settings.py production
DEBUG = False
ALLOWED_HOSTS = ['example.com', 'www.example.com']
STATIC_ROOT = BASE_DIR / 'staticfiles'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('DB_USER'),
'PASSWORD': os.environ.get('DB_PASSWORD'),
'HOST': '127.0.0.1',
}
}
Тюнинг PostgreSQL — PostgreSQL на VPS.
Gunicorn + systemd
# /etc/systemd/system/gunicorn.service
[Unit]
Description=Gunicorn Django
After=network.target
[Service]
User=deploy
WorkingDirectory=/var/www/django-app
EnvironmentFile=/var/www/django-app/.env
ExecStart=/var/www/django-app/venv/bin/gunicorn \
--workers 3 --bind 127.0.0.1:8000 config.wsgi:application
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now gunicorn
Подробнее о systemd — Linux-сервисы.
Nginx
server {
listen 443 ssl http2;
server_name example.com;
location /static/ {
alias /var/www/django-app/staticfiles/;
}
location /media/ {
alias /var/www/django-app/media/;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
SSL — Let’s Encrypt. Media на больших объёмах — MinIO S3.
Workers и RAM
| VPS RAM | Gunicorn workers |
|---|---|
| 1 GB | 2 |
| 2 GB | 3 |
| 4 GB | 4–5 |
Формула: (2 × CPU) + 1, но не больше доступной RAM.
CI/CD
Автодеплой через GitHub Actions или GitLab Runner: pull → migrate → collectstatic → restart gunicorn.
Итог
Django на VPS — предсказуемый стек: Gunicorn + Nginx + PostgreSQL. Один раз настроили — масштабируете workers и RAM.
VPS от 2 GB — StormNet Cloud. Python API альтернатива — FastAPI.
Рекомендуем прочитать
- FastAPI на VPS: деплой с Uvicorn, Nginx и systemd
- PostgreSQL на VPS: установка, тюнинг и безопасность
- Nginx или Caddy: какой веб-сервер выбрать на VPS
- SSL на VPS: Let's Encrypt, автообновление и типичные ошибки
- Systemd на Linux: автозапуск и управление сервисами на VPS
- Redis на VPS: кэширование, сессии и очереди
Частые вопросы
Gunicorn или uWSGI для Django на VPS?
Gunicorn — стандарт de facto, проще в настройке. uWSGI мощнее, но сложнее. Для большинства проектов — Gunicorn.
Сколько RAM нужно для Django на VPS?
Минимум 1–2 ГБ: Gunicorn workers + PostgreSQL. Для production с трафиком — от 2–4 ГБ.






