我正在試驗運行兩個在同一個VirtualHost
上配置的wsgi應用程序。其中一個應用myapp
是指定的標準hello-world代碼here。它裝載絕對好。其他應用程序uiapp
是一個Django站點。它以ImportError
失敗。Django站點導入錯誤,在守護進程模式下使用mod_wsgi
我wsgi docs讀到的python-path
價值被附加到sys.path
,所以這就是我在WSGIDaemonProcess
指定爲uiapp
。
我無法弄清楚問題出在Python代碼還是Apache配置上。
這是我的虛擬主機配置:
[ . . . ]
# processGroups
WSGIProcessGroup uiapp
WSGIProcessGroup myapp
# configurations for django sites
WSGIScriptAlias /uiapp "/some/path/ui_dir/site_prod/wsgi.py"
WSGIScriptAlias /myapp "/some/other/path/myapp.wsgi"
# daemons
WSGIDaemonProcess uiapp processes=2 threads=25 display-name=site_prod_wsgi python-path=/some/path/ui_dir
WSGIDaemonProcess myapp processes=2 threads=25 display-name=helloworld_wsgi
# doc root for /uiapp
<Directory "/some/path/ui_dir/site_prod">
Order allow,deny
Allow from all
</Directory>
# doc root for /myapp
<Directory "/some/other/path">
Order allow,deny
Allow from all
</Directory>
[ . . . ]
我試圖給python-path
爲uiapp
更改爲/some/path/ui_dir/site_prod
,但即使是使用相同的錯誤而失敗。
錯誤日誌是:
mod_wsgi (pid=32652): Exception occurred processing WSGI script '/some/path/ui_dir/site_prod/wsgi.py'.
Traceback (most recent call last):
File "/home/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 219, in __call__
self.load_middleware()
File "/home/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 39, in load_middleware
for middleware_path in settings.MIDDLEWARE_CLASSES:
File "/home/usr/local/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner
self._setup()
File "/home/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/home/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'site_prod.settings' (Is it on sys.path?): No module named site_prod.settings
這是/some/path/ui_dir/site_prod/wsgi.py
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site_prod.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)
源請幫我找出我在做什麼錯。
謝謝格雷厄姆。這解決了我的問題。你的博客文章解釋得很清楚。 – Unos
感謝Graham在mod_wsgi上的出色工作以及解決此配置問題的方法。我面臨同樣的問題。 –