Как создать и развернуть приложение на FastAPI помощи App Platform.

    Команда Simple-Server
    03.06.2026
    14 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Для чего используется FastAPI

    1. Для создания API:
    * FastAPI идеально подходит для создания RESTful API, GraphQL API и других типов веб-сервисов. * Позволяет легко определять эндпоинты, обрабатывать входящие запросы и возвращать ответы.
    1. Для высокопроизводительных приложений:
    * FastAPI основан на асинхронной модели работы (`async`/`await`), что делает его одним из самых быстрых фреймворков для Python. * По скорости он сравним с GoLang.
    1. Для автоматической генерации документации:
    * FastAPI автоматически генерирует интерактивную документацию API (через Swagger UI и ReDoc).
    1. Для валидации данных:
    * Автоматически проверяет типы данных, поступающих в запросах, и возвращает ошибки, если данные не соответствуют ожидаемым типам.
    1. Для асинхронных задач:
    * Поддерживает асинхронные операции (отдает моментальный ответ и далее параллельно выполняем фоновую отложенную задачу). * Поддержка WebSocket.
    1. Для удобной разработки:
    * Имеет простой синтаксис.
    1. Для интеграции с OpenAPI и JSON Schema:
    * Фреймворк автоматически генерирует схемы OpenAPI, что позволяет легко интегрировать ваш API со сторонними инструментами.
    • FastAPI идеально подходит для создания RESTful API, GraphQL API и других типов веб-сервисов.

    • Позволяет легко определять эндпоинты, обрабатывать входящие запросы и возвращать ответы.

    FastAPI идеально подходит для создания RESTful API, GraphQL API и других типов веб-сервисов.

    Позволяет легко определять эндпоинты, обрабатывать входящие запросы и возвращать ответы.

    Для высокопроизводительных приложений:

    • FastAPI основан на асинхронной модели работы (async/await), что делает его одним из самых быстрых фреймворков для Python.

    • По скорости он сравним с GoLang.

    FastAPI основан на асинхронной модели работы (async/await), что делает его одним из самых быстрых фреймворков для Python.

    По скорости он сравним с GoLang.

    Для автоматической генерации документации:

    • FastAPI автоматически генерирует интерактивную документацию API (через Swagger UI и ReDoc).

    FastAPI автоматически генерирует интерактивную документацию API (через Swagger UI и ReDoc).

    • Автоматически проверяет типы данных, поступающих в запросах, и возвращает ошибки, если данные не соответствуют ожидаемым типам.

    Автоматически проверяет типы данных, поступающих в запросах, и возвращает ошибки, если данные не соответствуют ожидаемым типам.

    • Поддерживает асинхронные операции (отдает моментальный ответ и далее параллельно выполняем фоновую отложенную задачу).

    • Поддержка WebSocket.

    Поддерживает асинхронные операции (отдает моментальный ответ и далее параллельно выполняем фоновую отложенную задачу).

    Для интеграции с OpenAPI и JSON Schema:

    • Фреймворк автоматически генерирует схемы OpenAPI, что позволяет легко интегрировать ваш API со сторонними инструментами.

    Фреймворк автоматически генерирует схемы OpenAPI, что позволяет легко интегрировать ваш API со сторонними инструментами.

    Кейсы: кому и как использовать FastAPI

    1. Разработчикам корпоративных систем и персональных сайтов. FastAPI прекрасно подходит для быстрой интеграции с базами данных и сторонними сервисами. Он имеет встроенную поддержку валидации данных и асинхронной обработки запросов.

    2. Web-дизайнерам для сайтов с динамическими данными. FastAPI кардинально упрощает разработку backend для таких проектов, сводя настройку к минимуму. К тому же он облегчает получение данных для frontend-части.

    3. Разработчикам API и микросервисов. FastAPI создан для работы с асинхронными приложениями и высоконагруженными системами. Он идеально подходит для разработки API и микросервисов.

    4. Студентам и начинающим разработчикам. FastAPI крайне прост в освоении и подходит для быстрого создания учебных проектов и прототипов.

    Разработчикам корпоративных систем и персональных сайтов. FastAPI прекрасно подходит для быстрой интеграции с базами данных и сторонними сервисами. Он имеет встроенную поддержку валидации данных и асинхронной обработки запросов.

    Web-дизайнерам для сайтов с динамическими данными. FastAPI кардинально упрощает разработку backend для таких проектов, сводя настройку к минимуму. К тому же он облегчает получение данных для frontend-части.

    Разработчикам API и микросервисов. FastAPI создан для работы с асинхронными приложениями и высоконагруженными системами. Он идеально подходит для разработки API и микросервисов.

    Студентам и начинающим разработчикам. FastAPI крайне прост в освоении и подходит для быстрого создания учебных проектов и прототипов.

    Для понимания простоты реализации серверов на FastAPI посмотрите пример получения актуальных курсов валют:

    from fastapi import FastAPI import requests app = FastAPI() @app.get("/api/kurs/{currency_code}") def get_currency_rate(currency_code: str): url = f"https://api.exchangerate-api.com/v4/latest/{currency_code.upper()}" response = requests.get(url) if response.status_code == 200: data = response.json() return { "base_currency": data["base"], "date": data["date"], "rates": data["rates"] } else: return {"error": "Курсы валют в данное время недоступны"}

    Как видно из примера, вы создали полезное FastAPI-приложение (микросервис) с путем http://ваш_домен/api/kurs/rub буквально за несколько секунд.

    Но мы не будем останавливаться на простых примерах. В этой статье мы создадим собственное приложение — хранилище переменных окружения для серверов (легковесный аналог Vault и AWS Secrets Manager) с небольшой админкой и доступом к переменным через API.

    Наш проект будет реализован с использованием HTML + JavaScript + FastAPI. Назовём наш микросервис ENV Cloud Manager.

    Давайте потратим 10 минут на развертывание сервера и изучение кода. Если затем вы решите опубликовать приложение в интернете, ознакомьтесь с разделом «Деплой приложения в публичном пространстве».

    А теперь посмотрим на интерфейс приложения.

    Весь код рассматриваемого приложения доступен в репозитории GitHub.

    Разворачиваем готовый сервер FastAPI

    Установка Python и необходимых библиотек

    Для полноценной разработки нам необходимо Установка Python и pip зависит от операционной системы. Ниже приведены инструкции для различных ОС. В нашем примере использована версия 3.11.

    • Перейдите на официальный сайт Python.

    • В разделе «Downloads» выберите последнюю версию Python для Windows.

    • Скачайте установщик (рекомендуется выбирать версию с «Windows Installer»).

    • В процессе установки обязательно поставьте галочку на пункте «Add Python to PATH» (это добавит Python в системные переменные среды).

    • Нажмите «Install Now» для установки Python и pip.

    Откройте командную строку (Win + R, введите cmd и нажмите «Enter»).

    Команда выведет установленную версию Python.

    Создание виртуального окружения

    Для начала давайте создадим проект. Чтобы не засорять ваш компьютер новыми фреймворками, важно правильно организовать его техническую базу. Один из ключевых моментов — создание отдельного пространства для управления зависимостями.

    Для этого мы будем использовать встроенный инструмент Python — venv, который создаёт собственную версию интерпретатора Python и набор установленных библиотек. Разделение окружений помогает избежать конфликтов между зависимостями, особенно когда разные проекты требуют разных версий одних и тех же библиотек.

    Благодаря такой изоляции вы можете быть уверены, что обновление пакетов в одном проекте не повлияет на работоспособность других. По сути, создается отдельная папка внутри проекта, содержащая Python и все установленные для работы библиотеки.

    Как создать виртуальное окружение

    Перейдите в директорию вашего проекта:

    cd /путь/к/вашему/проекту

    Создайте виртуальное окружение:

    Активируйте виртуальное окружение:

    Устанавливаем FastAPI-приложение (шаблон)

    Создайте необходимые директории:

    mkdir app && mkdir ./app/static && mkdir ./app/db

    Скачайте файл requirements.txt с необходимыми для проекта зависимостями:

    wget https://raw.githubusercontent.com/Simple-Server-cloud-tutorials/Simple-Server-fastapi-demo/refs/heads/main/requirements.txt -O requirements.txt

    Пакеты, которые мы установим с помощью requirements.txt (полный список):

    ПакетВерсияОписание
    annotated-types0.7.0Расширения для аннотированных типов в Python, используются в Pydantic.
    anyio4.8.0Асинхронная многопоточная библиотека, работает с asyncio, trio, curio.
    cffi1.17.1Интерфейс для взаимодействия с C-кодом, используется cryptography.
    click8.1.8Библиотека для создания CLI-приложений на Python.
    cryptography44.0.0Криптографическая библиотека, предоставляет SSL/TLS, хеширование, шифрование.
    fastapi0.115.7Современный веб-фреймворк для создания API, основанный на Pydantic и Starlette.
    h110.14.0HTTP/1.1-протокол в виде библиотеки, используется uvicorn.
    idna3.10Поддержка Internationalized Domain Names (IDN) в Python.
    pycparser2.22C-парсер на Python, используется cffi.
    pydantic2.10.6Валидация данных и управление типами, активно применяется в FastAPI.
    pydantic_core2.27.2Оптимизированное ядро Pydantic, написанное на Rust.
    sniffio1.3.1Определяет, в каком асинхронном окружении выполняется код (asyncio/trio).
    SQLAlchemy2.0.37ORM для работы с базами данных в Python.
    starlette0.45.3ASGI-фреймворк, на котором построен FastAPI.
    typing_extensions4.12.2Дополнительные аннотации типов для совместимости со старыми версиями Python.
    uvicorn0.34.0ASGI-сервер для запуска FastAPI и других ASGI-приложений.

    Расширения для аннотированных типов в Python, используются в Pydantic.

    Асинхронная многопоточная библиотека, работает с asyncio, trio, curio.

    Интерфейс для взаимодействия с C-кодом, используется cryptography.

    Библиотека для создания CLI-приложений на Python.

    Криптографическая библиотека, предоставляет SSL/TLS, хеширование, шифрование.

    Современный веб-фреймворк для создания API, основанный на Pydantic и Starlette.

    HTTP/1.1-протокол в виде библиотеки, используется uvicorn.

    Поддержка Internationalized Domain Names (IDN) в Python.

    C-парсер на Python, используется cffi.

    Валидация данных и управление типами, активно применяется в FastAPI.

    Оптимизированное ядро Pydantic, написанное на Rust.

    Определяет, в каком асинхронном окружении выполняется код (asyncio/trio).

    ORM для работы с базами данных в Python.

    ASGI-фреймворк, на котором построен FastAPI.

    Дополнительные аннотации типов для совместимости со старыми версиями Python.

    ASGI-сервер для запуска FastAPI и других ASGI-приложений.

    Выполните команду для установки зависимостей:

    pip install -r requirements.txt

    Далее введите в терминале следующие команды:

    /app /db -пока пусто /static -admin.html -index.html /venv - main.py - requirement.txt

    Как видите, для реализации проекта нам нужно всего три файла. Админка реализована в admin.html, вся backend-часть — в main.py, а index.html служит простой заглушкой.

    При этом весь этот пакет (и фронт, и бэк) работает на FastAPI без каких-либо дополнительных утилит.

    Для запуска нашего приложения в качестве фонового сервера воспользуемся пакетом Uvicorn — это быстрый ASGI-сервер для Python, предназначенный для запуска веб-приложений, написанных с использованием асинхронных фреймворков, таких как FastAPI.

    Перед запуском настройте собственные значения переменных ALLOWED_IPS, VALID_TOKENS, ADMIN_USERNAME, ADMIN_PASSWORD в файле main.py.

    Выполните следующую команду в терминале:

    uvicorn main:app --reload

    main:app означает, что мы запускаем файл main.py как приложение-демон, постоянно находящееся в оперативной памяти сервера и принимающее запросы.

    Теперь вы можете воспользоваться админкой по адресу: http://127.0.0.1:8000/admin.

    Или проверить запросы GET-, POST-, PUT- и DELETE-запросы по адресам:

    GET http://127.0.0.1:8000/api/variables/ — получить список переменных

    GET http://127.0.0.1:8000/api/variables/{key} — получить значение ключа

    PUT http://127.0.0.1:8000/api/variables/{key} — обновить значение ключа

    DELETE http://127.0.0.1:8000/api/variables/{key} — удалить ключ

    Если вы запускаете приложение на своем публичном облачном сервере, чтобы uvicorn слушал все адреса (0.0.0.0), запустите приложение с флагом --host:

    uvicorn main:app --host 0.0.0.0 --port 8000 --reload

    Также проверьте ограничения портов. Если, например, у вас установлен firewall ufw, то запустите в терминале следующую команду:

    sudo ufw allow 8000 sudo ufw reload

    При первом запуске вы можете увидеть подобное сообщение:

    Это сделано для безопасности. Просто добавьте свой IP-адрес (на картинке 172.17.0.1) в переменную ALLOWED_IPS и обновите страницу.

    Вот и всё! Мы всего за 5 минут, с минимальным количеством кода, написали FastAPI-приложение, которое позволяет централизованно хранить настройки для Docker-контейнеров, серверов и т. д., а также раздавать их всем вашим VPS.

    Деплой FastAPI-приложения в интернете

    Для автоматизированного развертывания статических и динамических веб-приложений, построенных на популярных фреймворках, отлично подходит сервис Simple-Server App Platform. Эта платформа предоставляет удобный функционал для деплоя приложений прямо из Git-репозитория.

    После настройки вы получаете уникальный публичный URL, который позволяет быстро получить доступ к вашему приложению. Такой подход значительно экономит время и ресурсы, предлагая надёжное решение для быстрого запуска ваших проектов.

    Перед тем как развернуть приложение на проде, не забудьте изменить значения переменных ALLOWED_IPS, VALID_TOKENS, ADMIN_USERNAME, ADMIN_PASSWORD в файле main.py (подробное описание их назначения приведено ниже в разделе «Изучаем код микросервиса»).

    Далее загрузите (push) ваше приложение в GitHub. Для этого используйте следующие команды в терминале:

    echo "venv/" >> .gitignore echo "__pycache__/" >> .gitignore git init git add . git rm -r --cached venv __pycache__ git commit -m "first commit" git branch -M main git remote add origin git@github.com:ВАШ-НИК/НАЗВАНИЕ-РЕПОЗИТОРИЯ.git git push -u origin main

    Перейдите на страницу создания Apps, выберите раздел «Backend» → «FastAPI».

    Далее прокрутите страницу вниз до раздела «Репозиторий». Здесь мы подключим ваш GitHub-репозиторий для автоматического деплоя и формирования публичного URL.

    Если вы впервые используете Simple-Server App Platform, нажмите кнопку «Добавить аккаунт». Затем авторизуйте наш сервис в GitHub. В процессе подключения GitHub может запросить ввод PIN-кода — это одно из последних обновлений, направленных на повышение безопасности авторизации.

    Если ваш Github уже привязан к нашей системе, то просто пропустите первый шаг (стрелка 1) и переходите ко второму.

    Укажите ваш GitHub-репозиторий с FastAPI-приложением (стрелка 2) и нажмите кнопку «Запустить деплой» (стрелка 3). Дополнительные настройки деплоя для нашего приложения не требуются.

    После этого система развернет сервер, задеплоит приложение в продакшн, создаст публичную ссылку — и вуаля! Ваш микросервис готов. Просто дождитесь завершения процесса деплоя.

    Первичный запуск (деплой) сервера может занять 7–10 минут, тогда как все последующие изменения в вашем GitHub-репозитории будут применяться в течение 20–30 секунд.

    После первого запуска вы увидите сообщение об ограничении доступа для вашего IP-адреса.

    Вам необходимо добавить ваш IP-адрес (в нашем примере 172.17.0.1) в переменную ALLOWED_IPS и выполнить следующие команды в терминале:

    git add . # Добавляем все файлы git commit -m "Добавлен IP" git push origin main

    После этого подождите 10-30 секунд, пока платформа Simple-Server App Platform перезапустит проект. Далее обновите страницу /admin и наслаждайтесь приложением.

    Изучаем код приложения на FastAPI

    Приложение состоит из админки и серверной части. Сначала рассмотрим backend, который как раз и реализован на основе фреймворка FastAPI.

    Файл main.py содержит следующие классы и методы:

    Variable и UpdateVariableЭти классы — просто структуры, описывающие поля, которые приходят в запросах. Используются для стандартизации названий и типов полей.
    encrypt_value и decrypt_valueМетоды шифруют ваши данные перед записью в БД, а также расшифровывают после получения из БД.

    Variable и UpdateVariable

    Эти классы — просто структуры, описывающие поля, которые приходят в запросах. Используются для стандартизации названий и типов полей.

    encrypt_value и decrypt_value

    Методы шифруют ваши данные перед записью в БД, а также расшифровывают после получения из БД.

    Классы, методы и переменные sqlite

    DATABASE_URLПеременная, содержащая путь к SQLite-базе, в которой мы храним данные
    EnvironmentVariableКласс cодержит модель таблицы SQLite, в которой мы храним данные
    get_dbМетод содержит сессию для работы с базой данных

    Переменная, содержащая путь к SQLite-базе, в которой мы храним данные

    Класс cодержит модель таблицы SQLite, в которой мы храним данные

    Метод содержит сессию для работы с базой данных

    Классы, методы и переменные Fastapi

    ALLOWED_IPS и VALID_TOKENSПеременные содержат список IP-адресов, с которых вы будете обращаться к вашему сервису, а также Bearer-токен, который необходимо передавать в заголовке (header) запроса для предотвращения несанкционированного доступа.
    add_middleware CORSМетод для ограничения доступа к сервису из JavaScript-запросов.
    IPAndTokenMiddleware -> dispatchМетод производит проверку доступа к API с разрешенных IP-адресов (в то же время доступ к статическим страницам открыт для всех)
    authenticateМетод обеспечивает авторизацию в /admin по логину и паролю.
    read_index и read_adminМетоды генерируют статические страницы админки и главной страницы.
    list_variablesМетод отдает по запросу список всех сохраненных в БД ключей без их значений.
    add_variableМетод принимает запрос на добавление данных в БД.
    update_variableМетод принимает запрос на изменение значения конкретного ключа в БД.
    delete_variableМетод принимает запрос на удаление конкретного ключа из БД.

    ALLOWED_IPS и VALID_TOKENS

    Переменные содержат список IP-адресов, с которых вы будете обращаться к вашему сервису, а также Bearer-токен, который необходимо передавать в заголовке (header) запроса для предотвращения несанкционированного доступа.

    Метод для ограничения доступа к сервису из JavaScript-запросов.

    Метод производит проверку доступа к API с разрешенных IP-адресов (в то же время доступ к статическим страницам открыт для всех)

    Метод обеспечивает авторизацию в /admin по логину и паролю.

    Методы генерируют статические страницы админки и главной страницы.

    Метод отдает по запросу список всех сохраненных в БД ключей без их значений.

    Метод принимает запрос на добавление данных в БД.

    Метод принимает запрос на изменение значения конкретного ключа в БД.

    Метод принимает запрос на удаление конкретного ключа из БД.

    При обращении к вашему сервису внешним запросом метод add_middleware выполняет проверку:

    • Для API-запросов — проверяет, есть ли IP-адрес в списке разрешенных.
    • Для HTML-страниц (например, админки или заглушки) — переводит запрос на выдачу статической страницы.

    Применение этого метода обеспечивает высокий уровень безопасности вашего приложения:

    • Защищенные разделы становятся недоступными для пользователей, не прошедших аутентификацию, а также для запросов с неавторизованных IP-адресов.
    • Дополнительная защита реализуется через Bearer-токен, который должен присутствовать во всех запросах к системе.

    Такая многоуровневая система безопасности помогает минимизировать риски.

    После проверки FastAPI возвращает либо запрошенные данные через API, либо статическую HTML-страницу (например, админку).


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны