Как Gunicorn работает на сервере с несколькими сайтами Flask? - PullRequest
1 голос
/ 16 марта 2019

- Я развертываю несколько сайтов на основе Flask на Linode VPS, используя NGINX в качестве статического сервера / обратного прокси-сервера.

- Я полностью понимаю, как это работает для нескольких сайтов, прочитав входящий заголовок и используя файлы / etc / nginx .conf для каждого данного сайта.

- У меня возникли проблемы с нахождением ясности в том, как gunicorn, установленный на каждом узле сайта, запускается для обработки вызовов WSGI, отправляемых с сервера NGINX всей VPS.

- Я вижу, что supervisord используется в учебных руководствах, но только в отношении одного сайта, а не того, как supervisord, работающий на уровне VPS (например, NGINX), может запустить Gunicorn для определенного сайта. Мне также не ясно, почему на каждом сайте есть своя установка Gunicorn. Как это работает?

Извините, если это дублирует другие вопросы, но я не нахожу ответов ни здесь, ни где-либо еще.

1 Ответ

1 голос
/ 19 марта 2019

NGINX должен перенаправлять трафик на соответствующие порты.Для каждого склянки нужен собственный рабочий-оружейник.

Так, например, ваши команды запуска для каждого из ваших сайтов в конфигурации супервизора будут выглядеть примерно так:

[program:site1]
command=venv1/bin/gunicorn --workers num_workers --bind localhost:8081 flask_app1:app
#etc...

[program:site2]
command=venv2/bin/gunicorn --workers num_workers --bind localhost:8082 flask_app2:app
#etc...

Надеюсь, это добавит ясности

РЕДАКТИРОВАТЬ:

Вот пример конфигурации NGINX для одного из сайтов, прослушивающих http.

#Config Contents
server {
    listen       80;
    server_name  site.your.domain;
    # Or use the following if you do not have a domain
    #server_name 123.123.123.123;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;
    }
}
...