编程语言
首页 > 编程语言> > 如何正确设置Django mod_wsgi部署的python路径和权限?

如何正确设置Django mod_wsgi部署的python路径和权限?

作者:互联网

我遇到的问题是我的wsgi文件无法正确导入wsgi处理程序.

/var/log/apache2/error.log报告:

ImportError: No module named
django.core.handlers.wsgi

谷歌搜索会带来一些结果,主要是处理权限错误,因为www-data无法读取某些文件和/或pythonpath不正确.在我的情况下,某些解决方案含糊不清,或者根本不起作用.

背景资料

我的/usr/lib目录..

/usr/lib/python2.4
/usr/lib/python2.5
/usr/lib/python2.6
/usr/lib/python-django

默认的python版本是2.5.2.如果我以常规用户身份打开解释器,则可以毫无问题地导入django.core.handlers.wsgi.

如果我切换到www-data,则python版本是相同的,并且我可以导入django.core.handlers.wsgi模块没有问题.

在我的bashrc中,我将PYTHONPATH设置为包含所有django站点的主目录…

export PYTHONPATH=/home/meder/django-sites/:$PYTHONPATH

因此目录结构为:

django-sites/
   test

test是django-admin createproject创建的目录.

我的虚拟主机:

<VirtualHost *:80>
    ServerName beta.blah.com
    WSGIScriptAlias / /home/meder/django-sites/test/apache/django.wsgi
    Alias /media /home/meder/django-sites/test/media/
</VirtualHost>

/home/meder/django-sites/test/apache/django.wsgi文件本身:

import os, sys

sys.path.append('/usr/local/django')
sys.path.append('/home/meder/django-sites')
sys.path.append('/home/meder/django-sites/test')
os.environ['DJANGO_SETTINGS_MODULE'] = 'test.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

最终,我的操作系统是Debian Lenny,我从backport那里获取了django 1.1.1.希望有足够的信息.

更新#1-根据第一个答复,这是ldd /usr/lib/apache2/modules/mod_wsgi.so的结果:

meder@site:/usr/lib/apache2/modules$ldd mod_wsgi.so
    libpython2.5.so.1.0 => /usr/lib/libpython2.5.so.1.0 (0xb7d99000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xb7d81000)
    libdl.so.2 => /lib/libdl.so.2 (0xb7d7c000)
    libutil.so.1 => /lib/libutil.so.1 (0xb7d78000)
    libm.so.6 => /lib/libm.so.6 (0xb7d52000)
    libc.so.6 => /lib/libc.so.6 (0xb7c14000)
    /lib/ld-linux.so.2 (0xb7efd000)

因此,它是针对python 2.5而不是2.4编译的.

解决方法:

由于我使用的是Debian,因此django似乎位于/usr/lib/pymodules/python2.5中,而不位于/usr/lib/python2.5/site-packages中.

我加了

sys.path.append('/usr/lib/pymodules/python2.5') 

到我的wsgi文件的顶部并做到了,尽管我觉得我应该以更适当的方式修复它.

标签:mod-wsgi,python,django
来源: https://codeday.me/bug/20191210/2100637.html