# Запуск FastAPI с Unicorn на VPS под управлением Ubuntu 20.04

FastAPI — фрэймворк языка Python для создания RestAPI. FastAPI использует Pydantic — библиотеку для валидации данных — она поддерживает асинхронное программирование и запускается с помощью Uvicorn или Gunicorn.

В этой статье мы расскажем, как запустить простое приложение на FastAPI на VPS под управлением Ubuntu 20.04.

Для начала работы нам понадобятся:

  • подготовленный к работе VPS под управлением Ubuntu;
  • установленный Python3.

# Начало работы

Перед началом работы обновим список репозиториев apt:

sudo apt update
sudo apt upgrade

Далее установим дополнительный модуль для Python3, который позволит создавать виртуальные окружения:

sudo apt install python3-venv

Теперь создадим виртуальное окружение fa_venv:

python3 -m venv /path/to/new/virtual/environment/fa_venv

Здесь /path/to/new/virtual/environment — это путь к создаваемому виртуальному окружению fa_venv.

После создания активируем его:

source ./path to virtaul/environment/fa_venv/bin/activate

Если окружение успешно активировано, перед именем пользователя в консоли появится префикс с именем виртуального окружения. В нашем случае это будет выглядеть так:

(fa_venv) user@ubuntu_vps:

Теперь установим FastAPI в активное виртуальное окружение:

pip install fastapi

После этого установим ASGI сервер, с помощью которого будем запускать приложение:

pip install uvicorn [standart]

Здесь мы добавили параметр standart к устанавливаемому uvicorn, чтобы сразу же поставить несколько дополнительных зависимостей.

После установки необходимых пакетов можно переходить непосредственно к созданию и запуску приложения.

# Создание приложения

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

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

Это приложение будет отправлять в ответ на запрос указанный номер и текст запроса.

# Запуск приложения

Запускается приложение с помощью Uvicorn следующей командой:

uvicorn main:app --host 192.168.0.1

# Output
Uvicorn running on http://192.168.0.1:8000 (Press CTRL+C to quit)

Uvicorn стартует на указанном IP-адресе (в данном случае это 192.168.0.1) на порту 8000. Проверить работу приложения можно, отправив к указанному IP-адресу запрос. Откроем вторую консоль работы с сервером и выполним следующую команду:

user@ubuntu_vps:~# curl http://192.168.0.1:8000/items/6435?q=check_query_text

#Output
{"item_id":6435,"q":"check_query_text"}

Если отправить такой же запрос, но без параметров, и просто проверить, что показывает сервер на главной странице по адресу 192.168.0.1:8000, мы получим в ответ текст стандартного приветствия:

user@ubuntu_vps:~# curl http://192.168.0.1:8000

#Output
{"Hello":"World"}

Итак, мы описали запуск простого приложения на FastAPI. Создали его, запустили и получили от него ответ на запрос по заданной форме.