1

ご挨拶とご挨拶、

gunicorn + nginx およびスーパーバイザーを使用して、Ubuntu VPS で Flask アプリを実行しようとしています。ssh 経由で vps にログインすると、すべてが機能します。ログアウトすると、ゲートウェイが正しくありません。

gunicorn のエラー ログには、次の情報が表示されます。

Traceback (most recent call last):
File "/home/michael/dev/myapp/env/local/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 131, in handle_request
File "/home/michael/dev/myapp/env/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
File "/home/michael/dev/myapp/env/local/lib/python2.7/site-packages/werkzeug/contrib/fixers.py", line 144, in __call__
File "/home/michael/dev/myapp/env/local/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
File "/home/michael/dev/myapp/env/local/lib/python2.7/site-packages/flask/app.py", line 1407, in handle_exception
File "/home/michael/dev/myapp/env/local/lib/python2.7/site-packages/flask/app.py", line 1420, in log_exception
File "/home/michael/dev/myapp/env/local/lib/python2.7/site-packages/flask/app.py", line 582, in logger
ImportError: No module named logging

これは私には本当に奇妙に思えます。Flask は、python 独自のログ モジュールを使用します。モジュールを Python シェルにインポートできます。また、virtualenv ですべてを実行します。

参考までに、私のsupervisor.conf:

[program:gunicorn] 
directory = /home/michael/dev/myapp
user=michael
command = /home/michael/dev/myapp/env/bin/gunicorn mpn:app
directory = /home/michael/dev/myapp
environment=PATH="/home/michael/dev/myapp/env/bin"
autostart=true
autorestart=true
redirect_stderr=True
stdout_logfile = /home/michael/dev/myapp/logs/supervisor.log
stderr_logfile = /home/michael/dev/myapp/logs/supervisor_error.log

誰かが私を助けてくれることを願っています。これをstackover-google-maillist-ingするのに何時間も費やしました。

編集:

Debian に切り替えたところ、この問題は発生しなくなりましたが、まだ解決策に興味があります。

4

1 に答える 1

0

これは、Python のインストールが壊れていることを示しているようです。これは、インストールする前に python の依存関係を設定していない場合に発生する可能性があります。たとえば、gcc のインストールに失敗すると、Python が一部のライブラリのコンパイルに失敗する可能性があります。Python を再インストールして新しい virtualenv をセットアップし、その virtualenv でログをインポートできるかどうかをテストしてください。

また、 virtualenvの代わりに virtualenvwrapper を単独で使用することをお勧めします。仮想環境での作業がはるかに簡単になります。Python シェルでログのインポートをテストしたとき、最初に source bin/activate を実行して、仮想環境でテストしていることを確認しましたか? 最後に、スーパーバイザー ログにはエラーが含まれていますか?

于 2013-10-02T21:38:29.360 に答える