Apache + WSGI + Python + Django дает мне странные ошибки

2082
Hubro

Вот краткое изложение того, что я сделал

  • Я переместил свой проект Django в /pymodules/honstreams
  • Я установил apache2 и apache2-dev
  • Я установил pythonbrew, установил Python-2.7.2 и переключился на него
  • Я установил PYTHONPATH /pymodulesв /etc/profileи подтвердил, что он работает
  • Я скомпилировал mod-wsgi.so, используя правильные версии Python и Apache
  • Я добавил модуль wsgi в httpd.conf
  • Я создал wsgi_handler.py в соответствии с инструкциями этого руководства . Это оно:

    import sys import os  sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') os.environ['DJANGO_SETTINGS_MODULE'] = 'honstreams.settings'  import django.core.handlers.wsgi  application = django.core.handlers.wsgi.WSGIHandler() 
  • Я настроил apache VirtualHost в соответствии с тем же руководством. Я отредактировал /etc/apache2/sites-enabled/000-defaultэто:

    <VirtualHost *>  ServerName www.honstreams.com ServerAlias *honstreams.com  Alias /admin_media /root/.pythonbrew/pythons/Python-2.7.2/lib/python2.7/site-packages/django/contrib/ad$  <Location /admin_media> Order allow,deny Allow from all </Location>  Alias /media /root/honstreams/website/media  <Location /media> Order allow,deny Allow from all </Location>  WSGIScriptAlias / /root/honstreams/wsgi_handler.py  WSGIDaemonProcess honstreams user=www-data group=www-data processes=1 threads=10 WSGIProcessGroup honstreams  </VirtualHost> 

Я запускаю apache без ошибок. Я пытаюсь получить доступ к корневой папке с http и /var/log/apache2/error.logповторяет:

Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] ImportError: No module named site 

Честно говоря, я понятия не имею, что делать дальше. Я не знаю, что <prefix>или <exec_prefix>есть, и Google не особенно помогает. Я предполагаю, что мне нужно установить переменную PYTHONHOME для пользовательских www-данных.

Также я не пытаюсь импортировать модуль с именем "site" в любой из моих кодов, где угодно, когда-либо. Поэтому я предполагаю, что это исправит себя, если я исправлю вышеупомянутые ошибки.

Любая помощь будет оценена!


РЕДАКТИРОВАТЬ: Я установил PYTHONHOME /root/.pythonbrew/pythons/Python-2.7.2в /etc/profile. Я получаю ту же ошибку, что и раньше. Имеет ли /etc/profileкакой-либо эффект, когда пользователь не вошел в оболочку?

1

2 ответа на вопрос

1
Hubro

Я все время знал, что мои разрешения были правильными в моей установке Python. Чего я не знал, так это того, что если бы папка, находящаяся выше в иерархии, имела более ограничивающие разрешения, это оказало бы влияние.

Решение состояло в том, чтобы вся цепочка каталогов от root до моей установки на python имела разрешения rx.

0
egbutter

Во-первых, я бы следовал совету Грэма здесь: https://stackoverflow.com/questions/6946413/interesting-problem-with-python-2-7-on-centos-is-this-an-issue-with- my-build / 6948092 # 6948092 . так как вы используете pythonbrew, для сборки с опциями используйте --configure = "- enable-shared --wh what-other-options-you-need-go-here". вам может понадобиться или не понадобиться символическая ссылка вокруг ваших библиотек и явное добавление LD_LIBRARY_PATH в ваш .bashrc. НТН!

Похожие вопросы