Ошибка mod_wsgi Apache с приложением django

У меня есть приложение django (1.7), которое очень хорошо работает на сервере Centos7. Теперь я перехожу на производственный сервер RHEL 6, и у меня все еще есть некоторые проблемы.

Проблема в файле mod_wsgi.

Конфиг сервера:

  • RHEL6
  • Апач 2.2
  • Джанго 1.7
  • Питон 2.6

журнал ошибок апача

[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1] mod_wsgi (pid=12827): Target WSGI script '/home/evtdb/FLWeb/FLWeb/wsgi.py' cannot be loaded as Python module.
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1] mod_wsgi (pid=12827): Exception occurred processing WSGI script '/home/evtdb/FLWeb/FLWeb/wsgi.py'.
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1] Traceback (most recent call last):
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1]   File "/home/evtdb/FLWeb/FLWeb/wsgi.py", line 21, in <module>
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1]     from django.core.wsgi import get_wsgi_application
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1] ImportError: No module named django.core.wsgi
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1] mod_wsgi (pid=12827): Target WSGI script '/home/evtdb/FLWeb/FLWeb/wsgi.py' cannot be loaded as Python module.
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1] mod_wsgi (pid=12827): Exception occurred processing WSGI script '/home/evtdb/FLWeb/FLWeb/wsgi.py'.
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1] Traceback (most recent call last):
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1]   File "/home/evtdb/FLWeb/FLWeb/wsgi.py", line 21, in <module>
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1]     from django.core.wsgi import get_wsgi_application
[Fri Feb 20 11:18:39 2015] [error] [client 127.0.0.1] ImportError: No module named django.core.wsgi

остальные важные файлы

flweb.conf

WSGIScriptAlias / /home/evtdb/FLWeb/FLWeb/wsgi.py

WSGIDaemonProcess localhost python-path=/home/evtdb/FLWeb:/usr/lib/python2.6/site-packages
WSGIProcessGroup localhost

<VirtualHost 127.0.0.1:8080>

        <Directory /home/evtdb/FLWeb/FLWeb>
        <Files wsgi.py>

                Order allow,deny
                Allow from all
        </Files>
        </Directory>

</VirtualHost>

wsgi.py

"""
WSGI config for FLWeb project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/
"""

import os


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

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

модули ldd/mod_wsgi.so

linux-vdso.so.1 =>  (0x00007fff6afff000)
    libpython2.6.so.1.0 => /usr/lib64/libpython2.6.so.1.0 (0x00007fd69fc02000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd69f9e5000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fd69f7e0000)
    libutil.so.1 => /lib64/libutil.so.1 (0x00007fd69f5dd000)
    libm.so.6 => /lib64/libm.so.6 (0x00007fd69f359000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fd69efc4000)
    /lib64/ld-linux-x86-64.so.2 (0x000000330aa00000)

Я подумал, что проблема может заключаться в том, что mod_wsgi кажется скомпилированным с lib64, поэтому я изменил путь python в flweb.conf на lib64, но это не сработало.

EDIT: я понимаю, что на сервере есть python 2.7 в /user/local/lib, и это версия python, в которой установлен django. Я изменил путь в файле conf, но теперь, думаю, мне нужно пересобрать mod_wsgi

EDIT2: Пытаюсь пересобрать mod_wsgi, возникает эта проблема

/usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC

согласно https://code.google.com/p/modwsgi/wiki/InstallationIssues — это конфликт между python, который был скомпилирован до 32-битной версии, и mod_wsgi до 64-битной версии.


person Pablo V.    schedule 20.02.2015    source источник
comment
print sys.path существует ли джанго?   -  person estobbart    schedule 20.02.2015
comment
Я не понял, что была установлена ​​​​другая версия Python (сделал РЕДАКТИРОВАТЬ)   -  person Pablo V.    schedule 23.02.2015
comment
python -c 'import django; print django.__file__' Я не уверен, что ваш путь настроен правильно. Питон, с которым он связан, не имеет значения, вы все равно можете предоставить альтернативный интерпретатор для запуска скрипта (скажем, virtualenv).   -  person estobbart    schedule 23.02.2015
comment
как сказано в редактировании, django установлен на python2.7 (/usr/local/lib/python2.7/site-packages/django/__init__.pyc). Проблема сейчас в том, что mod_wsgi скомпилирован с python2.6. Я пытаюсь перекомпилировать mod_wsgi, но у меня есть проблемы с смешиванием 32-битных и 64-битных пакетов.   -  person Pablo V.    schedule 23.02.2015
comment
Наконец, я пересобираю Python и mod_wsgi stackoverflow.com/questions/28681398/   -  person Pablo V.    schedule 25.02.2015