2016-12-06 3 views
1

Ошибка от апача после 504 страницыDjango Apache и Virtualenv ImportError: Нет модуль с именем сайта

[info] mod_wsgi (pid=): Python home /var/venv/mybox. 
[info] mod_wsgi (pid=): Initializing Python. 
ImportError: No module named site 

Это с трудом настроенного приложения.

<IfModule mod_wsgi.c> 
WSGIDaemonProcess myapp python-home=/var/venv/mybox 
WSGIProcessGroup myapp 
WSGIScriptAlias//var/www/html/web/myapp/wsgi.py 
WSGISocketPrefix /var/run/wsgi 

<Directory /var/www/html/web> 
<Files wsgi.py> 
Order deny,allow 
Allow from all 
</Files> 
</Directory> 
</IfModule> 

Последующий за каждым постом и учебником я могу. Я на CENTOS6. используя virutal ENV Python 2.7 системы по умолчанию окр на это 2,6

$ ldd /etc/httpd/modules/mod_wsgi.so 
    linux-vdso.so.1 => (0x00007ffc06174000) 

mywsgi.py

import os,sys  
from django.core.wsgi import get_wsgi_application  
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 
sys.path.insert(0,'/var/www/html/web') 
activate_this = '/var/venv/mybox/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
application = get_wsgi_application() 

PYHTONHOME не установлен

ответ

3

Документация для использования виртуальных сред с mod_wsgi можно найти по адресу:

Самое главное в вашем случае является раздел:

В этом разделе говорится:

When using a Python virtual environment with mod_wsgi, it is very important that it has been created using the same Python installation that mod_wsgi was originally compiled for. It is not possible to use a Python virtual environment to force mod_wsgi to use a different Python version, or even a different Python installation.

You cannot for example force mod_wsgi to use a Python virtual environment created using Python 3.5 when mod_wsgi was originally compiled for Python 2.7. This is because the Python library for the Python installation it was originally compiled against is linked directly into the mod_wsgi module.

Так что, скорее всего, происходит то, что mod_wsgi скомпилирован для Python 2.6. В этом случае вы не можете заставить его использовать виртуальную среду Python, созданную из Python 2.7. Когда вы это сделаете, вы получите сообщение об ошибке site.

Вам необходимо будет удалить этот mod_wsgi из системных пакетов и установить mod_wsgi из исходного кода, скомпилировав его с Python 2.7.Самый простой способ сделать это было бы использовать метод pip install, как описано в:

Run pip install установить его в виртуальной среде, а затем следуйте инструкциям в разделе «Подключение к установке Apache 'о настройке Apache для его использования.

+0

Не удается загрузить /var/venv/mybox/lib/python2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so в сервер: не удается открыть файл общих объектов : Доступ запрещен. Я попробовал изменить разрешение. – Jabda

+0

. Ваш профиль SELinux, скорее всего, не позволит Apache использовать материал в этом месте. Попробуйте создать виртуальную среду под ''/var/www''. –

+0

Установка mod_wsgi с использованием pip и перемещение virtualenv в/var/www. Это внутренний сайт, поэтому мы можем сделать этот компромисс – Jabda

1

это берется Фрон Documentation записи следующим образом: WSGIScriptAlias ​​//путь/to/mysite.com/mysite/wsgi.py WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite> 
<Files wsgi.py> 
Require all granted 
</Files> 
</Directory> 

и это специально для виртуальной окр, вам нужно написать путь к сайту packeges вашего питона виртуальных ENV:

WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python3.X/site-packages 

проблема также может быть в - PYTHONHOME

Change the location of the standard Python libraries. By default, the libraries are searched in prefix/lib/pythonversion and exec_prefix/lib/pythonversion, where prefix and exec_prefix are installation-dependent directories, both defaulting to /usr/local.

When PYTHONHOME is set to a single directory, its value replaces both prefix and exec_prefix. To specify different values for these, set PYTHONHOME to prefix:exec_prefix.

Попробуйте очистить ваш PYTHONHOME:

user$ export PYTHONHOME= 
+0

Я изначально следовал этой документации в T. Затем я попробовал блоги и учебники Грэма Дамплетона. Я всегда получаю ту же ошибку – Jabda

+0

попытаться изменить местоположение pythonhome –