1

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

  • Я переместил свой проект 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 , когда пользователь не входит в оболочку?

2 ответа2

1

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

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

0

Во-первых, я бы следовал совету Грэма здесь: 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. НТН!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .