Wagtail für Shared Hosting vorbereiten (wsgi / Passenger / Apache

Wagtail installieren

Um Django Produktiv zu betreiben sollte die wsgi Schnittstelle benutzt werden. Dies kann auf unterschiedlich weiße erfolgen:
Hier gehts zur Einrichtung für mod_wsgi (Apache)
und so gehts mit gunicorn

Im folgenden soll aber auf die Installation unter Passenger eingegangen werden.

lokale Installation und Konfiguration (optional)

Das installieren unter Ubuntu ist recht einfach und wird hier beschrieben:
https://www.phusionpassenger.com/library/install/apache/install/oss/bionic/

Danach muss der virtual host für Apache erstellt werden
/etc/apache2/available-sites/wtsite.conf:

PassengerPython /usr/bin/python3.7 

<VirtualHost *:777>
    ServerName localhost

    # Tell Apache and Passenger where your app's code directory is
    DocumentRoot /var/www/py/wtsite/
    PassengerAppRoot /var/www/py/wtsite/project

    # Tell Passenger that your app is a Python app
    PassengerAppType wsgi
    PassengerStartupFile passenger_wsgi.py

    # Relax Apache security settings
    <Directory /var/www/py/djangocms/wtsite>
      Allow from all
      Options -MultiViews
      # Uncomment this if you're on Apache ≥ 2.4:
      #Require all granted
    </Directory>
</VirtualHost>

und dann mit a2ensite wtsite.conf aktivieren.

Erstellen der wsgi Applikation

Nun muss noch die passenger_wsgi.py im appverzeichniss angelegt werden:

import sys, os
print("Python version") #just for debugging
print (sys.version) #nur für debugging
ApplicationDirectory = 'app'
ApplicationName = 'wt_site'
# wenn das ganze später bewegt werden soll ist es wichtig hier den Pfad zu dem python enviroment anzugeben
sys.path.append("/var/www/py/wtsite/env/lib/python3.7/site-packages")
os.chdir(os.path.join(os.getcwd(), ApplicationDirectory))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', ApplicationName + '.settings') os.environ.setdefault('DJANGO_SETTINGS_MODULE', settingApplicationName + '.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Die Applikation sollte nun unter localhost:777 aufrufbar sein.(optional)

Die Website sollte sich nun auch auf ein Shared Hosting verschieben lassen Dabei muss beachtet werden das auch das env verzeichniss auf dem Shared Hosting vorhanden sein muss das passenger_wsgi.py ja darauf verweist.
Dies kann entweder (per git) mitkopiert werden oder es kann auf dem shared hosting erzeugt werden

Im folgenden wird dann nochmal beispielhaft beschrieben wie die Installation auf einem shared hosting erfolgt