Setup für Django

Um Django auf unserem Webspace zu nutzen, befolgen Sie die bitte die nachfolgenden Schritte. Diese sind als Anhaltspunkte zu sehen. Bei Anpassungen an die eigenen Gegebenheiten (anderer Pfad als /, ...) sind weitere Änderungen durchzuführen.


Inhalt


Setup für Django

  1. Stellen Sie in LiveConfig den Pfad der Domain(s) korrekt ein. Wir empfehlen folgendes Schema:
    • example.com zeigt auf /examplecom
    • www.example.com zeigt auf /examplecom
    • weitere Subdomains nach Wahl auf /examplecom.subdomain, oder direkt /subdomain
    • Die Verzeichnisse entsprechen dann im FTP-Account /htdocs/examplecom bzw. /htdocs/examplecom.subdomain!
  2. Nutzen Sie nun den SSH-Zugriff, um sich mit Ihren Zugangsdaten am Server anzumelden.
  3. Laden Sie Ihre Python-Anwendung in das Zielverzeichnis der Domain auf den Server. Folgende Verzeichnisstruktur ist zu empfehlen:
    • /priv/examplecom: Der Sourcecode des Django-Projekts, indem sich Ihre manage.py befindet.
    • /htdocs/examplecom: alle Medien-Daten (CSS, Bilder, Uploads, …)
  4. Erstellen Sie nun die VirtualEnv-Umgebung, über die Sie Django sowie die von Ihnen benötigten weiteren Python-Pakete verwalten.
      python3 -m venv ~/priv/venv
    

    Somit wird im Ordner ~/priv/venv eine neue Python3-Umgebung erstellt.

    • Aktivieren Sie diese VirtualEnv, um damit zu arbeiten:
      source ~/priv/venv/bin/activate
      

      Ist dies erfolgreich, so ändert sich der Prompt und zeigt dann die aktive VirtualEnv an:

      ssd123@django1:~$ source priv/venv/bin/activate
      (venv) ssd123@django1:~$
      
    • Nun können Sie mit pip die von Ihnen gewünschten und benötigten Python-Module, beispielsweise Django, installieren:
      pip install -U Django mysqlclient
      
  5. Nachdem Sie Ihre VirtualEnv-Umgebung vorbereitet haben, hinterlegen Sie in Ihrer settings.py Datei die Verbindung zur MySQL-Datenbank. Nutzen Sie in Ihrer settings.py die von Ihnen gewünschten Konfigurationseinstellungen, setzen jedoch das MEDIA_ROOT-Verzeichnis auf eines, das der Webserver einsehen kann. Dies kann beispielsweise mit folgendem Code-Snippet dynamisch erfolgen:
    import os
    PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
    MEDIA_ROOT = os.path.abspath(os.path.join(PROJECT_ROOT, "../../htdocs/examplecom"))
    
  6. Abschließend nutzen Sie python manage.py migrate, um Ihre Datenbank mit Inhalten zu füllen.
  7. Speichern Sie folgende .htaccess-Datei im öffentlichen Zielverzeichnis der Domain (/htdocs/examplecom):
    Options +ExecCGI
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /app.wsgi/$1 [QSA,L]
    
  8. Legen Sie im selben Ordner folgende app.wsgi ab:
    import sys, os
    sys.path.insert(0, '/var/www/USERNAME/priv/examplecom')
    sys.path.insert(0, '/var/www/USERNAME/priv/venv/lib/python3.7/site-packages')
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()
    

    Die app.wsgi muss außerdem ausführbar gemacht werden (chmod 0755).

  9. Rufen Sie die Webseite im Browser auf:
    • wird die Seite erfolgreich angezeigt: Herzlichen Glückwunsch!
    • erhalten Sie Fehler, finden Sie auf dieser Seite weitere Hinweise.

USERNAME ist der tatsächliche Benutzername Ihres Hosting-Accounts, z.B. ssd1234 oder mars1234.