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

1

Aqui está um resumo do que eu fiz

  • Mudei meu projeto do django para /pymodules/honstreams
  • Eu instalei o apache2 e o apache2-dev
  • Eu instalei o pythonbrew, instalei o Python-2.7.2 e mudei para ele
  • Configurei PYTHONPATH como /pymodules em /etc/profile e confirmei 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()
    
  • 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. 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.

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

Qualquer ajuda seria apreciada!

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

    
por Hubro 06.08.2011 / 13:45

2 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 mais alta na hierarquia tivesse permissões mais restritas, isso causaria um 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.

    
por 06.08.2011 / 17:22
0

Como um primeiro tiro, eu seguiria o conselho de Graham aqui: link . 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!

    
por 06.08.2011 / 16:02