FastAPI на VPS: деплой с Uvicorn, Nginx и systemd — иллюстрация к статье Storm Cloud Blog, категория Разработка
FastAPI на VPS: деплой с Uvicorn, Nginx и systemd — иллюстрация к статье Storm Cloud Blog, категория Разработка
Разработка·1 мин··

FastAPI на VPS: деплой с Uvicorn, Nginx и systemd

Полный гайд: FastAPI + Uvicorn + Nginx reverse proxy + systemd на Ubuntu VPS. От кода до production за вечер.

FastAPI — быстрый способ поднять API. На VPS деплой занимает один вечер.


Минимальное приложение

# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/api/health")
def health():
    return {"status": "ok"}

Uvicorn как сервис

pip install fastapi uvicorn gunicorn
# /etc/systemd/system/fastapi.service
[Unit]
Description=FastAPI App
After=network.target

[Service]
User=deploy
WorkingDirectory=/var/www/app
ExecStart=/var/www/app/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl enable fastapi
sudo systemctl start fastapi

Nginx reverse proxy

location /api/ {
    proxy_pass http://127.0.0.1:8000/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

Production советы

  • Используйте venv или Docker
  • Gunicorn + Uvicorn workers для нагрузки: gunicorn main:app -k uvicorn.workers.UvicornWorker
  • Не открывайте порт 8000 наружу — только через Nginx
  • Добавьте PostgreSQL для данных

Итог

FastAPI + systemd + Nginx — простой и надёжный стек для API на VPS. Полный гайд по серверу — развернуть сайт на VPS.

VPS для API — StormNet Cloud.

Частые вопросы

Uvicorn или Gunicorn для FastAPI на VPS?

Uvicorn — ASGI-сервер для FastAPI напрямую. Gunicorn с uvicorn workers — для нескольких воркеров и production за Nginx.

Сколько воркеров Uvicorn на VPS с 2 ГБ RAM?

Обычно 2–4 воркера. Следите за RAM: каждый воркер — отдельный процесс Python с моделями в памяти.