[[Vorlage(archiviert, )]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] [:Programme starten: Ein Programm ohne Menüeintrag starten] [:Rechte: Rechte für Dateien und Ordner ändern] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/Internet.png, 64, align=left)]] [http://www.webtoolkit.eu/wt#/ Wt] {en} (oder auch "Witty") ist ein an [:Qt:] angelehntes und stark auf [wikipedia:Boost_(C%2B%2B-Bibliothek):Boost] aufbauendes Web-Framework, das es ermöglicht, browserunabhängige und dynamische Web-Applikationen fast gänzlich in C++, d.h. ohne HTML, JavaScript, AJAX, etc., zu entwickeln. Neben dem aus Qt bekannten Signal/Slot-Prinzip bringt Wt unter anderem eingebauten Schutz vor [wikipedia:Cross-Site_Scripting:Cross-Site-Scripting], [wikipedia:Cross-Site_Request_Forgery:Cross-Site Request Forgery] und einen eigenen Anwendungsserver mit. Der Einsatz von Wt bietet sich beispielsweise an, wenn bestehende C++-Applikationen ins Web integriert werden sollen, hohe Skalierbarkeit und/oder der Einsatz auf Embedded-Geräten gewünscht ist. Parallel zu Wt wird [http://www.webtoolkit.eu/jwt JWt] {en} entwickelt, das den Einsatz in Java erlaubt. Wt und JWt sind unter der GPLv2 lizenziert. Für Closed-Source-Projekte muss eine separate Lizenz erworben werden. = Installation = Zum Ausführen mit Hilfe von Wt entwickelter Anwendungen muss folgendes Paket installiert [1] werden: {{{#!vorlage Paketinstallation witty, universe, ab Jaunty }}} Möchte man selbst Programme schreiben, wird zusätzlich das Entwicklerpaket benötigt: {{{#!vorlage Paketinstallation witty-dev, universe, ab Jaunty }}} = Konfiguration = In der Datei '''/etc/wt/wt_config.xml''' findet sich eine sehr ausführlich kommentierte Beispielkonfiguration für den Anwendungsserver von Wt, welche mit Hilfe eines Editors [2] und Root-Rechten bearbeitet werden kann. {{{#!vorlage Hinweis Die Einstellungen im Abschnitt Session-Management sollte man mit Bedacht wählen, um den Erfolg von [wikipedia:Denial_of_Service:DoS-Attacken] in Grenzen zu halten und eine gute Skalierbarkeit zu gewährleisten. }}} = Benutzung = Der Anwendungsserver bietet zwei Möglichkeiten an, mit denen er betrieben werden kann: Zum Einen als eigenständiger Webserver und zum Anderen zusammen mit einem Webserver, wie [:nginx:] oder [:Apache:], über die [wikipedia:FastCGI:FastCGI-Schnittstelle]. Während der FastCGI-Betrieb eher für das Produktivsystem geeignet ist, empfehlen die Entwickler den eingebauten Webserver für die Entwicklungs- und Testphase zu verwenden. == Standalone == Damit die Webanwendung im Standalone-Modus laufen kann, muss sie zuvor mit dem Connector '''wthttp''' kompiliert worden sein. Details dazu findet man im [http://redmine.webtoolkit.eu/projects/wt/wiki/Using_CMake CMake-Tutorial] {en} im Wt-Wiki. Ist dies geschehen, lässt sich der mitgelieferte Webserver mit einem einfachen Konsolenbefehl[3][4] starten: {{{#!vorlage Befehl ./myapp.wt --docroot . --http-address 127.0.0.1 --http-port 8080 }}} Die Applikation sollte nun unter http://localhost:8080 erreichbar sein. Eine detaillierte Auflistung aller möglichen Parameter erhält man über den Parameter ''--help''. Möchte man den Webserver wieder beenden, geschieht dies über die Tastenkombination [[Vorlage(Tasten, ctrl+c)]]. == FastCGI == Da der Standalone-Server eher für die Entwicklungsphase gedacht ist, dürften die meisten Anwender die FastCGI-Variante favorisieren, da sie unter anderem auch eine bessere Integration in das Gesamtsystem bietet. Um diesen Modus zu verwenden muss die Anwendung mit dem Connector '''wtfcgi''' kompiliert worden sein. Details dazu findet man auch hier im [http://redmine.webtoolkit.eu/projects/wt/wiki/Using_CMake CMake-Tutorial] {en} im Wt-Wiki. Falls noch nicht geschehen, installiert man sich zunächst noch das Paket {{{#!vorlage Paketinstallation spawn-fcgi, universec }}} Mit Hilfe von spawn-fcgi lässt sich die Webanwendung nun über die Konsole[3][4] starten: {{{#!vorlage Befehl sudo spawn-fcgi -d /pfad/zu/ -a 127.0.0.1 -p 9091 -u user -g user -- /pfad/zu/myapp.wt }}} Der Benutzer bzw. die Gruppe '''user''' benötigen hierbei Schreibzugriff[5] auf den Ordner '''/var/run/wt'''. Abschließend muss nur noch der Webserver entsprechend konfiguriert werden. Anleitungen für [http://redmine.webtoolkit.eu/projects/wt/wiki/Fastcgi_on_nginx nginx] {en} und [http://redmine.webtoolkit.eu/projects/wt/wiki/Fastcgi_on_lighttpd lighttpd] {en} finden sich im Wt-Wiki. = Links = * [http://redmine.webtoolkit.eu/wiki/wt Wt-Wiki] {en} * [http://www.webtoolkit.eu/wt/doc/reference/html/index.html Wt-Dokumentation] {en} * [http://www.webtoolkit.eu/wt#/examples/ Wt-Beispiele] {en} #tag: Programmierung