Не удается развернуть приложение фляги на Passenger, работающем в centos7

97
8

Я пытаюсь развернуть приложение flask на centos7, используя Phusion Passenger и Nginx. Я могу запустить свое приложение в колбе на сервере, но не могу получить доступ к приложению. Я выполнил все шаги в руководстве по фьюжн

Приложение Flask создается следующим образом:

import os

from flask import Flask, send_from_directory

def create_app(test_config=None):
app = Flask(__name__, instance_relative_config=True)
DATABASE_FILE = os.path.join(app.instance_path, "myapp.sqlite")

app.config.from_mapping(
SECRET_KEY="key",
SQLALCHEMY_DATABASE_URI='mysql+mysqldb://user:password@localhost:3306/db',
SQLALCHEMY_TRACK_MODIFICATIONS=False,
FLASK_ADMIN_SWATCH= 'cerulean',
)

if test_config is None:
app.config.from_pyfile("config.py", silent=True)
else:
app.config.from_mapping(test_config)

try:
os.makedirs(app.instance_path)
except OSError:
pass

@app.route("/favicon.ico")
def favicon():
return send_from_directory(
os.path.join(app.root_path, "static/favicon"),
"favicon.ico",
mimetype="image/vnd.microsoft.icon",
)

from myapp.model.auth_model import db
db.init_app(app)

from myapp.controller import session
session.init_app(app)

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

Что касается WSGI файла Passenger (passenger_wsgi.py), который не имеет лучшего представления, я просто поместил этот код в папку приложения:

import myapp
application = myapp.create_app()

В error.log nginx error.log показано следующее

App 5979 output:   File "/usr/share/passenger/helper-scripts/wsgi-loader.py", line 333, in process_request
App 5979 output: result = self.app(env, start_response)
App 5979 output: TypeError: 'module' object is not callable

ПОМОГИТЕ!!!!!

спросил(а) 2019-01-17T14:25:00+03:00 1 год, 8 месяцев назад
1
Решение
121

Я успешно развернул приложение. Я должен был сделать три вещи:

верните приложение правильно из фабрики приложений поместите файл passenger_wsgi.py в папку app/code убедитесь, что правильная версия Python называется

фабрика приложений теперь такая...

    ...

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 для установки ваших зависимостей.

ответил(а) 2019-02-03T12:40:00+03:00 1 год, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема