Systemd служба для Python FastAPI / Django с Uvicorn и Gunicorn воркерами
Конфигурация systemd unit для запуска Python FastAPI и Django: виртуальное окружение venv, UvicornWorker, 4 воркера, привязка к unix-сокету и graceful reload.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/systemd/system/fastapi-app.service
# /etc/systemd/system/fastapi-app.service
[Unit]
Description=FastAPI ASGI Application
After=network.target
[Service]
Type=notify
User=www-data
Group=www-data
WorkingDirectory=/var/www/example.com
ExecStart=/var/www/example.com/venv/bin/gunicorn main:app \
--workers 4 \
--worker-class uvicorn.workers.UvicornWorker \
--bind 127.0.0.1:8000 \
--timeout 120 \
--keep-alive 5 \
--access-logfile - \
--error-logfile -
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
--worker-class UvicornWorker |
UvicornWorker | Использует асинхронный ASGI-драйвер для обработки тысяч параллельных запросов. |
ExecReload=kill -s HUP |
HUP | Позволяет перезагружать код приложения (Zero-Downtime Reload) без остановки сайта. |
Restart=always |
always | Обеспечивает автоматический перезапуск демона или скрипта при критическом сбое или нехватке памяти. |
LimitNOFILE=65535 |
65535 | Снимает стандартные ограничения ОС на количество одновременно открытых сетевых сокетов и дескрипторов. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 2 vCPU, 2-4 GB RAM, Python VDS
Timeweb Cloud
2 CPU / 4 GB NVMe
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
Selectel
2 vCPU / 4 GB RAM
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
Beget
Turbo 4 GB
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Сколько воркеров задавать?
Формула: `(2 x число ядер CPU) + 1`.
Как посмотреть логи запущенной службы в реальном времени?
Выполните команду `journalctl -u <имя_сервиса>.service -f -n 100`.
Что делать после редактирования .service файла?
Всегда выполняйте `systemctl daemon-reload` перед перезапуском службы `systemctl restart <имя_сервиса>`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.