Gunicornサーバーでbootstrap a Flask appを実行しようとしています。2つのツールのドキュメントをまとめて、SOを検索することで、これが実現します。私はこれまでに持っています...しかし、それは完全には機能していません。
app.py:
from flask import Flask, render_template
from flask.ext.sqlalchemy import SQLAlchemy
from werkzeug.contrib.fixers import ProxyFix
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
db = SQLAlchemy(app)
@app.route('/')
def index():
return render_template('index.html')
私が実行したもの:
App.pyと同じディレクトリから、
gunicorn app:app
この小さなことから始めても、私は何かを逃しました。エラーメッセージはあまり役に立ちません:
2013-09-12 20:13:07 [11461] [情報] gunicorn0.14.5を開始しています
2013-09-12 20:13:07 [11461] [情報]リスニング:http://127.0.0.1:8000
(11461)
2013-09-12 20:13:07 [11461] [情報]ワーカーの使用:同期
2013-09-12 20:13:07 [11528] [INFO] pidでワーカーを起動しています:11528
2013-09-12 20:13:07 [11528] [情報]ワーカーが終了します(pid:11528)
2013-09-12 20:13:08 [11461] [情報]シャットダウン:マスター
2013-09-12 20:13:08 [11461] [情報]理由:ワーカーが起動に失敗しました。
ちなみに、私はこれをDebianLinuxシステムで実行しています。よろしくお願いします!
更新
デバッグをオンにした後、さらに有益なエラーメッセージが表示されました。これは非常に急速に非常に具体的な問題になりました:ImportError: No module named flask
。通常、virtualenvを使用していないときにこの種のエラーが発生しますが、使用しています。よく調べてみると、Gunicornはvirtualenvが使用しているものとは異なるバージョンのPython、つまりPython3を使用しているようです。だから...私の特定のpythonこれを修正し、Gunicornに適切なPythonを使用するように指示するにはどうすればよいですか?
Gunicornユーティリティがvirtualenvではなくシステムパスを使い果たしている可能性があります。
必ずpip install gunicorn
virtualenvに。
これが、アプリを実行するためにセットアップしたvirtualenvのpipフリーズです。
(so_2)20:38:25 ~/code/tmp/flask_so$ pip freeze
Flask==0.10.1
Flask-SQLAlchemy==1.0
Jinja2==2.7.1
MarkupSafe==0.18
SQLAlchemy==0.8.2
Werkzeug==0.9.4
gunicorn==18.0
itsdangerous==0.23
wsgiref==0.1.2
実際には、私はこれらを実行しただけですpip install
s:
$ pip install flask
$ pip install gunicorn
$ pip install Flask-SQLAlchemy
私はあなたと同じ問題を抱えています。問題は、gunicornが何らかの理由で仮想環境の外部に環境をロードすることです。仮想環境の外でパッケージgunicornをアンインストールすることで解決しました。
(env) $ deactivate
$ Sudo pip uninstall gunicorn
だからあなたはあなたの環境に戻って実行しようとします。私の場合、envフォルダーと入力しました。
$ source env/bin/activate
(env) $ pip install gunicorn
(env) $ gunicorn server:app
2013-10-19 20:40:56 [11923] [INFO] Starting gunicorn 18.0
2013-10-19 20:40:56 [11923] [INFO] Listening at: http://127.0.0.1:8000 (11923)
2013-10-19 20:40:56 [11923] [INFO] Using worker: sync
2013-10-19 20:40:56 [11926] [INFO] Booting worker with pid: 11926
Gunicornは、システムの複数の場所にインストールされている可能性があります。それはに存在する可能性があります
デフォルトで指定すると
gunicorn -w 4 -b 127.0.0.1:5000flaskApp:app
オペレーティングシステムのデフォルトを参照していますPython同じパスにflaskパッケージがインストールされていない場合、エラーが発生します。参照するgunicornを指定して、 gunicornへの適切なパス
/ home/sunil/anaconda2/bin/gunicorn -w 4 -b 127.0.0.1:5000flaskApp:app