- en
- Language: ru
- Documentation version: 1.1.x
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
. Если ваше приложение доступно на уровне root, вы можете использовать одну /
вместо /yourapplication
. myapp
означает имя файла вашего flask-приложения (без расширения) или модуля, который предоставляет app
. app
- это вызываемый модуль внутри вашего приложения (обычно строка выглядит так app = Flask(__name__)
.
Если вы хотите развернуть ваше приложение flask внутри виртуальной среды, вам также необходимо добавить --virtualenv /path/to/virtual/environment
. Вам также может понадобиться добавить --plugin python
или --plugin python3
в зависимости от того, какую версию python вы используете для своего проекта.
Настройка nginx¶
Базовая конфигурация flask nginx выглядит следующим образом:
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;
}