2012-02-27 11 views
1

mod_wsgiを使用してApache上でローカルのDjangoサーバを実行しようとしています。私はMac上ですぐに使用できるApacheを実行しています。Mac上のDjango:mod_wsgiの設定に問題があるApache

[email protected]:~/Sites/mysite$ apachectl -v 
Server version: Apache/2.2.21 (Unix) 
Server built: Nov 15 2011 15:12:57 

Apacheはmod_wsgiを適切に読み込みます。

WSGIDaemonProcess django 
WSGIProcessGroup django 

Alias /mysite/ "/Users/hobbes3/Sites/mysite/" 
<Directory "/Users/hobbes3/Sites/mysite"> 
Order allow,deny 
Options Indexes 
Allow from all 
IndexOptions FancyIndexing 
</Directory> 

WSGIScriptAlias /mysite "/Users/hobbes3/Sites/mysite/apache/django.wsgi" 

<Directory "/Users/hobbes3/Sites/mysite/apache"> 
Allow from all 
</Directory> 

マイdjango.wsgiファイルは、私はまた、エラーなしにApacheを再起動することができます

import os 
import sys 

paths = [ '/Users/hobbes3/Sites/mysite', 
      '/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages', 
] 

for path in paths: 
    if path not in sys.path: 
     sys.path.append(path) 

sys.executable = '/usr/local/bin/python' 
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 

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

である私はapache_django_wsgi.confをロード私のhttpd.confファイルで

[email protected]:~/Sites/mysite$ apachectl -t -D DUMP_MODULES | grep wsgi 
Syntax OK 
wsgi_module (shared) 

。しかし、http://localhost/mysiteにアクセスしようとすると、私のブラウザには500の内部サーバーエラーがあると言われています。私はその中sys.pathが含まれていなかった、それはmysite.settingsをインポートすることはできませんなぜ私にはわからない

mod_wsgi (pid=73970): Exception occurred processing WSGI script '/Users/hobbes3/Sites/mysite/apache/django.wsgi'. 
Traceback (most recent call last): 
    File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 250, in __call__ 
    self.load_middleware() 
    File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/core/handlers/base.py", line 39, in load_middleware 
    for middleware_path in settings.MIDDLEWARE_CLASSES: 
    File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/utils/functional.py", line 276, in __getattr__ 
    self._setup() 
    File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/django/conf/__init__.py", line 89, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'mysite.settings' (Is it on sys.path?): No module named mysite.settings 

私のApacheのエラーログには、(私は日付と時刻を切り捨て)と言いますか?

settings.pyへのフルパスは、/Users/hobbes3/Sites/mysite/です。

答えて

2

あなたはmysiteをパスに含めましたが、mysite.settingsを参照しました。だから、Pythonはモジュールの中で、の中でそれが見つかったディレクトリを探しています。代わりにsettingsを使用してください。

+0

これは簡単な修正でした。しかし、今私は新しいエラー(Apacheログから)を持っています: 'TemplateSyntaxError:レンダリング中に不適切に設定されました:MySQLdbモジュールの読み込み中にエラーが発生しました:MySQLdbという名前のモジュールがありません。私は 'django-admin.py runserver'を実行すると' mysite'が動作するので、私はDjangoの 'settings.py'がMySQLdbで動作することを知っています。あなたがそれを理解することができない場合は心配しないでください。新しい質問を投稿します。それにもかかわらず、ありがとう! – hobbes3

+0

これはほぼ確実にPythonのバージョンの問題です:mod_wsgiは特定のバージョンに対してコンパイルされますが、homebrew 2.7のサイトパッケージを調べるように指示しています。 mod_wsgiの2.7固有のバージョンが必要です。 –

+0

'WSGIPythonHome/usr/local/Cellar/python/2.7.2 /'を 'apache_django_wsgi.conf'に追加しましたが、それは問題を解決していないようです。更新されたエラーは、 'TemplateSyntaxError:レンダリング中に不適切にキャッチされました:MySQLdbモジュールの読み込みエラー:dlopen(/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2)です。 7-macosx-10.4-x86_64.egg/_mysql.so、2):ライブラリがロードされていない:libmysqlclient.18.dylib'参照先:/usr/local/Cellar/python/2.7.2/lib/python2.7/サイトパッケージ/ MySQL_python-1.2.3-py2.7-macosx-10.4-x86_64.egg/_mysql.so ' – hobbes3

関連する問題