Hallo, ich habe mich die letzten Wochen intensiv mit der Webentwicklung in Python beschäftigt und möchte nun mein Wissen mit euch teilen und euch zeigen wie man einfach mit Python Dynamische Webinhalte erstellen kann.
Inhalt:
- Einleitung
- Die Wahl des passenden Frameworks
- Was ist Karrigell und warum soll Karrigell erklärt werden
- Die Installation von Karrigell
- Die Einrichtung von Karrigell
- Hallo Welt
- Debug
- Sicherheit
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 Runumsorglos-Variante 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 man entwickeln möchte, wie viel Zeit investiert werden soll. Wenn zum Beispiel ein Content-Management System entwickelt werden soll 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 muss man bei kleinen Frameworks damit rechnen das man sich seine Dokumentation wenn vorhanden Mühsam zusammensuchen muss.
3. Was ist Karrigell und warum soll Karrigell erklärt werden?
Um den interessierten das Thema Webentwicklung in Python nahe zu bringen habe ich mich bewusst für Karrigell entschieden da es ein komplettes System ist. Es bietet einen eigenständigen Server kann aber auch ohne Probleme mit Apache verwendet werden. Der größte Vorteil von Karrigell ist das es sehr gut für Einsteiger geeignet ist, alleine schon aus dem Grund das lange und aufwendige Konfigurationen entfallen und sofort angefangen werden kann. Leider ergeben sich auch zwei große Nachteile zum einen ist Karrigell nicht WSGI konform wo durch es in der Regel nicht für den Shared-Webhostingbereich geeignet ist.
Im folgenden werde ich erklären wie man Karrigell auf seinem Vserver installiert und eine kleine Anwendung schreibt. Wer Karrigell mit seinem Apache nutzen möchte findet die notwendigen Informationen in der offiziellen Dokumentation.
4. Die Installation von Karrigell
Die Installation von Karrigell ist sehr einfach. Das Programm ist geschrieben in Python und benötigt zum Ausführen Python. Als erstes müssen wir unseren Debian Host vorbereiten indem wir Python installieren mit einem
Ab jetzt sind keine root Rechte mehr notwendig!
Als nächstes Laden wir Karrigell runter mit
wget http://sourceforge.net/projects/karrigell/files/Full%20package/Karrigell-3.0.3/Karrigell-3.0.3.tar.gz/download
und entpacken es mit
tar xzf [URL='http://sourceforge.net/projects/karrigell/files/Full%20package/Karrigell-3.0.3/Karrigell-3.0.3.tar.gz/download']Karrigell-3.0.3.tar.gz[/URL]
Karrigell ist nun erfolgreich auf dem System installiert.
5. Die Einrichtung von Karrigell
Die Einrichtung ist recht einfach. Im Karrigell Hauptordner befinden sich unter anderem die Ordner www und data im www Ordner befinden sich Beispiele die als Defaultseite dienen. Protokolle werden unter anderem im data Ordner gespeichert. Nun wollen wir uns einen Virtuellen Host anlegen. Dazu wechseln wir in den Karrigell Ordner. Wir wollen uns nun für die Domain domain.ltd erstellen. Dazu erstellen wir uns erst einen Ordner für die Inhalte mit einem
danach noch den data Ordner mit
Als nächstes ist es Notwendig eine Konfiguration zu erstellen. Dazu kopieren wir uns die Default Konfiguration in unseren domain Ordner mit einem
Jetzt passen wir noch unsere so eben kopierte conf.py an. Öffne diese am besten mit nano oder einem beliebigen anderen Editor und passe 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 wir noch die hosts Datei im Karrigell Hauptverzeichnis anpassen. Diese Datei wurde noch nicht erzeugt weil diese erst beim ersten Start das Servers geschrieben wird. Der Einfachheit halber starten wir Karrigell jetzt einfach einmal um unsere hosts zu bekommen. Starte Karrigell einfach durch die Eingabe von:
beenden kannst du den Server wieder durch die Eingabe von Strg+C.
Jetzt sollte die hosts vorhanden sein. Wir fügen noch folgende Zeile ein:
Nun können wir Karrigell starten und unsere Domain domain.ltd nutzen.
6. Hallo Welt
Erstelle in deinem Domain Ordner einfach eine Datei namens hallo.py und schreibe folgende Zeile hinein:
Speichere das ganze und besuche jetzt in deinem Browser deine erstellte Domain. In Diesem Fall http://domain.ltd/hallo.py . Im Browser bekommst du nun „Hallo Welt“ angezeigt.
Kurz erklärt bekommt dein Browser eine html Seite erstellt aus deinen print Anweisungen. Es können im Prinzip alle Funktionen von Python verwendet werden. Auch statische html Seiten können eingebunden werden als Beispiel einen kleinen header
header.html:
hallo.py:
Eine einfache Übersicht mit einigen einfach zu verstehenden Beispielen findest du unter http://www.karrigell.fr/doc/en/tour/tour_en.pih
7. Debug
Erstellte Anwendungen können sehr leicht geprüft werden. Bei einem Fehler in einem der Skripte wird eine entsprechende Meldung im Browser angezeigt. Die Debug Funktion kann auch abgeschaltet werden über die conf.py. Ein kleines Beispiel zeigt die Debug Funktionalität.
Ein Beispiel:
Ergibt die folgende 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
8. Sicherheit
Das Thema Sicherheit soll hier nur kurz besprochen werden. Wenn als Server Apache verwendet wird ist dieser entprechen zu sichern. 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äßt 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. Dies gilt es zu beachten. Die Debug Funktion kann über die conf.py ein/ausgeschaltet werden.
9. Schlusswort / Links
So, ich bin an dieser Stelle wieder einmal am Ende angekommen. Wer Python beherscht sollte mit diesem kurzeinstieg und der Dokumentation von Karrigell schnell und Problemlos eigene Inhalte erstellen können. Als kleines Beispiel habe ich ein kleines Spiel geschrieben. Zahlenraten. Wer es sich mal ansehen will kann es hier laden: http://forum.netcup.de/attachment.php?attachmentid=88&stc=1&d=1263073823 Gestartet wird es durch den Aufruf von zahlen.py. Es handelt sich nur um eine tar.gz Datei, das .zip ist nur vorhanden weil nur zip Archive als Upload möglich sind Auch Live kann mein Zahlenraten gespielt werden unter http://zahlenspiel.jeegeek.net:5123/
Über ein Feedback freue ich mich natürlich gerne
Offizielle Seite: http://www.karrigell.fr/doc/en/
Dokumentation: http://www.karrigell.fr/doc/en/reference.ks/
Python Handbuch: http://de.wikibooks.org/wiki/Python_unter_Linux:_ALLES
Zahlenraten: http://zahlenspiel.jeegeek.net:5123/