Apache + WSGI + Python + Django me dando alguns erros estranhos

1

Aqui está um resumo do que fiz

  • Mudei meu projeto de django para /pymodules/honstreams
  • Eu instalei o apache2 e o apache2-dev
  • Eu instalei python brew, instale o Python-2.7.2 e mudei para ele
  • Eu coloquei PYTHONPATH para /pymodules em /etc/profile e confirmou que funciona
  • Eu compilei o mod-wsgi.so usando as versões corretas do python e do apache
  • Eu adicionei o módulo wsgi ao httpd.conf
  • Eu criei um wsgi_handler.py instruído por este tutorial . É isso:

    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()
    
  • Eu configurei o Apache VirtualHost instruído pelo mesmo tutorial. Eu editei /etc/apache2/sites-enabled/000-default para isso:

    <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>
    

Eu começo o apache sem erros. Eu tento acessar a pasta raiz de http e /var/log/apache2/error.log repete:

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

Para ser perfeitamente honesto, não tenho a menor ideia do que fazer a seguir. Eu não sei o que <prefix> ou <exec_prefix> é e o Google não está sendo particularmente útil. Eu estou supondo que preciso definir a variável PYTHONHOME para o usuário www-data.

Também não estou tentando importar um módulo chamado "site" em qualquer um dos meus códigos, em qualquer lugar, nunca. Portanto, eu suponho que ele se consertará se eu corrigir os erros acima.

Qualquer ajuda seria apreciada!


EDIT: eu definir PYTHONHOME para /root/.pythonbrew/pythons/Python-2.7.2 em /etc/profile. Estou recebendo exatamente o mesmo erro de antes. Faz /etc/profile tem algum efeito quando um usuário não está logado em um shell?

Hubro
fonte

Respostas:

1

Eu sabia o tempo todo que minhas permissões estavam corretas na minha instalação do Python. O que eu não sabia é que, se uma pasta no topo da hierarquia tivesse permissões mais restritivas, isso causaria impacto.

A solução era garantir que toda a cadeia de diretórios, do root até a instalação do python, tivesse permissões de rx.

Hubro
fonte
0

Como primeiro tiro, eu seguiria o conselho de Graham aqui: https://stackoverflow.com/questions/6946413/interesting-problem-with-python-2-7-on-centos-is-this-anissue-with-my-build/6948092#6948092 . já que você está usando pythonbrew, para construir com opções use --configure = "- enable-shared --whatever-other-options-you-need-go-here". você pode ou não precisar linkar um pouco suas bibliotecas e adicionar explicitamente um LD_LIBRARY_PATH ao seu .bashrc. hth!

egbutter
fonte