uWSGI
uWSGI — это вариант развертывания на серверах, таких как nginx, lighttpd и cherokee; см. FastCGI и Контейнеры WSGI с автономной установкой для других вариантов. Чтобы использовать ваше приложение WSGI с протоколом uWSGI, вам сначала потребуется сервер uWSGI. uWSGI — это как протокол, так и сервер приложений; сервер приложений может обслуживать протоколы uWSGI, FastCGI и HTTP.
Наиболее популярный сервер uWSGI — uwsgi, который мы будем использовать в этом руководстве. Убедитесь, что он установлен, чтобы следовать инструкциям.
Обратите внимание
Пожалуйста, предварительно убедитесь, что все вызовы app.run() в вашем файле приложения находятся внутри блока if __name__ ==
'__main__': или перемещены в отдельный файл. Просто убедитесь, что он не вызывается, так как это всегда запускает локальный сервер WSGI, чего мы не хотим, если развернём это приложение в uWSGI.
Запуск приложения с uwsgi
uwsgi разработан для работы с вызовами WSGI, находящимися в модулях Python.
Для приложения Flask в myapp.py используйте следующую команду:
$ uwsgi -s /tmp/yourapplication.sock --manage-script-name --mount /yourapplication=myapp:app
--manage-script-name переместит обработку SCRIPT_NAME в uwsgi, поскольку он более умён в этом отношении. Он используется вместе с директивой --mount, которая направит запросы к /yourapplication в myapp:app. Если ваше приложение доступно на корневом уровне, вы можете использовать одну / вместо /yourapplication. myapp ссылается на имя файла вашего приложения Flask (без расширения) или модуля, который предоставляет app. app — это вызов внутри вашего приложения (обычно строка выглядит так: app = Flask(__name__)).
Если вы хотите развернуть своё приложение Flask внутри виртуальной среды, вам также необходимо добавить --virtualenv /path/to/virtual/environment. Возможно, вам также потребуется добавить --plugin python или --plugin python3, в зависимости от версии Python, используемой для вашего проекта.
Настройка nginx
Базовая настройка nginx для Flask выглядит так:
location = /yourapplication { rewrite ^ /yourapplication/; }
location /yourapplication { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/tmp/yourapplication.sock;
}
Эта настройка привязывает приложение к /yourapplication. Если вы хотите расположить его на корневом уровне URL, это немного проще:
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/tmp/yourapplication.sock;
}
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/0.12.x/deploying/uwsgi/