Spec-Zone.ru › Flask 1.0

CGI

Если все другие методы развертывания не работают, CGI обязательно сработает. CGI поддерживается всеми основными серверами, но обычно имеет не оптимальную производительность.

Это также способ использования приложения Flask на Google App Engine, где выполнение происходит в среде, похожей на CGI.

Обратите внимание

Пожалуйста, заранее убедитесь, что все вызовы app.run() в вашем файле приложения находятся внутри блока if __name__ == '__main__': или перемещены в отдельный файл. Просто убедитесь, что он не вызывается, так как это всегда запускает локальный сервер WSGI, чего мы не хотим, если мы развернём это приложение в CGI/app engine.

С CGI вам также необходимо убедиться, что ваш код не содержит инструкций print, или что sys.stdout переопределён чем-то, что не записывает в ответ HTTP.

Создание файла .cgi

Сначала необходимо создать файл приложения CGI. Назовём его yourapplication.cgi:

#!/usr/bin/python
from wsgiref.handlers import CGIHandler
from yourapplication import app

CGIHandler().run(app)

Настройка сервера

Обычно есть два способа настройки сервера. Либо просто скопировать .cgi в cgi-bin (и использовать mod_rewrite или что-то подобное для перенаправления URL) или позволить серверу напрямую указывать на файл.

Например, в Apache вы можете добавить что-то подобное в конфигурацию:

ScriptAlias /app /path/to/the/application.cgi

Однако на совместных хостингах веб-сайтов у вас может не быть доступа к вашей конфигурации Apache. В этом случае файл с именем .htaccess, расположенный в общедоступном каталоге, где вы хотите, чтобы ваше приложение было доступно, тоже подойдёт, но директива ScriptAlias в этом случае не сработает:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f # Don't interfere with static files
RewriteRule ^(.*)$ /path/to/the/application.cgi/$1 [L]

Для получения дополнительной информации обратитесь к документации вашего веб-сервера.

© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/1.0.x/deploying/cgi/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API