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