CGI
Если все остальные методы развертывания не работают, CGI обязательно сработает. CGI поддерживается всеми основными серверами, но обычно имеет не оптимальную производительность.
Это также способ использования приложения Flask в App Engine Google, где выполнение происходит в подобной 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–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.1.x/deploying/cgi/