Найти в Дзене
Computer Pro

Как запустить FastAPI приложение как сервис systmctl start fastapp.service

Фоточка для карточки. Фото моё
Фоточка для карточки. Фото моё

Вот написал я свое приложение FastAPI, задеплоил его на сервере и даже там запустил и оно даже заработало. Но вот незадача - я закрыл соединение в терминале по SSH и моё приложение так же завершилось...

Не порядок. Следовательно нужно сделать так чтобы можно было запустить это приложение как сервис, так же как я запускаю postgres или nginx:

systemctl start postgresql.service (как-то так)

Для этого нужно написать специальный файл, который и будет запускать наше приложение. Располагается этот файл по адресу (или пути) /etc/systemd/system/<имя_сервиса_точка_service>

-2

Где прописываем пользователя, от имени которого будет запускаться сервис. Рабочую директорию приложения, там где лежит файл main.py. Путь до исполняемого файла fastapi (он лежит в virtual environment, у меня это директория в корне проекта .venv) с ключами выполнения.

После написания данного файла перезагружаем systemd:

sudo systemctl daemon-reload

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

sudo systemctl start fastapp.service

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

sudo systemctl status fastapp.service

-3

И открыв в браузере http://<ip_address_my_hosting> можно будет увидеть главную страницу приложения:

-4

Так же, чтобы приложение запускалось автоматически, после (допустим) перезагрузки сервера:

sudo systemctl enable fastapp.service

Которая выведет сообщение о создании ссылки на сервис

-5

Если хотим запретить эту ссылку:

sudo systemctl disable fastapp.service

-6

Ну вот, как-то так...