Развертывание FastAPI на VDS
Разворачиваю на VDS приложение по инструкции Делал все по инструкции за исключением:
listen NUMBER_PORT;
proxy_pass http://0.0.0.0:NUMBER_PORT;
main:app ---(заменил на)-->wsgi:uvicorn
В мануале после команды:
sudo systemctl start myapp.service
Должно все работать - а у меня если проверить через:
sudo systemctl status myapp.service
Горит красная лампочка. И, соответственно, если зайти на адрес - там 502 ошибка
Точка входа(wsgi.py):
import uvicorn
if __name__ == "__main__":
uvicorn.run("main:app", port=NUMBER_PORT_LOC, host='0.0.0.0', reload=True)
Если вручную запустить через:
python wsgi.py
то все работает...
В чем проблема? Что не так?
Ответы (1 шт):
Автор решения: Алексей Белкин
→ Ссылка
Благодаря @andreymal, я разобрался. Оставлю решение, если кому пригодится в будущем:
- sudo nano /etc/systemd/system/NAME_SERVISE.service
[Unit]
Description= instance to serve NAME_SERVISE
After=network.target
[Service]
User=USER
Group=www-data
WorkingDirectory=/home/USER/MY_APP_FOLDER
Environment="PATH=/home/USER/MY_APP_FOLDER/myprojectenv/bin"
ExecStart=/home/USER/MY_APP_FOLDER/myprojectenv/bin/python wsgi.py
[Install]
WantedBy=multi-user.target
- Файл wsgi.py:
import uvicorn
if __name__ == "__main__":
uvicorn.run("main:app", port=NUMBER_PORT_LOCAL, host='0.0.0.0', reload=True)
- sudo nano /etc/nginx/sites-available/NAME_SERVISE
server {
listen NUMBER_PORT_GLOBAL;
server_name IP_ADDRES;
location / {
include proxy_params;
proxy_pass http://0.0.0.0:NUMBER_PORT_LOCAL;
}
}
- Создаем символьную ссылку:
sudo ln -s /etc/nginx/sites-available/NAME_SERVISE /etc/nginx/sites-enabled
- Ну и типичные команды (запуск/автозагрузка/проверка статуса):
sudo systemctl start NAME_SERVISE
sudo systemctl enable NAME_SERVISE
sudo systemctl status NAME_SERVISE