Apache + WSGI + Python + Django gibt mir seltsame Fehler

2200
Hubro

Hier ist eine Zusammenfassung dessen, was ich getan habe

  • Ich zog mein Django-Projekt nach /pymodules/honstreams
  • Ich habe apache2 und apache2-dev installiert
  • Ich habe Pythonbrew installiert, Python-2.7.2 installiert und darauf umgestellt
  • Ich habe festgelegt PYTHONPATH zu /pymodulesin /etc/profileund bestätigt, dass es funktioniert
  • Ich habe mod-wsgi.so mit den korrekten Python- und Apache-Versionen kompiliert
  • Ich habe das wsgi-Modul zu httpd.conf hinzugefügt
  • Ich habe ein wsgi_handler.py erstellt, das in diesem Tutorial beschrieben wird . Das ist es:

    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() 
  • Ich habe Apache VirtualHost konfiguriert, das von demselben Tutorial angewiesen wurde. Ich habe dazu editiert /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> 

Ich starte Apache ohne Fehler. Ich versuche, von http aus auf den Stammordner zuzugreifen, und /var/log/apache2/error.logwiederholt:

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 

Um ganz ehrlich zu sein, habe ich keine Ahnung, was als nächstes zu tun ist. Ich weiß nicht was <prefix>oder <exec_prefix>ist und Google ist nicht besonders hilfreich. Ich schätze, ich muss die PYTHONHOME-Variable für den Benutzer www-data einstellen.

Ich versuche auch nicht, ein Modul mit dem Namen "site" in irgendeinen Code meines Codes zu importieren. Daher gehe ich davon aus, dass es sich selbst beheben wird, wenn ich die obigen Fehler behebe.

Jede Hilfe wäre dankbar!


EDIT: Ich habe festgelegt PYTHON zu /root/.pythonbrew/pythons/Python-2.7.2in /etc/profile. Ich bekomme genau den gleichen Fehler wie zuvor. Hat /etc/profilesogar eine Wirkung, wenn ein Benutzer nicht an einer Shell angemeldet ist?

1

2 Antworten auf die Frage

1
Hubro

Ich wusste die ganze Zeit über, dass meine Berechtigungen in meiner Python-Installation korrekt waren. Was ich nicht wusste, ist, dass ein Ordner, der weiter oben in der Hierarchie über mehr einschränkende Berechtigungen verfügt, Auswirkungen hätte.

Die Lösung bestand darin, sicherzustellen, dass die gesamte Verzeichniskette vom Stammverzeichnis bis zur Python-Installation über RX-Berechtigungen verfügte.

0
egbutter

Als ersten Schuss würde ich Grahams Rat hier befolgen: https://stackoverflow.com/questions/6946413/interesting-problem-with-python-2-7-on-centos-is-thisan-ueusmit-mit- mein-build / 6948092 # 6948092 . Da Sie Pythonbrew verwenden, verwenden Sie zum Erstellen von Optionen --configure = "- enable-shared --whatever-other-options-you-need-go-here". Möglicherweise müssen Sie einen Link zu Ihren Bibliotheken erstellen und müssen möglicherweise ein LD_LIBRARY_PATH explizit zu Ihrer .bashrc hinzufügen. hth!