私はwsgiとapache2を使ってシングルトンフラスコアプリケーションを展開することができました。アプリケーション作成用のファクトリ関数を持つ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)は「あなたがアプリケーションを作成するためのファクトリ関数が、シングルトンインスタンスを持っていない場合は、直接アプリケーションとして1つをインポートすることができます。」と述べています
アプリ/ のinitの.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私は工場機能のアプリケーション上で動作することを可能にするためにしなければならないのですか?
なぜ工場が必要ですか?あなたがシングルトンとして正常に動作しているなら、あなたは大丈夫です。ファクトリはディレクトリ構造とは何の関係もないため、変更する必要があるとは言えません。これはコードで定義するものです。あなたはファクトリ関数を書いていますか?もしそうでなければ、それはあなたが始める必要がある場所です。 – dirn