2017-02-20 73 views
0

我一直在试图弄清楚什么导致这个问题几个小时但没有运气。尽管能够导入所有库,Apache/mod_wsgi/django/arch linux的愁苦尽管能够导入所有库

由于我的Arch Linux的安装迁移到64位,我发现我的Django的网站不工作,错误500我使用python2,这是64位:

>>> import struct 
>>> print struct.calcsize("P") * 8 
64 

而且我也有64位mod_wsgi2:https://www.archlinux.org/packages/community/x86_64/mod_wsgi2/

下面是一个例子日志:

[Mon Feb 20 21:42:40.312829 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] mod_wsgi (pid=19537): Target WSGI script '/home/james/sites/dse/django.wsgi' cannot be loaded as Python module. 
[Mon Feb 20 21:42:40.312872 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] mod_wsgi (pid=19537): Exception occurred processing WSGI script '/home/james/sites/dse/django.wsgi'. 
[Mon Feb 20 21:42:40.312916 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] Traceback (most recent call last): 
[Mon Feb 20 21:42:40.312953 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] File "/home/james/sites/dse/django.wsgi", line 12, in <module> 
[Mon Feb 20 21:42:40.312997 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]  from django.core.wsgi import get_wsgi_application 
[Mon Feb 20 21:42:40.313006 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] File "/usr/lib/python2.7/site-packages/django/__init__.py", line 3, in <module> 
[Mon Feb 20 21:42:40.313056 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]  from django.utils.version import get_version 
[Mon Feb 20 21:42:40.313066 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] File "/usr/lib/python2.7/site-packages/django/utils/version.py", line 3, in <module> 
[Mon Feb 20 21:42:40.313078 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898]  import datetime 
[Mon Feb 20 21:42:40.313103 2017] [wsgi:error] [pid 19537] [client 146.179.195.99:62898] ImportError: /usr/lib/python2.7/lib-dynload/datetime.so: wrong ELF class: ELFCLASS64 
[Mon Feb 20 21:42:40.313185 2017] [access_compat:error] [pid 19537] [client 146.179.195.99:62898] AH01797: client denied by server configuration: /usr/share/httpd/error/HTTP_INTERNAL_SERVER_ERROR.html.var 

所以,我试图手动导入所有这些事情,看看我得到了一个错误,没了:

[[email protected] ~]$ python2 
Python 2.7.13 (default, Dec 21 2016, 07:16:46) 
[GCC 6.2.1 20160830] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import datetime 
>>> import django 
>>> from django.core.wsgi import get_wsgi_application 
>>> from django.utils.version import get_version 

我检查了,我已经得到: 的LoadModule wsgi_module模块/ mod_wsgi.so

在我的httpd.conf,和/家用/詹姆斯/网站的内容/ DSE/Django的在错误牵连.wsgi文件中的约3年没有改变,如下(!):

[[email protected] dse]$ cat django.wsgi 
import os 
import sys 

sys.path.append('/home/james/sites/dse/django_dse') 
sys.path.append('/home/james/sites/dse') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'django_dse.settings' 

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

所以我不知道该怎么办。我的意思是这听起来像一个32/64位兼容性问题,错误是ImportError:/usr/lib/python2.7/lib-dynload/datetime.so:错误的ELF类:ELFCLASS64 - 但我无法弄清楚是什么导致了它。

任何想法?

+0

如果您使用的是Python虚拟环境,是否重新创建它? –

回答

0

事实证明,错误实际上是在一个单独的apache模块被加载,而不是64位。我是在装我的httpd.conf 32位模块:

LoadModule fastcgi_module modules/mod_fastcgi.so 

其实我认定的方式,这是通过运行“的apachectl”程序,然后给我相关的32位模块的输入错误。

当这被评论出来,我所有的64位django网站都恢复了生机。相当原因,这表现在它的方式,我不知道...

相关问题