So habe ich Django mit Phusion Passenger auf Webhosting 8000 zum laufen gebracht .
Zuerst ein Ordner für das Projekt auf die Entwicklungsmachine anlegen.
$ mkdir webapp
$ cd webapp
Dann ein Virtualenv erzeugen und die nötige Python-Abhängigkeiten mit pip installieren.
$ python3 -m virtualenv venv
$ source venv/bin/activate
Für diese Demo, wird als Beispiel denn Django installiert
(venv)$ pip install Django
Nun kann das Django-Projekt gestartet werden
(venv)$ django-admin startproject helloworld
Die Passenger Datei wird mit folgeden Python-Anweisungen im Ordner httpdocs/webapp angelegt:
import sys, os
ApplicationDirectory = 'helloworld'
ApplicationName = 'helloworld'
os.chdir(os.path.join(os.getcwd(), ApplicationDirectory))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', ApplicationName + '.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Auf die Entwicklungsmachine, haben wir nun die folgende Struktur
webapp
├── venv
├── helloworld
└── passenger_wsgi.py
Nun wird per FTP der Ordner webapp/ aus Entwicklungsumgebung zu httpdocs/ auf dem Webserver kopiert.
Auf dem Webserver, haben wir nun die folgende Struktur
httpdocs
└── webapp
├── venv
├── helloworld
└── passenger_wsgi.py
Die Python-Abhängigkeiten sind an diese Stellen noch nicht auf dem Serververfügbar, da die mit der Passenger-Datei im gleichen Ordner untergebracht werden mussen.
Mit dem folgenden symbolischen Verweis wird alle installierten Abhängigkeiten im Ordner webapp/ verfügbar. Dafür, sich per ssh auf Server einlogen und im bash folgende command ausführen:
§ ln -sr httpdocs/webapp/venv/lib/python3.5/site-packages/* httpdocs/webapp && rm httpdocs/webapp/*.dist-info
Nun können im WCP die Python-Eingenschaften angepasst werden und Python aktivieren.
In diesen Beispiel, haben wir httpdocs/webapp als ApllicationRoot.
Das DocumentRoot wird ebenfalls im Hosting-Einstellungen angepasst und zeigt hier auf httpdocs/webapp/helloworld.
--
Grüße