2016-04-08 3 views
1

Мне удалось развернуть однопользовательское фляжное приложение с wsgi и apache2, используя следующие конфигурации в файле .wsgi.Как развернуть приложение Flask с заводской функцией для создания приложения

#!/usr/bin/python 
import sys 
import logging 
logging.basicConfig(stream=sys.stderr) 
sys.path.insert(0,"/var/www/Devrupt/") 

from Devrupt import app as application 
application.secret_key = 'Add your secret key' 

activate_this = '/var/www/Devrupt/venv/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 

Мои apache2 .conf файл:

<VirtualHost *:80> 
     ServerName devrupt.com 
     ServerAdmin [email protected] 
     WSGIScriptAlias//var/www/Devrupt/devrupt.wsgi 
     <Directory /var/www/Devrupt/Devrupt/> 
       Order allow,deny 
       Allow from all 
     </Directory> 
     Alias /static /var/www/Devrupt/Devrupt/static 
     <Directory /var/www/Devrupt/Devrupt/static/> 
       Order allow,deny 
       Allow from all 
     </Directory> 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     LogLevel warn 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

Как развернуть приложение колба с функцией фабрики для создания приложений?

Колба Применение со структурой функции завода:

| - Devrupt 
    | - Devrupt 
     |- app/ 
      |- templates/ 
      |- static/ 
      |- main/ 
       |- __init__.py 
       |- errors.py 
       |- forms.py 
       |- views.py 
      |- __init__.py  # Factory Function 
      |- models.py 
     |- migrations/   # Contains the database migrations scripts 
     |- tests/    # Where unit tests are written 
      |- __init__.py 
      |- test*.py 
     |- venv/    # Contains the python virtual environment 
     |- requirements.txt  # List package dependencies so that it is easy to regenerate an identical virtual environment on a diff machine 
     |- config.py   # Stores the configuration settings 
     |- manage.py   # Launch the application and other applcation tasks 

| - devrupt.wsgi 

mod_wsgi (Apache) утверждает, что «Если вы не имеете фабричную функцию для создания приложений, но одноэлементный экземпляр вы можете напрямую импортировать, что один в качестве приложения.»

приложение/инициализации .py (заводская функция):

# Application Package Constructor 
from flask import Flask, render_template 
from flask.ext.bootstrap import Bootstrap 
from flask.ext.mail import Mail 
from flask.ext.moment import Moment 
from config import config 

bootstrap = Bootstrap() 
moment = Moment() 

def create_app(config_name): 
    app = Flask(__name__) 
    app.config.from_object(config[config_name]) 
    config[config_name].init_app(app) 

    bootstrap.init_app(app) 
    moment.init_app(app) 

    # Attach Routes and custom error messages here 
    from .main import main as main_blueprint 
    app.register_blueprint(main_blueprint) 


return app 

Что ammendments делать я должен сделать, чтобы он мог работать на заводе прикладную функцию?

+0

Зачем вам нужен завод? Если вы успешно работаете как синглтон, вы в порядке. И мы не можем сказать, что вам нужно изменить, потому что фабрика не имеет никакого отношения к структуре каталогов, это то, что вы определяете в коде. Вы написали заводскую функцию? Если нет, вам нужно начать. – dirn

ответ

0

Вам нужно только убедиться, что у вас есть объект приложения в файле .wsgi. Этот объект может быть создан с использованием заводской функции. Например:

from Devrupt import application_factory 
application = application_factory() 

Это так просто! Но для того, чтобы действительно это исправить, измените devrupt.wsgi на:

#!/usr/bin/python 
activate_this = 'var/www/Devrupt/venv/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
import sys 
import logging 
logging.basicConfig(stream=sys.stderr) 
sys.path.insert(0,"/var/www/") 

from Devrupt import create_app 
application = create_app('development') 
+0

Итак, я добавил код для моей заводской функции (app/__ init__.py) в вопрос. Как добавить объект приложения в файл .wsgi? – luishengjie

Смежные вопросы