Fastapi Это перспективная новая структура Python, которая поддерживает систему параллелизма и типа из коробки. У него много крутых функций, которые мне нравятся И это быстро. В этом посте я кратко рассмотрим процесс развертывания простого приложения Fastapi на Ubuntu, работающем на экземпляре EC2. Этот пост предположит, что вы знаете и уже настроили довольно несколько вещей и сосредоточимся только на развертывании фактического приложения.
До реквизиты
- Прежде всего, вам понадобится запущенный экземпляр EC2 с Ubuntu 18.04 или позже. Это также будет работать для серверов VPS, такими как Digonalocean или Linode.
- Если вы используете экземпляр EC2, убедитесь, что вы настроили группы VPC и Security должным образом и ваш Порт 80 открыт для входящего и исходящего трафика.
- У вас должны быть установлены и работает nginx.
- Вам понадобится 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”