2016-08-22 62 views
1

我使用Python 3.5的virtualenv,我試圖用mod_wsgi的將它連接的Python 3.5和mod_wsgi的

Exception occurred processing WSGI script '/home/myapp/my_app/my_app/wsgi.py'. 
Traceback (most recent call last): 
File "/home/myapp/my_app/my_app/wsgi.py", line 12, in <module> 
from django.core.wsgi import get_wsgi_application 
ImportError: No module named 'django' 

Apache的配置:

... 
DocumentRoot /home/myapp/my_app/ 
WSGIScriptAlias//home/myapp/my_app/my_app/wsgi.py 
WSGIDaemonProcess python-path=/home/myapp/my_app/:/home/myapp/myapp_venv/lib/python3.5/site-packages:/home/myapp 

<Directory /home/myapp/my_app/ad_server> 
    <Files wsgi.py> 
    Require all granted 
    </Files> 
</Directory> 
<Location "/"> 
    Require all granted 
</Location> 
Alias /static /home/myapp/my_app/static 
... 

而且WSGI

from django.core.wsgi import get_wsgi_application 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_app.settings") 

application = get_wsgi_application() 

什麼我做錯了?

+0

[django Apache配置與WSGIDaemonProcess不工作]的可能重複(http://stackoverflow.com/questions/38284814/django-apache-configuration-with-wsgidaemonprocess-not-working) – e4c5

回答

1

您錯過WSGIDaemonProcess的進程組名稱,並且還缺少相應的WSGIProcessGroup指令或process-group選項到WSGIScriptAlias。因此,即使擁有進程組名稱,WSGI應用程序也不會在守護進程組中運行,因此不瞭解虛擬環境。

用途:

WSGIDaemonProcess my_app python-home=/home/myapp/myapp_venv python-path=/home/myapp/my_app 
WSGIScriptAlias//home/myapp/my_app/my_app/wsgi.py process-group=my_app application-group=%{GLOBAL} 

的指令必須按照這個順序,所以請使用process-group選項WSGIScriptAlias時肯定WSGIDaemonProcess指令是第一位的。