2017-05-07 50 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''设置为上面的目录,你的源代码是一个坏主意。组装配置,这可能意味着你的源代码是可下载的。 –