私は現在、Apacheを介して同じドメインに(ただし異なるポートで提供されている)2つのDjangoアプリケーション(例:A
& B
)を使用しています。私はセットアップが正しいと信じていますが、私は両方のサイトで無作為に500を取得しています。 A
の500は、ほとんどの場合、リクエストがB
(またはその逆)に配信された後に発生します。エラーログを検査する際にApacheでDjangoとmod_wsgiを使用している複数のサイト
(のインスタンスのA
を言う)、私は(A
のsettings.py
ファイルのWSGIモジュールはB
にアクセスしようとしている "ことがわかりプロジェクトパスであるため、明らかに、そこには発生しません別の)[これは逆も同じですが、BのwsgiはAのsettings.pyファイルが見つからないという例外を発生させます]。私はなぜ彼らが他の設定ファイルを探すのか分かりません。すべてのビューのimport(settings.py用)は、それぞれのプロジェクトに固有のものです。ここで
は私の設定です:
A
はB
がポート80
上で提供されている、ポート8080
上で提供されています。
のVirtualHost:
<VirtualHost *:8080>
ServerAdmin [email protected]
ServerName string1
Alias /static/ /home/PATH_TO_PROJECT_A/static/
<Directory /home/PATH_TO_PROJECT_A/static>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias//home/PATH_TO_PROJECT_A/wsgi.py
<Directory /home/PATH_TO_PROJECT_A>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
LogLevel warn
ErrorLog /SOME_PATH/errorA.log
CustomLog /SOME_PATH/accessA.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName string1
ServerAdmin [email protected]
Alias /APP_B/static/ /home/PATH_TO_PROJECT_B/static/
<Directory /home/PATH_TO_PROJECT_B/static>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias /APP_B /home/PATH_TO_PROJECT_B/wsgi.py/
<Directory /home/PATH_TO_PROJECT_B>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
ErrorLog /home/SOME_PATH/error2.log
CustomLog /home/SOME_PATH/access2.log combined
# All other files on B:80 (other than /APP_B are served normally
DocumentRoot /home/foo/public_html/xyz/public
</VirtualHost>
ports.conf:行への変更と全く
import os, sys
sys.path.append('home/PATH_TO_PROJECT_A') #1
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PROJECT_A.settings") #2
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
とBで同じ、 'A' に
NameVirtualHost *:8080
Listen 8080
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
wsgi.py #1と#2。私はerror.log
から取得
エラーがA
から、たとえば言う:
[Sun Aug 26 17:01:49 2012] [error] [client x] Traceback (most recent call last):
[Sun Aug 26 17:01:49 2012] [error] [client x] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 219, in __call__
[Sun Aug 26 17:01:49 2012] [error] [client x] self.load_middleware()
[Sun Aug 26 17:01:49 2012] [error] [client x] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 39, in load_middleware
[Sun Aug 26 17:01:49 2012] [error] [client x] for middleware_path in settings.MIDDLEWARE_CLASSES:
[Sun Aug 26 17:01:49 2012] [error] [client x] File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 184, in inner
[Sun Aug 26 17:01:49 2012] [error] [client x] self._setup()
[Sun Aug 26 17:01:49 2012] [error] [client x] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup
[Sun Aug 26 17:01:49 2012] [error] [client x] self._wrapped = Settings(settings_module)
[Sun Aug 26 17:01:49 2012] [error] [client x] File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 95, in __init__
[Sun Aug 26 17:01:49 2012] [error] [client x] raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Sun Aug 26 17:01:49 2012] [error] [client x] ImportError: Could not import settings 'PROJECT_B.settings' (Is it on sys.path?): No module named PROJECT_B.settings
あなたはA
秒settings.py
不足しているのエラーログがB
があることを訴える「見ての通り。光を当ててください、何が間違っているのか分かりません。 1つのアプリが他のsettings.pyファイルをインポートするように見える理由はわかりません。
アプリケーションは両方とも正常に動作し、実行されますが、500を処理するランダム要求でブレークします(再度リフレッシュするとクリアされます)。
ありがとうございました!
ところで、この他の[質問](http://stackoverflow.com/questions/9581197/two-django-projects-running-simultaneouslyandMod-wsgi-acting-werid)は、 Graham自身が別々のデーモンプロセスグループを使用しています。私をたくさん助け、あなたは私の投票グラハムを得ました! –
まだ私のために働いていない。なぜか教えてくれますか?まだ404ページ – user2771714
あなたは同じ問題を抱えていると想定してはいけません。別の質問を作成し、問題の内容を正確に記述します。 –