main.py

Простой скрипт которые возвращает hello world

from fastapi import FastAPI


app = FastAPI()


@app.get(/)
async def hello():
    return {msg: hello world}

Supervisor

Для “демонизации” api-сервера (нужен uvicorn) использую Supervisor который очень прост в настройке

[fcgi-program:uvicorn-stripe]
socket=unix:///tmp/app.sock
socket_mode=777
command=/<path-to-workdir>/venv/bin/uvicorn --fd 0 main:app
directory=/<path-to-workdir>/
numprocs=1
process_name=uvicorn-stripe-%(process_num)d
stderr_logfile=/var/log/uvicorn-stripe.err.log
stdout_logfile=/var/log/uvicorn-stripe.out.log
autostart=true
autorestart=true

Настройки Nginx

И, завершающий этап - конфигурация web-сервера.

upstream app {
       server unix:///tmp/app.sock;
       }
       
server {
       listen 80;
       server_name <example.com>;
       location / {
                 proxy_set_header Host $http_host;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header X-Forwarded-Proto $scheme;
                 proxy_set_header Upgrade $http_upgrade;
                 proxy_set_header Connection $connection_upgrade;
                 proxy_redirect off;
                 proxy_buffering off;
                 proxy_pass http://app;
       }
}

Подпишись на мой канал в Телеграм!