8

virtualenv で django アプリのセットアップを終えたばかりで、ファブリック スクリプトを使用して展開がスムーズに進みましたが、現在 .wsgi が機能していません。インターネットであらゆるバリエーションを試しましたが、うまくいきませんでした。私の .wsgi ファイルは次のとおりです。

import os
import sys
import django.core.handlers.wsgi

# put the Django project on sys.path
root_path = os.path.abspath(os.path.dirname(__file__) + '../')
sys.path.insert(0, os.path.join(root_path, 'kcdf'))
sys.path.insert(0, root_path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'kcdf.settings'

application = django.core.handlers.wsgi.WSGIHandler()

同じエラーが発生し続けます:

[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159] mod_wsgi (pid=16938): Exception occurred processing WSGI script '/home/kcdfweb/webapps/kcdf.web/releases/current/kcdf/apache/kcdf.wsgi'.
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159] Traceback (most recent call last):
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]   File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 230, in __call__
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]     self.load_middleware()
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]   File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 33, in load_middleware
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]     for middleware_path in settings.MIDDLEWARE_CLASSES:
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]   File "/usr/local/lib/python2.6/dist-packages/django/utils/functional.py", line 269, in __getattr__
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]     self._setup()
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]   File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 40, in _setup
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]     self._wrapped = Settings(settings_module)
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]   File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 75, in __init__
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159]     raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
[Sun Apr 18 12:44:30 2010] [error] [client 41.215.123.159] ImportError: Could not import settings 'kcdf.settings' (Is it on sys.path? Does it have syntax errors?): No module named kcdf.settings

私の仮想環境は /home/user/webapps/kcdfweb にあります 私のアプリは /home/user/webapps/kcdf.web/releases/current/project_name です 私の wsgi ファイルは home/user/webapps/kcdf.web/releases/current/project_name です/apache/project_name.wsgi

4

4 に答える 4

7

mod_wsgiでVirtualenvを使用するためのドキュメントを参照することをお勧めします。それらは、virtualenvにフックするためのいくつかの代替アプローチを提供します。

于 2010-04-19T14:34:19.453 に答える
1

wsgi ファイルから 2 つ上のディレクトリを追加する必要があるため、次の代わりに:

root_path = os.path.abspath(os.path.dirname(__file__) + '../')

あなたが持っている必要があります

root_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../', '../'))

... wsgi ファイルは、apacheプロジェクト フォルダーの下の というディレクトリにあります。

于 2010-04-18T13:55:04.303 に答える
0

virtualenv を使用している場合は、パスを正しく設定するために、WSGI スクリプト内でそれを有効にする必要があります。

root_path = os.path.abspath(os.path.dirname(__file__) + '../')
activate_this = os.path.join(root_path, "bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
于 2010-04-18T16:56:12.490 に答える
0

__init__.py「kcdf」ディレクトリにファイルがありますか? そうしないと、設定ファイルをインポートできません。

また、virtualenv から何かをインポートできると予想される場合は、virtualenv の site-packages ディレクトリで site.addsitedir() を呼び出す必要があります。詳細については、mod_wsgi のドキュメントを参照してください。設定をインポートすることさえできない場合でも、これは現在の問題ではないと思います。

于 2010-04-19T13:28:30.883 に答える