Установка FastAPI и Flask на сервер: коротко и с данными

Конспект страницы: 6 разделов коротко, данные на 14 октября 2026 и ответы на 5 вопросов. Полный разбор с примерами: Установка FastAPI и Flask на сервер.

Коротко

Главная / Разработка / FastAPI и Flask Установка FastAPI на сервер сводится к трём шагам: поставить пакет fastapi[standard], запустить приложение командой fastapi run и поставить перед ним прокси с HTTPS или платформу деплоя, которая сделает это сама. Flask ставится почти так же, но запускается через gunicorn: встроенный сервер разработки в продакшен не годится. API на FastAPI запускают командой fastapi run под systemd или в контейнере, а Flask отдают gunicorn.

Конспект по разделам

Установка FastAPI на Ubuntu и первый запуск

Нужны Python и виртуальное окружение: пакет python3-venv на Ubuntu ставится отдельно. Затем одна команда ставит FastAPI вместе с командой fastapi и сервером uvicorn: Минимальное приложение в файле main.py: Команда fastapi dev main.py запускает режим разработки с автоперезапуском. На сервере используют fastapi run main.py --host 0.0.0.0 --port 8000: перезапуска при правке файлов нет.

Где запускать FastAPI: App Platform, VPS или Docker Compose

Для платформы приложение собирают из Dockerfile: стек Python идёт через Docker. Общее сравнение площадок для Python-проектов: хостинг с поддержкой Python. Размер сервера зависит от числа воркеров и от того, что приложение держит в памяти.

FastAPI в Docker: Dockerfile и healthcheck

Документация FastAPI просит писать CMD в форме списка, как выше: тогда сигнал остановки доходит до приложения и оно успевает завершить запросы. В slim-образе нет curl, поэтому проверку здоровья делают самим Python. Один процесс на контейнер документация считает правильным для оркестраторов вроде Kubernetes.

FastAPI на VPS: systemd, Nginx и флаг --proxy-headers

Служба для FastAPI в файле /etc/systemd/system/api.service: Приложение слушает порт 8000, а Nginx или Caddy принимает HTTPS и передаёт запросы дальше. Если в API есть WebSocket, в блок Nginx добавляют заголовки Upgrade и Connection, иначе соединение оборвётся. Таблицы и очереди держат в PostgreSQL и Redis.

Flask на сервере: gunicorn вместо flask run

Команда flask run запускает сервер разработки с отладчиком, который при ошибке даёт выполнить код в браузере, и в интернет его выпускать нельзя. На сервере Flask запускает gunicorn: gunicorn -w 2 -b 127.0.0.1:8000 wsgi:app, где wsgi.py импортирует объект приложения. За Nginx Flask тоже нужно сказать, что перед ним прокси, иначе адреса клиентов и схема https в запросах окажутся неверными: Службу systemd пишут по образцу выше с другой строкой ExecStart.

Задеплойте приложение из репозитория

Подключите репозиторий, выберите фреймворк или Docker, домен и SSL выдаются сразу.

Данные

ВариантКогда выбирать
App PlatformОдин сервис, деплой из Git, SSL и домен без настройки. Тарифы от 1 ₽ в месяц на 14 октября 2026
VPS и systemdРядом PostgreSQL, Redis и другие процессы, нужен свой Nginx
VPS и Docker ComposeAPI, база и очередь собираются одним файлом и одинаково запускаются везде

Данные на 14 октября 2026. Цены приведены для ознакомления и могут отличаться от актуальных. Перед покупкой проверяйте их на сайте провайдера.

Вопросы и ответы

Как запустить 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 держит в памяти модель, добавьте столько, сколько занимает модель, на каждый воркер.