Запуск fastapi приложения с помощью uvicorn и supervisor на Ubuntu

lepiloff

July 21, 2020, 1:14 p.m.

Для деплоя на сервак приложения с минимальными усилиями (вариант не подходит для реальных боевых проектов) достаточно использовать uvicorn и supervisor. 
Uvicorn скорее всего уже был установлен при старте проекта на fastapi. Для установки supervisor выполним

apt-get install supervisor

Файл конфигурации по умолчанию находится в /etc/supervisor/supervisord.conf (для Ubuntu, Debian)

Добывим в конец файла запись

supervisord.conf 

[program:fastapp] command = /root/Env/reco/bin/uvicorn main:app --host 0.0.0.0 --port 8000
directory = /home/evgen/img-text-reco
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log
autostart=true
autorestart=true

Где

fastapp - произвольное название приложения

/root/Env/reco/bin/uvicorn - путь к файлу uvicorn находящемся в виртуальном окружении проекта

main:app --host 0.0.0.0 --port 8000 - команда для запуска приложения (main - это файл main.py в котором определен app=FastAPI())

directory - путь к файлу main.py

остальные переменные вроде и так понятны исходя из названия

Сохраняем файл и вызываем
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start fastapp

Переходим по адресу your_ip:8000 и все должно работать
По хорошему сюда еще nginx надо добавить, но пока влом

fastapi