Главная/Разработка/FastAPI и Flask
Установка FastAPI и Flask на сервер
Установка FastAPI на сервер сводится к трём шагам: поставить пакет fastapi[standard], запустить приложение командой fastapi run и поставить перед ним прокси с HTTPS или платформу деплоя, которая сделает это сама. Flask ставится почти так же, но запускается через gunicorn: встроенный сервер разработки в продакшен не годится.
Ответ за 30 секунд
API на FastAPI запускают командой fastapi run под systemd или в контейнере, а Flask отдают gunicorn. За Nginx или Traefik добавьте флаг --proxy-headers: без него приложение не узнает, что клиент пришёл по HTTPS. Для деплоя без админства подойдёт платформа с Docker.
Dockerfile в репозитории: платформа соберёт образ, выдаст SSL и привяжет домен.
Где запускать FastAPI: App Platform, VPS или Docker Compose--proxy-headersфлаг для работы за Nginx и Traefik
8000порт в примерах страницы
от 1 ₽App Platform в месяц на 14.10
01 · 1 мин
Установка FastAPI на Ubuntu и первый запуск#
Нужны Python и виртуальное окружение: пакет python3-venv на Ubuntu ставится отдельно. Затем одна команда ставит FastAPI вместе с командой fastapi и сервером uvicorn:
python3 -m venv .venv
source .venv/bin/activate
pip install "fastapi[standard]"
Минимальное приложение в файле main.py:
from fastapi import FastAPI
app = FastAPI(docs_url=None, redoc_url=None)
@app.get("/health")
def health():
return {"status": "ok"}
Команда fastapi dev main.py запускает режим разработки с автоперезапуском. На сервере используют fastapi run main.py --host 0.0.0.0 --port 8000: перезапуска при правке файлов нет. Параметры docs_url=None и redoc_url=None прячут страницы документации Swagger; на закрытом API они не нужны, а на публичном их оставляют только под паролем.
Инструмент · 1 мин
Где запускать FastAPI: App Platform, VPS или Docker Compose#
| Вариант | Когда выбирать |
|---|---|
| App Platform | Один сервис, деплой из Git, SSL и домен без настройки. Тарифы от 1 ₽ в месяц на 14 октября 2026 |
| VPS и systemd | Рядом PostgreSQL, Redis и другие процессы, нужен свой Nginx |
| VPS и Docker Compose | API, база и очередь собираются одним файлом и одинаково запускаются везде |
Для платформы приложение собирают из Dockerfile: стек Python идёт через Docker. Общее сравнение площадок для Python-проектов: хостинг с поддержкой Python. Размер сервера зависит от числа воркеров и от того, что приложение держит в памяти.
Какой сервер взять под FastAPI или Flask
Три ответа, и калькулятор подберёт готовую конфигурацию
03 · 1 мин
FastAPI в Docker: Dockerfile и healthcheck#
FROM python:3.13-slim
WORKDIR /code
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY ./app ./app
HEALTHCHECK CMD python -c "import urllib.request as u; u.urlopen('http://localhost:8000/health')"
CMD ["fastapi", "run", "app/main.py", "--host", "0.0.0.0", "--port", "8000", "--proxy-headers"]
Документация FastAPI просит писать CMD в форме списка, как выше: тогда сигнал остановки доходит до приложения и оно успевает завершить запросы. В slim-образе нет curl, поэтому проверку здоровья делают самим Python.
Один процесс на контейнер документация считает правильным для оркестраторов вроде Kubernetes. Флаг --workers оставляют для случая «один сервер без кластера и без Compose».
04 · 1 мин
FastAPI на VPS: systemd, Nginx и флаг --proxy-headers#
Служба для FastAPI в файле /etc/systemd/system/api.service:
[Service]
User=api
WorkingDirectory=/opt/api
ExecStart=/opt/api/.venv/bin/fastapi run main.py --port 8000 --proxy-headers
Restart=on-failure
Приложение слушает порт 8000, а Nginx или Caddy принимает HTTPS и передаёт запросы дальше. Если в API есть WebSocket, в блок Nginx добавляют заголовки Upgrade и Connection, иначе соединение оборвётся.
Таблицы и очереди держат в PostgreSQL и Redis. Секреты и адрес базы передают через переменные окружения файла службы, а не через код.
05 · 1 мин
Flask на сервере: gunicorn вместо flask run#
Команда flask run запускает сервер разработки с отладчиком, который при ошибке даёт выполнить код в браузере, и в интернет его выпускать нельзя. На сервере Flask запускает gunicorn: gunicorn -w 2 -b 127.0.0.1:8000 wsgi:app, где wsgi.py импортирует объект приложения.
За Nginx Flask тоже нужно сказать, что перед ним прокси, иначе адреса клиентов и схема https в запросах окажутся неверными:
from werkzeug.middleware.proxy_fix import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1, x_host=1)
Службу systemd пишут по образцу выше с другой строкой ExecStart. Образец для Django и общий разбор WSGI: хостинг для Django.
06 · 1 мин
Вопросы об установке FastAPI и Flask#
Как запустить FastAPI на сервере, чтобы он работал после перезагрузки?
Описать службу systemd с параметром Restart и включить её командой systemctl enable. В Docker то же делает политика restart: unless-stopped.
Нужен ли Nginx перед FastAPI?
Не обязателен, но HTTPS кто-то должен принимать: Nginx, Caddy или платформа деплоя. Вместе с прокси включают флаг --proxy-headers.
Чем fastapi run отличается от запуска uvicorn вручную?
Команда fastapi run запускает тот же сервер uvicorn в боевом режиме, без автоперезапуска. Для сложных настроек uvicorn можно вызывать напрямую.
Как поставить Flask на сервер, если flask run для этого не годится?
Установить gunicorn в окружение приложения и запустить его командой gunicorn -w 2 wsgi:app за Nginx, а запуск доверить systemd.
Сколько памяти нужно FastAPI на VPS?
Для старта с 1-2 воркерами хватит 1 ГБ. Если API держит в памяти модель, добавьте столько, сколько занимает модель, на каждый воркер.
Почему этому можно верить
Как мы проверяли
Источники цифр на этой странице: App Platform Таймвеб Клауд, timeweb.cloud/services/apps, проверено 14 октября 2026; Документация FastAPI: FastAPI в контейнерах (Docker), fastapi.tiangolo.com/deployment/docker, проверено 15 октября 2026.
Задеплойте приложение из репозитория
Подключите репозиторий, выберите фреймворк или Docker, домен и SSL выдаются сразу.
- React, Vue, Next.js, Nuxt, Angular, Svelte
- Любой стек через Docker
- Откат к прошлой версии одной кнопкой
- Бесплатный SSL с автопродлением