Apache + WSGI + Python + Django에서 이상한 오류가 발생했습니다.


1

여기 내가 한 일에 대한 요약이 있습니다.

  • 장고 프로젝트를 /pymodules/honstreams
  • apache2와 apache2-dev를 설치했습니다
  • pythonbrew를 설치하고 Python-2.7.2를 설치하고 전환했습니다.
  • PYTHONPATH를 /pymodulesin으로 설정 /etc/profile하고 작동하는지 확인했습니다.
  • 올바른 파이썬 및 아파치 버전을 사용하여 mod-wsgi.so를 컴파일했습니다.
  • httpd.conf에 wsgi 모듈을 추가했습니다
  • 이 튜토리얼에서 지시 한 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()
    
  • 동일한 튜토리얼에서 지시 한 아파치 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>
    

오류없이 아파치를 시작합니다. 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>이며, 구글은 특히 도움이되지 않습니다. 사용자 www-data에 PYTHONHOME 변수를 설정해야한다고 생각합니다.

또한 내 코드 중 어느 곳에서나 "site"라는 모듈을 가져 오려고하지 않습니다. 따라서 위의 오류를 수정하면 자체적으로 수정된다고 가정합니다.

도움을 주시면 감사하겠습니다!


편집 : PYTHONHOME을 /root/.pythonbrew/pythons/Python-2.7.2로 설정 했습니다 /etc/profile. 이전과 똑같은 오류가 발생합니다. 않습니다 /etc/profile심지어는 사용자가 쉘에 로그인하지 않을 어떤 영향을?

답변:


1

나는 파이썬 설치에서 내 권한이 올바르다는 것을 알았습니다. 내가 알지 못하는 것은 계층 구조에서 상위 폴더가 더 많은 권한을 제한하면 영향을 줄 것입니다.

해결책은 루트에서 내 파이썬 설치까지 전체 디렉토리 체인에 rx 권한이 있는지 확인하는 것이 었습니다.


0

첫 번째 샷으로 나는 Graham의 조언을 따르겠다. https : //.com/questions/6946413/interesting-problem-with-python-2-7-on-centos-is-this-an-issue-with- my-build / 6948092 # 6948092 . pythonbrew를 사용하고 있으므로 옵션을 사용하여 빌드하려면 --configure = "-enable-shared --whatever-other-options-you-need-go-here"를 사용하십시오. 라이브러리 주위를 약간 심볼릭 링크하고 LD_LIBRARY_PATH를 .bashrc에 명시 적으로 추가해야 할 수도 있습니다. hth!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.