Рубрики
Без рубрики

Развертывайте приложение Fastapi на Ubuntu с Nginx, Gunicorn и UVicorn

Fastapi – это многообещающая новая структура Python, которая поддерживает систему параллелизма и типа из коробки …. Помечено Python, fastapi, nginx, развертывание.

Fastapi Это перспективная новая структура Python, которая поддерживает систему параллелизма и типа из коробки. У него много крутых функций, которые мне нравятся И это быстро. В этом посте я кратко рассмотрим процесс развертывания простого приложения Fastapi на Ubuntu, работающем на экземпляре EC2. Этот пост предположит, что вы знаете и уже настроили довольно несколько вещей и сосредоточимся только на развертывании фактического приложения.

До реквизиты

  1. Прежде всего, вам понадобится запущенный экземпляр EC2 с Ubuntu 18.04 или позже. Это также будет работать для серверов VPS, такими как Digonalocean или Linode.
  2. Если вы используете экземпляр EC2, убедитесь, что вы настроили группы VPC и Security должным образом и ваш Порт 80 открыт для входящего и исходящего трафика.
  3. У вас должны быть установлены и работает nginx.
  4. Вам понадобится Python 3.7 или выше, и любой инструмент виртуальной среды Python, как Виртуальский , пиронв , кондейский и т. Д. Установлено. Вам необходимо иметь приложение fastapi на github/bitbucket/gitlab для простого развертывания.

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

Подготовьте заявку

Теперь SSH на сервер, создайте и перейдите к каталогу, в котором вы хотите сохранить ваше приложение. Сказать, что это /var/www/myApp Отказ

$ mkdir /var/www/myapp 
$ cd /var/www/myapp

Мы должны убедиться, что наш пользователь имеет правильный доступ для чтения-записи в этот каталог. В этом посте я буду использовать Виртуальский управлять виртуальной средой Python. Вы можете использовать то, что вам нравится или предпочитаете. Внутри /var/www/myApp Мы должны сделать следующее на один:

$ virtualenv -p python3.8 venv
$ mkdir src
$ . venv/bin/activate
(venv) $ cd src

Оказавшись внутри каталога SRC, мы должны вытащить наш исходный код приложения там. Наш исходный код приложения должен содержать требования .txt Файл со всеми зависимостями, если мы используем Pipfile Отказ

(venv) $ git init
(venv) $ git remote add origin 
(venv) $ git pull origin 
(venv) $ pip install -r requirements.txt
(venv) $ pip install gunicorn uvicorn

Настроить Nginx.

Теперь наше приложение готово к запуску и проверено. Чтобы иметь возможность служить приложению по поводу HTTP, мы должны сделать конфигурацию Nginx для нашего приложения.

(venv) $ sudo vim /etc/nginx/sites-available/myapp

Поместите следующие действия в этом файле:

server{
       server_name ;
       location / {
           include proxy_params;
           proxy_pass http://127.0.0.1:8000;
       }
}

Теперь мы сохраняем файл и выход. Затем мы делаем символическую ссылку на этот файл конфигурации в /etc/nginx/sites, включенные на сайты каталог.

(venv) $ sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

Затем мы перезагрузим службу Nginx.

(venv) $ sudo systemctl restart nginx.service

Теперь мы можем начать наш сервер UVicorn, чтобы проверить, работает ли наша приложение или нет.

(venv) $ gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

На месте Главная: приложение Мы можем использовать все, что правильно для нашего приложения. Теперь, когда наше приложение запущено, и прокси-сервер настроен правильно, мы должны иметь возможность посещать URL-адрес и увидеть наше приложение из браузера.

Настроить ASGI Server

Теперь, когда наше приложение развернута и настроена правильно. Последнее, что нужно сделать, это создать сервис для сервера Gunicorn так, чтобы он всегда запущен, и он автоматически запускается при перезагрузке сервера. Мы будем пользователь Systemd создать службу.

(venv) $ deactivate
$ sudo vim /etc/systemd/system/myapp.service

В этом новом файле мы должны выполнить следующее:

[Unit]
Description=Gunicorn instance to serve MyApp
After=network.target

[Service]
User=
Group=www-data
WorkingDirectory=/var/www/myapp/src
Environment="PATH=/var/www/myapp/venv/bin"
ExecStart=/var/www/myapp/venv/bin/gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

[Install]
WantedBy=multi-user.target

Измените местоположения на вашей собственной настройке, а затем сохраните и выйдите из файла.

$ sudo systemctl start myapp.service

Это начнет наш новый сервис, и наш сервер ASGI будет работать на заднем плане.

Оригинал: “https://dev.to/shuv1824/deploy-fastapi-application-on-ubuntu-with-nginx-gunicorn-and-uvicorn-3mbl”