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

Я пытаюсь развернуть приложение 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_wsgi.py), который не имеет лучшего представления, я просто поместил этот код в папку приложения:

import myapp
application = myapp.create_app()

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

HELP !!!!!

1 Ответ

0 голосов
/ 03 февраля 2019

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

  1. верните приложение правильно с фабрики приложений
  2. поместите файл passenger_wsgi.py в папку приложения / кода
  3. убедитесь, что правильная версия 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 для установки ваших зависимостей.

...