django-hosting.de

Django mit mod_python betreiben

Note

Hinweis: Die hier genannten Shell-Befehle (apt-get etc.) verlangen in der Regel root-Rechte von Nutzer.

Vorweg der Aufbauf des Dateisystems, für den diese Konfiguration gedacht ist, Änderungen sollten kein Problem sein, wenn man das Konzept verstanden hat.

/srv/vhosts/
           /mein_projekt/
                        /site_media/ # Die Mediendateien
                        /site_media/admin_media/ # Ein Symlink zu den Admin-Mediendateien
                        ...
                        manage.py
                        settings.py
                        urls.py

Die Lösung setzt einen Apache-Webserver mit installierten mod_python voraus. Unter Debian-Systemen (wie auch Ubuntu) installierst du mod_python mit dem Befehl:

apt-get install libapache2-mod-python
a2enmod mod_python

Vergiss nicht (auch nach anderen Änderungen der Apache-Konfiguration), den Apache-Webserver neu zu starten:

/etc/init.d/apache2 restart

Statische Dateien von einer Subdomain static.example.com ausliefern

In diesem Beispiel wird das Django-Projekt von der Hauptdomain example.com ausgeliefert, die statischen Mediendaten werden von einer Subdomain static.example.com ausgeliefert.

<VirtualHost *>

  ServerName   example.com
  ServerAlias  www.example.com

  <Location "/">
      SetHandler python-program
      PythonHandler django.core.handlers.modpython
      SetEnv DJANGO_SETTINGS_MODULE mein_projekt.settings
      PythonPath "['/srv/vhosts'] + sys.path"
      PythonDebug Off
  </Location>
</VirtualHost>

<VirtualHost *>
    ServerName   static.example.com
    DocumentRoot /srv/vhosts/mein_projekt/site_media
    Options -Indexes +FollowSymLinks
</VirtualHost>

Django Einstellungen in der settings.py

SITE_URL ='http://www.example.com/'
MEDIA_ROOT = '/srv/vhosts/mein_projekt/site_media/'
MEDIA_URL = 'http://static.example.com/'
ADMIN_MEDIA_PREFIX = 'http://static.example.com/admin_media/'

Statische Dateien von einem Unterverzeichnis example.com/static/ ausliefern

In diesem Beispiel wird das Django-Projekt von der Hauptdomain example.com ausgeliefert, die statischen Mediendaten werden von einem Unterverzeichnis example.com/site_media/ ausgeliefert.

<VirtualHost *>

  ServerName   example.com
  ServerAlias  www.example.com

  <Location "/">
      SetHandler python-program
      PythonHandler django.core.handlers.modpython
      SetEnv DJANGO_SETTINGS_MODULE mein_projekt.settings
      PythonPath "['/srv/vhosts'] + sys.path"
      PythonDebug Off
  </Location>

  Alias /site_media "/srv/vhosts/mein_projekt/site_media/"
  <Location "/site_media">
    SetHandler None
    Options -Indexes +FollowSymLinks
  </Location>

</VirtualHost>

Django Einstellungen in der settings.py

SITE_URL ='http://www.example.com/'
MEDIA_ROOT = '/srv/vhosts/mein_projekt/site_media/'
MEDIA_URL = 'http://www.example.com/site_media/'
ADMIN_MEDIA_PREFIX = 'http://www.example.com/site_media/admin_media/'
View Plain  |  Index  |  Home

Showing: head, History: head [5]