2017-05-07 48 views
0

請幫忙,我可以找到錯誤。 我使用Django 1.11和Apache(在CentOS)將Django 1.11項目移至wsgi

還有就是我wsgi.py

import os 
import sys  
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") 
activate_this = os.path.expanduser("/var/project/project_python35_venv/bin/activate_this.py") 
execfile(activate_this, dict(__file__=activate_this)) 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

我django.conf

WSGILazyInitialization On 
WSGIRestrictEmbedded On 
WSGIPassAuthorization On 

WSGIDaemonProcess project user=apache group=apache processes=10 threads=10 maximum-requests=10000 python-path=/var/project/project_python35_venv/lib/python3.5/site-packages python-home=/var/project/project_python35_venv/lib/python3.5 
#WSGIProcessGroup project 
#WSGIApplicationGroup %{GLOBAL} 
#WSGIPythonHome /var/project/project_python35_venv/lib/python3.5 

<VirtualHost *:80> 

<Directory /var/project/project_python35_venv> 
    Require all granted 
</Directory> 

CustomLog /var/log/httpd/project-access.log common 
ErrorLog /var/log/httpd/project-error.log 

DocumentRoot /var/project/project/project/ 

WSGIScriptAlias//var/project/project/project/wsgi.py 

Alias /static /var/project/project/project/static/ 

<Directory /var/project/project/project/static> 
    Require all granted 
</Directory> 

<Directory /var/project/project> 
    <Files wsgi.py> 
     Require all granted 
    </Files> 
</Directory> 

</VirtualHost> 

(httpd的的),我想所有情況下,卻依然得到這個錯誤在我的日誌的httpd:

ImportError: No module named site

謝謝大家的幫助

+0

你自己從源代碼編譯mod_wsgi的?你是如何編譯mod_wsgi的?您嘗試使用的Python安裝在哪裏? –

回答

0

試試這個

WSGI

import os 
import sys 

PROJECT_DIR = '/var/project' 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") 
def execfile(filename): 
    globals = dict(__file__ = filename) 
    exec(open(filename).read(), globals) 

activate_this = os.path.join(PROJECT_DIR, 'project_python35_venv/bin', 'activate_this.py') 
execfile(activate_this) 

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

和的apache.conf

WSGILazyInitialization On 
WSGIRestrictEmbedded On 
WSGIPassAuthorization On 

WSGIDaemonProcess project python-path=/var/project/project/:/var/project_python35_venv/lib/python3.5/site-packages/ 
WSGIProcessGroup project 

<VirtualHost *:80> 

<Directory /var/project/project_python35_venv> 
    Require all granted 
</Directory> 

CustomLog /var/log/httpd/project-access.log common 
ErrorLog /var/log/httpd/project-error.log 

DocumentRoot /var/project/project/ 

WSGIScriptAlias//var/project/project/wsgi.py 

Alias /var/project/project/static /var/project/project/static/ 

<Directory /var/project/project/static> 
    Require all granted 
</Directory> 

<Directory /var/project> 
    <Files wsgi.py> 
     Require all granted 
    </Files> 
</Directory> 

</VirtualHost> 
+0

請參閱http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html,瞭解如何將mod_wsgi與Python虛擬環境一起使用。你應該避免在''site-packages''中使用''python-path'',而應該在虛擬環境的根目錄下使用''python-home''。在Apache配置中完成時,不需要WSGI腳本文件中的「activate_this」。 –

+0

另外,將''DocumentRoot''設置爲上面的目錄,你的源代碼是一個壞主意。組裝配置,這可能意味着你的源代碼是可下載的。 –