Python Webprogrammierung
Inhaltsverzeichnis
1. Einleitung
Kein Thema ist so umstritten wie die Python-Webentwicklung. Einige glauben noch immer, dass es da nichts Gescheites gibt. Der junge WSGI-Standard zeigt jedoch auf, dass Python im Web funktioniert, sehr schnell ist, eine Zukunft hat und überhaupt nicht in den Kinderschuhen steckt. Ganz im Gegenteil.
2. Die Wahl des passenden Frameworks
Grundsätzlich gibt es zwei Arten von Frameworks. Einmal die Rudnumsorglos-Varianten wie Django, die reichlich Features bieten. Auf der anderen Seite gibt es die Minimalisten. Was nun für jeden einzelnen das beste ist kann pauschal nicht beantwortet werden. Es ist abhängig davon welche Art von Anwendung Sie entwickeln möchte und wie viel Zeit Sie investieren können. Wenn Sie zum Beispiel ein Content-Management System entwickelt möchten sind Full-Featured Framework wie Django gut geeignet, für eine kleine Informationsseite jedoch eher weniger.
Minimale Frameworks sind besser anpassbar wie die großen, auch die Einarbeitung ist in der Regel etwas einfacher. Jedoch müssen Sie bei kleinen Frameworks damit rechnen das Sie die Dokumentation falls überhaupt vorhanden Mühsam selbst zusammen suchen müssen.
3. Was ist Karrigell und warum soll Karrigell erklärt werden?
Um Ihnen als Interessierten Anwender das Thema Webentwicklung in Python etwas näher zu bringen habe ich mich bewusst für Karrigell entschieden da es ein Kompromiss zwischen einem Full-Featured Framework und einem minimalen Framwork ist. Es bietet einen eigenständigen Server kann aber auch ohne Probleme mit einem Webhosting verwendet werden. Ein nicht zu unterschätzender Vorteil von Karrigell ist das es ohne lange und aufwendige Konfigurationen einsetzbar ist. Auch das Entwickeln von Anwendungen auf einem lokalen System ist dank des mitgelieferten Servers sehr einfach. Sie benötigen für den Betrieb von Karrigell nur eine lokale Installation von Python. Dies ist bei fast jeder Linux Distribution der Fall. Leider ist Karrigell nicht WSGI konform, dies hat zur folge das es nicht immer für den Shared-Webhostingbereiche geeignet ist.
Im folgenden werde ich Ihnen erklären wie Sie Karrigell auf seinem Vserver und Webhosting installieren und eine kleine Anwendung erstellen.
4. Die Installation von Karrigell
Die folgenden Schritte zum installieren der Python Serverumgebung sind beschrieben für eine Debian Installation. Das Vorgehen bei Ihrer Distributionen kann daher abweichend sein. Die Installation von Karrigell ist sehr einfach. Das Programm wurde in Python programmiert und benötigt zur Ausführung nur Python. Sollte auf Ihrem vServer noch keine Python Umgebung vorhanden sein können Sie diese einfach nachinstallieren. Beachten Sie bitte das root Rechte erforderlich sind!
apt-get install python-all
Ab jetzt sind keine root Rechte mehr notwendig!
Als nächsten Schritt laden Sie die Datei Karrigell-3.1.1.tar.gz herunter von http://sourceforge.net/projects/karrigell/files/ und entpacken diese mit:
tar xzf Karrigell-3.1.1.tar.gz
Karrigell ist nun erfolgreich auf Ihrem System installiert.
Die Einrichtung von Karrigell auf einem vServer
Die Einrichtung ist recht einfach. Im Karrigell Hauptordner finden Sie unter anderem die Ordner www und data. Im Ordner www finden Sie Beispiele die als Standartseite (localhost) dienen. Protokolle werden unter anderem im Ordner data abgelegt. Nun legen Sie einen Virtuellen Host an. Dazu wechseln Sie in den Karrigell Ordner. Nehmen wir an Sie möchten nun für die Domain domain.ltd einen Virtuellen Host erstellen. Dazu erstellen Sie einen Ordner im Hauptverzeichnis von Karrigell für die Inhalte durch die Eingabe von:
mkdir domain
Für die Informationen die Karrigell zu diesem Virtuellen Host ablegt erstellen Sie noch im data Ordner ein Verzeichnis durch die Eingabe im Hauptverzeichnis von:
mkdir data/domain
Nun müssen Sie eine Konfiguration erstellen. Dazu kopieren Sie die Standard Konfiguration in das Verzeichnis data/domain. Führen Sie dazu im Karrigell Hauptverzeichnis diesem Befehl aus:
cp default_host_conf.py data/domain/conf.py
Jetzt müssen Sie die kopierte Standard Konfiguration noch anpassen. Öffne diese mit einem beliebigen Editor wie zum Beispiel nano und passen Sie die Einträge root_dir und data_dir an. Das ganze sollte danach so aussehen:
root_dir = os.path.join(server_dir,"domain") data_dir = os.path.join(server_dir, "data","domain")
Nun müssen Sie die hosts Datei im Karrigell Hauptverzeichnis anpassen. Diese Datei wurde noch nicht erzeugt weil diese beim ersten Start das Servers automatisch geschrieben wird. Der Einfachheit halber starten Sie Karrigell um eine hosts Datei zu bekommen. Sie starten Karrigell durch die Eingabe von:
python karrigell.py
Beenden Sie nun den Karrigell Server wieder durch die Eingabe von Strg+C. Jetzt sollte die Datei hosts vorhanden sein. Fügen Sie dort am Ende der Datei mit einem beliebigen Editor folgende Zeile ein:
domain.ltd domain/conf.py
Nun können Sie Karrigell starten und nutzen.
Die Installation von Karrigell auf einem Webhosting Paket
Natürlich können Sie Karrigell auch ohne einen vServer mit einem Netcup Webhosting Paket nutzen. Der einzige Unterschied ist die Tatsache das Sie sich nicht um die Administration eines gesamten Servers kümmern müssen. Erforderlich für die nutzung von Karrigell auf einem Webhosting ist das mod_python aktiv ist. Dies ist im „Business 100G“ und dem „Reseller 100 G“ Paket der Fall. Theoretisch ist die nutzung von Karrigell auch auf Webhosting Paketen ohne mod_python möglich im cgi Modus jedoch rät der Author dringend davon ab da die Performance sehr schlecht ist und die Installation nicht immer erfolgreich verläuft. Um Karrigell zu installieren laden Sie zuerst das Programm herunter. Sie finden Karrigell unter http://sourceforge.net/projects/karrigell/files/ Laden Sie hier die Datei Karrigell-Apache-3.1.1.tar.gz herunter und entpacken diese im Anschluss.
Wechseln Sie nun mit einem Dateimanager Ihrer Wahl in das entpackte Verzeichnis und löschen dort die Dateien .htaccess_cgi und .htacces_mod_python. Sollten diese Dateien nicht sichtbar sein richten Sie bitte Ihren Dateimanager so ein das dieser auch versteckte Dateien anzeigt. Nun öffnen Sie die Datei .htacces in einem Texteditor und ersetzen den Inhalt der Datei durch den folgenden:
# this is the .htaccess file for mod_python SetHandler mod_python # module mod_python_handler.py is in folder mod_python PythonHandler karrigell/apache/mod_python/mod_python_handler PythonDebug On
Jetzt können Sie den gesamten Inhalt des Ordners auf Ihren Webspace hochladen. Nach dem Upload ist noch eine kleine Anpassung notwendig damit Karrigell lauffähig ist. Ändern Sie mit Ihrem ftp Programm die Rechte des Ordners data im Verzeichniss karrigell/apache auf 777. Das ist unbedingt erforderlich damit Krrigell an dieser stelle Dateien ablegen kann wie Datenbanken, Cache und ähnliches.
Nun können Sie die Karrigell Installation testen und in Ihrem Browser die Adresse Ihrer Installation aufrufen. Zum Schluss sollten Sie den Ordner karrigell noch mit einem Verzeichnisschutz ausstatten damit kein unbefugter Zugriff auf die Inhalte hat.
Hallo Welt
Nach der erfolgreichen Installation von Karrigell möchten Sie jetzt bestimmt Ihr ersten Programm schreiben. Erstellen Sie dazu einfach in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen hallo.py. In diese Datei schreiben Sie nun einfach den folgenden Inhalt:
print „Hallo Welt!“
Speicheren Sie die Datei und besuchen Sie in Ihrem Browser die Adresse <domain>/hallo.py nun wird in Ihrem Browser „Hallo Welt“ angezeigt.
An dieser Stelle möchte ich Ihnen erklären wie Karrigell arbeitet. Wenn Sie im Browser Ihre Seite aufrufen führt Karrigell den Python Code aus und liefert die Ausgaben welche mit einer Print Anweisung geschrieben werden an den Browser als html Dokument weiter. Es können im Prinzip alle Funktionen von Python verwendet werden. Um an dieser Stelle den Rahmen dieser kurzen Einführung nicht zu sprengen verweise ich Sie auf die Dokumentatio von Karrigell welche Sie unter http://www.karrigell.fr finden. Eine Übersicht mit Beispielen finden Sie unter http://www.karrigell.fr/doc/en/tour/tour_en.pih
Debug
Erstellte Anwendungen können sehr leicht geprüft werden. Bei einem Fehler in einem Programm wird eine entsprechende Meldung im Browser angezeigt. Die Debug Funktion kann auch abgeschaltet werden. Ein kleines Beispiel zeigt die Debug Funktionalität.
Erstellen Sie ein einfaches Programm mit einem Fehler:
print blah
Rufen Sie dieses Programm nun in Ihrem Browser auf erhalten Sie diese Meldung:
Error in hallo.py Line 2 print blah NameError: name 'blah' is not defined Traceback (most recent call last): File "/homez.151/karrigel/www/karrigell/core/HTTP.py", line 335, in process_request target.run(self.ns) File "/homez.151/karrigel/www/karrigell/core/k_target.py", line 390, in run exec (self.py_code,namespace) File "", line 2, in ? NameError: name 'blah' is not defined
Sicherheit
Das Thema Sicherheit soll hier nur kurz besprochen werden. Wenn Sie Karrigell auf einem Webhosting nutzen müssen Sie sich keine großen Gedanken machen. Achten Sie jedoch darauf das der karrigell Ordner nicht von unbefugten einsehbar ist. Schützen Sie diesen durch einen Verzeichnisschutz! Bei dem in Karrigell enthaltenen Server sind erst einmal keine Besonderheiten zu beachten, außer das dieser nicht als root laufen sollte. Grundsätzlich gelten die selben Regeln wie auch bei der Nutzung von PHP. Der Debug Modus sollte aus sein, so können Fehler in Skripten nicht so einfach gefunden werden. Allgemein lässt sich sagen das die größte Sicherheitslücke das eigene Programm ist. Durch unsaubere Programmierung könnte zum Beispiel Python Code aus fremden Quellen ausgeführt werden.
Schlusswort / Links
Sie sind nun am Ende dieser Anleitung angekommen. Sie haben erfolgreich eine Karrigell Umgebung eingerichtet und sind in der Lage Ihre eigenen Webprogramme zu programmieren.
Sollten Sie einmal auf Probleme bei der Entwicklung Ihrer Anwendungen stoßen hilft Ihnen die ausführliche Dokumentation auf der Offiziellen Karrigell Seite oder die freundliche Karrigell Community.
Sollten Sie zu diesem Artikel Fragen oder Anregungen haben, oder einen Fehler im Artikel gefunden haben können Sie gerne mit dem Verfasser über seine Internetpräsenz Kontakt aufnehmen. Mir bleibt nun noch Ihnen Viel Erfolg bei Ihren Projekten zu wünschen.
Links:
Offizielle Seite: https://karrigell.sourceforge.net/en/index.html
Dokumentation: https://karrigell.sourceforge.net/en/reference.html
Python Handbuch: http://de.wikibooks.org/wiki/Python_unter_Linux:_ALLES
Eingesendet von Christian H. - http://www.jeegeek.net/