Я успешно развернул приложение. Мне нужно было сделать три вещи:
фабрика приложений теперь это ...
...
from myapp.view import auth
app.register_blueprint(auth.bp)
from myapp.view import module1
app.register_blueprint(module1.bp)
app.add_url_rule("/", endpoint="index")
from myapp.view import api
app.register_blueprint(api.bp)
return app
if __name__ == "__main__":
app = create_app()
app.run()
/var/www/app_name/code/passenger_wsgi.py файл выглядит следующим образом
from nwpapp import create_app
application = create_app()
Я не использовал виртуальную среду. по умолчанию вызывается python2.7. Мне пришлось установить альтернативы и сделать Python3.6 по умолчанию. Обязательно запустите правильную версию pip для установки ваших зависимостей.
Если названо из командной строки, серверная переменная HTTP_USER_AGENT не установлен. Я использую эту константу для определения, называют ли сценарий из командной строки или нет:
define("CLI", !isset($_SERVER['HTTP_USER_AGENT']));
ОБНОВЛЕНИЕ: Так как этот ответ все еще отмечен как 'корректный', я хотел бы пересмотреть свой оператор - доверие заголовку "Агента пользователя" может быть проблематичным, так как это - пользовательское значение.
Используйте php_sapi_name() == 'cli'
или PHP_SAPI == 'cli'
, как предложено Eugene/cam8001 в комментариях.
Спасибо за указание на это!
Я выдержал сравнение $_SERVER
суперглобальный в обоих вызовах. Это кажется этим $_SERVER['argc']
(т.е. количество аргументов передало сценарию), только установлен при выполнении от оболочки/командной строки:
<?php
if (isset($_SERVER['argc'])) {
define('CLI', true);
} else {
define('CLI', false);
}
Это, кажется, работает и над хостами Linux и Windows. (Сначала я думал о проверке некоторые переменные среды, но они отличаются для каждой операционной системы. Кроме того, весь $_SERVER['HTTP_*']
заголовки отсутствуют в версии CLI, но я не уверен, достаточно ли это надежно.)