Wenn Sie Webseiten oder Gambas-WebPages oder ein CMS lokal testen wollen, dann benötigen Sie einen Webserver auf Ihrem System. Entweder nutzen Sie für Programm-Tests den Webserver aus der Komponente gb.httpd oder Sie installieren Lighttpd als schnellen Webserver mit geringem Speicherverbrauch. Lighttpd – genannt Lighty – ist eine Alternative zum Apache-Webserver mit hinreichend einfacher sowie überschaubarer Konfiguration.
Die folgenden Hinweise und Anregungen sollten Sie beachten:
Der Webserver Lighttpd kann über die Anwendungsverwaltung installiert werden oder man gibt in einem Terminal Folgendes ein:
$ sudo apt-get update && sudo apt-get upgrade $ sudo apt-get install lighttpd
Anschließend sollte die Dokumentation installiert werden:
$ sudo apt-get install lighttpd-doc
Um für den Webserver auch die PHP-Unterstützung einzusetzen (Option), die u.a. für Testzwecke im Zusammenhang mit der Komponente gb.xml.rpc interessant ist, muss zusätzlich auch PHP installiert werden:
$ sudo apt-get install php5-cgi ' Mint 17.1 $ sudo apt-get install php-cgi php7.0-cli ' PHP7 ab Ubuntu 16.04 und ab Mint 18!
So ermitteln Sie zum Beispiel den Webserver-Status, da der Webserver nach der Installation sofort gestartet wird:
$ sudo service lighttpd status $ sudo /etc/init.d/lighttpd status [sudo] password for hans: * lighttpd is running
Die installierte Lighttpd-Version zeigen Sie so an:
$ lighttpd -v lighttpd/1.4.33 (ssl) - a light and fast webserver Build-Date: Jan 28 2014 17:26:04
Achtung: Der Webserver Lighttpd wird bei jedem Systemstart automatisch gestartet (Standard). Das können Sie mit diesen beiden Befehlen ändern oder Sie nutzen das Programm rcconf:
$ sudo update-rc.d -f lighttpd remove → Lighttpd aus der Autostart-Liste entfernen Removing any system startup links for /etc/init.d/lighttpd …
$ sudo update-rc.d lighttpd defaults → Lighttpd der Autostart-Liste wieder hinzufügen Adding system startup for /etc/init.d/lighttpd ...
Option: Wenn Sie den Webserver beim Systemstart nicht automatisch starten, können Sie den Webserver jederzeit temporär als Hintergrund-Prozess starten:
Variante 1:
$ lighttpd -f path2configfile $ lighttpd -f /etc/lighttpd/lighttpd.conf
Hintergrund-Prozess beenden:
$ ps -aux | grep lighttpd $ sudo kill PID
Variante 2:
$ lighttpd -D -f /etc/lighttpd/lighttpd.conf (→ ohne Ablösung von der Konsole)
Den Hintergrund-Prozess beenden Sie mit CTRL+X oder Terminal-Fenster schließen (→ Nachfrage). Wenn Sie ständig mit dem Webserver Lighttpd arbeiten, dann lohnt das Anlegen von Startern auf dem Desktop für ausgewählte Aktionen wie zum Beispiel Starten oder Stoppen.
Nach der Installation können Sie den automatisch gestarteten Webserver mit der bereits vorhandenen (Haupt-)Konfiguration testen, indem Sie die während der Installation automatisch erzeugte (statische) Webseite index.lighttpd.html – gespeichert im Webordner /var/www (Standard-Webordner für Lighttpd) – in einem Webbrowser öffnen. Beachten Sie, dass beispielsweise ab Version Mint 18 der Standard-Webordner auf /var/www/html geändert wurde!
Die vier Aufrufe:
http://127.0.0.1 oder http://localhost oder http://127.0.0.1/index.lighttpd.html oder http://localhost/index.lighttpd.html
sind gleichwertig, da standardmäßig nach einer Index-Datei im Standard-Webordner gesucht wird. Im Webbrowser sollte der Inhalt dieser Index-Datei angezeigt werden:
Abbildung 24.13.4.1: Inhalt der Standard-Index-Datei (Lighttpd)
Lesen Sie sich den Text in der 'Platzhalter-Webseite' aufmerksam durch, da er wichtige Informationen zum Webserver enthält.
Eine umfangreiche Dokumentation zum Webserver Lighttpd finden Sie unter:
https://www.lighttpd.net/ https://wiki.ubuntuusers.de/lighttpd/
Hilfen zum Webserver Lighttpd gibt es auch hier:
LINK1: https://redmine.lighttpd.net/projects/lighttpd/wiki LINK2: https://www.elektronik-kompendium.de/sites/raspberry-pi/1905271.htm KONSOLE: $ lighttpd -h KONSOLE: $ cd /usr/share/doc/lighttpd && ls -l
Die letzten Einträge der aktuellen (Fehler-)Log-Datei des Webservers können Sie sich mit dem folgenden Befehl in einer Konsole ansehen:
$ sudo tail -f /var/log/lighttpd/error.log
Ältere Log-Dateien finden Sie ebenso im Verzeichnis /var/log/lighttpd/.
Die folgenden Aufrufe in einem Terminal steuern den Webserver Lighttpd mit den in der Liste aufgeführten Parametern:
$ sudo /etc/init.d/lighttpd {start|stop|restart|reload|force-reload} $ sudo service lighttpd {start|stop|restart|reload|force-reload|status} ' Alternative
Beispiele:
$ sudo /etc/init.d/lighttpd status $ sudo service lighttpd status $ sudo service lighttpd restart
Wie jeder Server ist auch der Webserver Lighttpd zu konfigurieren, wenn bestimmte Dienste zuverlässig zur Verfügung stehen sollen. Viele (hinreichend vorkonfigurierte) Konfigurationsdateien finden Sie im Ordner /etc/lighttpd und in seinen Unter-Ordnern:
Abbildung 24.13.8.1: Lighttpd – Ort der Konfigurationsdateien
Die (Haupt-)Konfigurationsdatei für den Webserver Lighttpd ist /etc/lighttpd/lighttpd.conf. Ohne Änderung der Konfiguration liefert der Webserver nur statische HTML-Seiten – gespeichert im (Standard-) Webordner – an den rufenden Web-Client aus.
In den folgenden Zeilen finden Sie den Inhalt von /etc/lighttpd/lighttpd.conf als erprobter (Haupt-)Konfigurationsdatei, so wie sie vom Autor eingesetzt wird.
Ändern Sie diese existierende Konfigurationsdatei mit Root-Rechten mit einem Editor Ihrer Wahl:
$ sudo gedit /etc/lighttpd/lighttpd.conf ' Editoren: gedit, nano, bluefish, ...
Inhalt von /etc/lighttpd/lighttpd.conf mit Kommentaren:
## Festlegung der Module, die sofort aktivert werden sollen ## Specify the modules to be activated immediately server.modules = ( "mod_access", "mod_alias", "mod_redirect" ) ## Server-Socket-Konfiguration ## Server socket configuration server.document-root = "/var/www" server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/var/run/lighttpd.pid" server.username = "www-data" server.groupname = "www-data" server.port = 80 server.bind = "localhost" ## Vorgabe der Extensionen von Index-Dateien ## Specify the extensions of index files index-file.names = ( "index.html", "index.lighttpd.html" , "index.php" ) ## Vorgabe verbotener Datei-Extensionen ## Specify prohibited file extensions url.access-deny = ( "~", ".inc" ) ## Dateien mit den folgenden Extensionen *nicht* als statischen Inhalt betrachten ## Files with the following extensions *not* as static content static-file.exclude-extensions = ( ".php", ".pl", ".py", ".gbs", ".gbw", ".gambas", ".rb", "~", ".inc" ) compress.cache-dir = "/var/cache/lighttpd/compress/" compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" ) ## IPv6, wenn das möglich und notwendig ist ## IPv6 if this is possible and necessary ## include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port ## ## Erlaubte MIME-Typen festlegen ## Set MIME types include_shell "/usr/share/lighttpd/create-mime.assign.pl" ## ## Anzeige von größeren PDF-Dateien beschleunigen ## Display larger PDF files speed up $HTTP["url"] =~ "\.(?i:pdf)$" {server.range-requests = "disable"} ## ## Aktivierte Modul-Konfigurationen aus dem Ordner /etc/lighttpd/conf-enabled werden in die ## (Haupt-)Konfigurationsdatei eingefügt (SymLink). ## Enabled module configurations from the /etc/lighttpd/conf-enabled folder are inserted ## into the (main-)configuration file. include_shell "/usr/share/lighttpd/include-conf-enabled.pl" ##
Um eine (geänderte) Konfigurationsdatei auf (Syntax-)Fehler zu überprüfen, können Sie den folgenden Befehl in einer Konsole benutzen, mit dem eine Fehlkonfiguration sehr schnell erkannt wird oder die Korrektheit der Syntax bestätigt wird, wie die folgenden zwei Beispiele zeigen:
$ lighttpd -t -f /etc/lighttpd/lighttpd.conf 2017-05-11 18:34:40: (configfile.c.957) source: /etc/lighttpd/lighttpd.conf line: 83 pos: 1 parser failed somehow near here: (EOL)
$ lighttpd -t -f /etc/lighttpd/lighttpd.conf Syntax OK
Nach der Änderung einer Konfigurationsdatei müssen Sie die geänderte (Haupt-)Konfigurationsdatei stets neu einlesen, damit die Änderungen wirksam werden. Beim jedem Einlesen erfolgt zudem eine Prüfung der Syntax. Am Sichersten gelingt das mit einem Re-Start des Webservers:
$ sudo service lighttpd restart * Stopping web server lighttpd [ OK ] * Starting web server lighttpd [ OK ]
Die Funktionalität des Webservers können Sie durch Module erweitern, um zum Beispiel Gambas-Webpages anzeigen oder auch PHP-Skripte für dynamische Webseiten verarbeiten zu können. Sie finden auf der Website https://redmine.lighttpd.net/projects/1/wiki/Docs u.a. eine Übersicht der Module als Link-Liste, so dass Sie sich schnell informieren können über die Modul-Beschreibung und die Konfigurationsoptionen zum ausgewählten Modul!
Um den Funktionsumfang des Webservers durch den Einsatz eines bestimmten Moduls zu erweitern, hat es sich bewährt, die folgende Schrittfolge für ein Modul abzuarbeiten:
Die Module wurden so ausgewählt, dass folgende Server-Funktionalität erzielt wird:
Auf das Verzeichnis /var/www unter Mint 17 – in dem der Webserver Lighttpd statische oder dynamische Webseiten erwartet – können Sie nur mit Root-Rechten zugreifen, um dort Dateien anzulegen, zu ändern oder zu löschen. Damit Sie jedoch als ein am System angemeldeter Benutzer zukünftig Ihre eigenen Web-Dateien, Skripte oder Programme unter Ihren Rechten anlegen, ändern, löschen und anzeigen können, müssen Sie als System-Benutzer in Ihrem Home-Verzeichnis einen Webordner mit dem standardisierten Namen public_html anlegen:
$ mkdir /home/$USER/public_html
Setzen Sie die Rechte für den Webordner auf 755 oder drwxr-xr-x (Rechte-String):
$ chmod 755 /home/$USER/public_html ' Rechte für den benutzer-spezifischen Webordner setzen $ stat -c "%a %n" /home/$USER/public_html ' Anzeige der Ordner-Rechte (oktal) $ ls -l | grep ^d | grep public_html ' Anzeige der Ordner-Rechte (Rechte-String)
Damit der Benutzer www-data, unter dessen Rechten der Webserver läuft, auf das benutzer-spezifische Verzeichnis public_html zugreifen kann, muss das Modul userdir aktiviert und konfiguriert werden. Das Modul userdir ermöglicht es dem System-Benutzer, das benutzer-spezifische Verzeichnis ~/public_html automatisch mit dem globalen Namespace (/var/www bei Mint 17.1) des Webservers zu verknüpfen.
Im folgenden Abschnitt wird die o.a. Schrittfolge für den Einsatz eines Moduls am Beispiel vom Modul userdir exemplarisch umgesetzt:
(1) Modul konfigurieren durch das Bearbeiten der passenden Konfigurationsdatei
Lesen Sie sich stets zuerst die Dokumentation zum Modul durch:
$ cat /usr/share/doc/lighttpd/userdir.txt
Sichern Sie dann das Original der Modul-Konfigurationsdatei:
$ sudo cp /etc/lighttpd/conf-available/10-userdir.conf /etc/lighttpd/conf-available/10-userdir.conf.origin
Das Modul userdir wird durch das Bearbeiten Datei /etc/lighttpd/conf-available/10-userdir.conf mit dem Editor Ihrer Wahl konfiguriert.
$ sudo gedit /etc/lighttpd/conf-available/10-userdir.conf
Ändern Sie den Inhalt der Konfigurationsdatei 10-userdir.conf auf diesen Inhalt:
## --- MODUL: USERDIR --- ## ## Dokumentation: /usr/share/doc/lighttpd/userdir.txt ## ## Aktivierung des Moduls 'userdir' ## Activation of the module 'userdir' server.modules += ( "mod_userdir" ) ## Pfadangabe zum Webordner im Home-Verzeichnis ## Path to the web folder in the home directory userdir.path = "public_html" ## Bestimmten Benutzern den Zugriff auf den Webordner public_html verbieten ## Certain users prohibit access to the public_html web folder userdir.exclude-user = ( "root", "postmaster" ) ## ## --- ENDE MODUL: USERDIR ---
(2) Modul aktivieren
Das Aktivieren des Moduls erfolgt durch diesen Befehl:
$ sudo lighttpd-enable-mod userdir [sudo] password for hans: Enabling userdir: ok Run /etc/init.d/lighttpd force-reload to enable changes
Hinweis: Mit dem folgenden Befehl können Sie das Modul de-aktivieren, sofern das erforderlich ist:
$ sudo lighttpd-disable-mod userdir
(3) Konfigurationsdateien neu einlesen
Sie müssen nach der Änderung der Konfiguration die geänderte (Haupt-)Konfigurationsdatei neu einlesen, wie es nach dem Aktivieren auch mit 'Run /etc/init.d/lighttpd force-reload to enable changes' gefordert wurde:
$ sudo service lighttpd force-reload [sudo] password for hans: * Reloading web server configuration lighttpd [ OK ]
denn in der (Haupt-)Konfigurationsdatei bewirkt die u.a. Include-Anweisung, dass aktivierte Modul-Konfigurationen aus dem Ordner /etc/lighttpd/conf-enabled in die (Haupt-)Konfigurationsdatei eingefügt werden:
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
(4) Funktionalität des aktivierten Moduls im Webrowser Ihrer Wahl testen
Legen Sie in Ihrem Webordner ~/public_html die (Text-)Datei index.html mit einem Editor an:
$ gedit /home/$USER/public_html/index.html ' Datei anlegen oder existierende Datei bearbeiten $ bluefish /home/$USER/public_html/index.html ' Alternative und Empfehlung des Autors
Tragen Sie folgende Zeilen ein:
<!DOCTYPE html> <html lang="de"> <head> <title>INDEX.HTML</title> <meta charset="utf-8"> <style> body {background-color: #E2E2E2; font-family: Arial; font-size:10px; color:#000000;} h1 {text-align: center; font-family: Arial; font-size: 32px; color: blue;} </style> </head> <body> <h1>Index-HTML-Datei für LIGHTTPD <br />im Webordner ~/public_html</h1> </body> </html>
Beachten Sie, dass der Benutzer www-data, unter dessen Rechten der Webserver lighttpd läuft, mindestens Lese-Rechte (Zugriffsrechte → Andere) auf Ihren Webordner ~/public_html und die darin enthaltenen Dateien hat. Prüfen Sie, ob die Datei-Rechte der Index-Datei auf 644 gesetzt sind, was dem Standard für (statische) HTML-Dateien im Webordner entspricht:
$ stat -c "%a %n" /home/$USER/public_html/index.html 644 /home/hans/public_html/index.html
Abschließend können Sie diese Index-HTML-Datei im Webbrowser mit dem folgenden URL aufrufen, wobei USERNAME durch den eigenen Benutzernamen ersetzt werden muss:
http://localhost/~USERNAME/index.html
Abbildung 24.13.8.3.1: Anzeige der Index-Datei für den Benutzer 'hans'
Für den Fall, dass Sie auch dynamische und interaktive Webseiten als CGI-Skripte – zu denen auch Gambas-Webpages gehören – einsetzen wollen, müssen Sie das Modul cgi konfigurieren und aktivieren.
(1) Modul konfigurieren durch das Bearbeiten der passenden Konfigurationsdatei
Lesen Sie sich die Dokumentation zum Modul durch:
$ sudo gedit /usr/share/doc/lighttpd/cgi.txt
Sichern Sie das Original der Konfigurationsdatei:
$ sudo cp /etc/lighttpd/conf-available/10-cgi.conf /etc/lighttpd/conf-available/10-cgi.conf.origin
Das Modul cgi wird durch das Bearbeiten Datei /etc/lighttpd/conf-available/10-cgi.conf konfiguriert:
$ sudo gedit /etc/lighttpd/conf-available/10-cgi.conf
Ändern Sie den Inhalt der Konfigurationsdatei 10-cgi.conf auf diesen Inhalt:
## --- MODUL: CGI --- ## ## Dokumentation: /usr/share/doc/lighttpd/cgi.txt ## ## Aktivierung des Moduls 'cgi' ## Activation of the module 'cgi' server.modules += ( "mod_cgi" ) ## Alle ausführbaren Dateien (+x) sind CGI-Skripte ... ## All executable files (+x) are CGI scripts ... cgi.execute-x-only = "enable" ## CGI-Skripte nur im benutzer-definierten Ordner ~/public_html/cgi-bin ausführen ## CGI scripts only run in the user-defined folder ~/public_html/cgi-bin $HTTP["url"] =~ "/cgi-bin" { cgi.assign = ( "" => "" ) } ## ## --- ENDE MODUL: CGI ---
(2) Modul aktivieren
$ sudo lighttpd-enable-mod cgi [sudo] password for hans: Enabling cgi: ok Run /etc/init.d/lighttpd force-reload to enable changes
(3) Konfigurationsdateien neu einlesen
$ sudo service lighttpd force-reload [sudo] password for hans: * Reloading web server configuration lighttpd [ OK ]
(4) Funktionalität des aktivierten Moduls im Webrowser testen
Vom Webserver wird nun HTML-Code von statischen Webseiten und von CGI-Skripten ausgeliefert:
Statische HTML-Webseiten *.html Index-Dateien index.*, die automatisch erkannt werden Gambas-CGI-Programme → Webpages *.gambas Gambas-CGI-Skripte→ *.gbw und *.gbs Python-CGI-Programme → *.py Perl-CGI-Programme → *.pl PDF-Datei zur direkten Anzeige
Zum Testen wird Ihnen ein Archiv des Webordners ~/public_html des Autors zur Verfügung gestellt. Es existiert mindestens eine Gambas-Webpage oder ein Gambas-Webskript oder ein Beispiel-Skript in PHP und Python im Webordner 'public_html' sowie eine größere PDF-Datei. Prüfen Sie vor den diversen Tests noch einmal sorgfältig die Rechte des Webordners und der darin enthaltenen (Unter-Ordner) sowie die Rechte der Dateien in den Ordnern. Hier eine Auswahl:
hans@mint71 ~ $ stat -c "%a %n" /home/$USER/public_html/ 755 /home/hans/public_html hans@mint71 ~ $ stat -c "%a %n" /home/$USER/public_html/cgi-bin/ 755 /home/hans/public_html/cgi-bin hans@mint71 ~ $ stat -c "%a %n" /home/$USER/public_html/cgi-bin/py.py 655 /home/hans/public_html/cgi-bin/py.py hans@mint71 ~ $ stat -c "%a %n" /home/$USER/public_html/cgi-bin/wp_datetime.gambas 755 /home/hans/public_html/cgi-bin/wp_datetime.gambas
Sehr gut zur Anzeige der Rechte ist auch der ls-Befehl in Verbindung mit dem Programm awk geeignet, da die Rechte dann oktal angegeben werden:
hans@mint71 ~/public_html $ cd /home/hans/public_html/cgi-bin hans@mint71 ~/public_html/cgi-bin $ ls -lG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}' ... 705 -rwx---r-x 1 hans 167 Mai 31 11:52 datetime.gbs 705 -rwx---r-x 1 hans 723 Mai 29 11:32 py.py 755 -rwxr-xr-x 1 hans 5369 Mai 30 09:56 wp_datetime.gambas 755 -rwxr-xr-x 1 hans 127610 Mai 30 18:47 wp_report_sqlite3.gambas hans@mint71 ~/public_html/cgi-bin $
Außerdem finden Sie in einem weiteren Archiv alle notwendigen Gambas-Quelltexte der getesteten Webpages und WebSkripte. Zum Testen können Sie diese Testliste verwenden – vergessen Sie nicht den Benutzer-Namen hans in den Namen des angemeldeten Benutzers zu ändern:
http://localhost/~hans/index.html http://localhost/~hans/test1.html http://localhost/~hans/cgi-bin/py.py http://localhost/~hans/cgi-bin/pl.pl http://localhost/~hans/cgi-bin/datetime.gbs http://localhost/~hans/cgi-bin/wp_datetime.gambas http://localhost/~hans/cgi-bin/wp_environment.gambas http://localhost/~hans/cgi-bin/cgi_f.gambas http://localhost/~hans/cgi-bin/wp_report_sqlite3.gambas http://localhost/~hans/lighty.pdf
Abbildung 24.13.8.4.1: Perl-Skript
Abbildung 24.13.8.4.2: Phyton-Skript
Abbildung 24.13.8.4.3: Gambas-Webpage wp_datetime.gambas
Abbildung 24.13.8.4.4: Gambas-Skript datetime.gbs
Abbildung 24.13.8.4.5: Gambas-Web-Formular cgi_f.gambas
Abbildung 24.13.8.4.6: Anzeige der Daten aus dem Web-Formular cgi_fa.gambas
Abbildung 24.13.8.4.7: Gambas-Webpage – DB-Report
Alle erzeugten Webseiten erfüllen den HTML5-Standard, deren Grundstruktur – so wie bei der Datei test1.html – stets gleich ist:
<!DOCTYPE html> <html lang="de"> <head> <title>Webserver Lighttpd</title> <meta charset="utf-8"> <style> body {background-color: #C3DDFF; font-family: Arial; font-size:14px; color:#000000;} h1 {text-align: center; font-family: Verdana; font-size: 32px; color: #FF0000;} </style> </head> <body> <br /> <h1>Test-HTML-Datei für Webserver LIGHTTPD</h1> </body> </html>
Der HTML-Validator auf → https://www.freeformatter.com/html-validator.html zeigt das an:
The document is valid and conforms to best practices and standards. Good job!
Alternativ können Sie auch diesen Validator einsetzen → https://validator.w3.org/#validate_by_input.
Wenn Sie Skripte der Sprache PHP verwenden wollen, so müssen Sie das Modul fastcgi konfigurieren und aktivieren.
(1) Modul konfigurieren durch das Bearbeiten der passenden Konfigurationsdatei
Lesen Sie sich die Dokumentation zum Modul durch:
$ sudo gzip -d /usr/share/doc/lighttpd/fastcgi.txt.gz $ sudo gedit /usr/share/doc/lighttpd/fastcgi.txt
Sichern Sie das Original der Konfigurationsdatei:
$ sudo cp /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-available/10-fastcgi.conf.origin
In der Datei /etc/php5/cgi/php.ini der Wert von 'cgi.fix_pathinfo' auf 1 zu setzen (Zeile > 760).
$ sudo gedit /etc/php5/cgi/php.ini
Unter PHP7 heißt die Datei „/etc/php/7.0/cli/php.ini“ und der Parameter ist bereits auf 1 gesetzt – was Sie noch einmal prüfen sollten.
Das Modul wird durch das Bearbeiten der Datei /etc/lighttpd/conf-available/10-fastcgi.conf konfiguriert:
$ sudo gedit /etc/lighttpd/conf-available/10-fastcgi.conf
Ändern Sie den Inhalt der Konfigurationsdatei 10-fastcgi.conf auf diesen Inhalt:
## --- MODUL: FASTCGI --- ## ## Dokumentation: /usr/share/doc/lighttpd/fastcgi.txt ## ## Für PHP von „lighttpd“ ((Fast-)CGI) muss php5-cgi oder php-cgi installiert sein! ## In /etc/php5/cgi/php.ini ist der Wert von 'cgi.fix_pathinfo' auf 1 zu setzen. ## For PHP5 of "lighttpd" ((fast)CGI, the package php5-cgi or php-cgi must be installed! ## Do not forget to set the value of cgi.fix_pathinfo to 1 in /etc/php5/cgi/php.ini. ## ## Aktivierung des Moduls 'fastcgi' ## Activation of the module 'fastcgi' server.modules += ( "mod_fastcgi" ) ## Fast-CGI-Server fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.sock" ))) ## ## --- ENDE MODUL: FASTCGI ---
(2) Modul aktivieren
$ sudo lighttpd-enable-mod fastcgi [sudo] password for hans: Enabling fastcgi: ok Run /etc/init.d/lighttpd force-reload to enable changes
(3) Konfigurationsdateien neu einlesen
$ sudo service lighttpd force-reload [sudo] password for hans: * Reloading web server configuration lighttpd [ OK ]
(4) Funktionalität des aktivierten Moduls im Webrowser testen
Vom Webserver wird jetzt auch HTML-Code von PHP-Skripten ausgeliefert. Das erste der u.a. PHP-Skripte liefert Informationen zu PHP, während das zweite wenig spektakulär die Summe und Differenz zweier (zufällig ausgewählter) Integer-Zahlen berechnet und ausgibt.
http://localhost/~hans/phpinfo.php http://localhost/~hans/add.sub.php
Die PHP-Datei xmlrpc.server.php stellt einen XMLRPC-Server mit einem bestimmten (Web-)Service zur Verfügung, der von einem (Gambas-)XMLRPC-Client aufgerufen wird → Kapitel 27.7 XML_RPC.
Zum Thema 'Server Side Includes' (SSI) stand in einer Dokumentation u.a. diese Zusammenfassung:
SSI ist sicherlich kein Ersatz für CGI oder andere Technologien, die zur Erzeugung dynamischer Webseiten verwendet werden. Aber es ist ein guter Weg, um kleine Mengen von dynamischen Inhalten auf Seiten hinzuzufügen, ohne dabei viel zusätzliche Arbeit zu investieren.
Wer Server Side Includes in Webseiten einsetzt, wird bestätigen können: Ja, so ist es … !
SSI ist browserunabhängig, da die SSI-Anweisungen in einer Webseite vom Webserver verarbeitet werden und die Ergebnisse sofort in den HTML-Quelltext eingefügt werden, der dann zum Browser geschickt wird. Das Modul ssi ist für Sie dann interessant, wenn Sie auf komfortable Weise häufig wechselnde Texte in eine sHTML-Seite einfügen möchten.
(1) Modul konfigurieren durch das Bearbeiten der passenden Konfigurationsdatei
Lesen Sie sich die Dokumentation zum Modul durch:
$ sudo gedit /usr/share/doc/lighttpd/ssi.txt
Sichern Sie das Original der Konfigurationsdatei:
$ sudo cp /etc/lighttpd/conf-available/10-ssi.conf /etc/lighttpd/conf-available/10-ssi.conf.origin
Um 'Server Side Includes' nutzen zu können, müssen Sie das Modul ssi durch das Bearbeiten Datei /etc/lighttpd/conf-available/10-ssi.conf konfigurieren:
$ sudo gedit /etc/lighttpd/conf-available/10-ssi.conf
Ändern Sie den Inhalt der Konfigurationsdatei 10-ssi.conf auf diesen Inhalt:
## --- MODUL: SSI --- ## ## Dokumentation: /usr/share/doc/lighttpd/ssi.txt ## ## Aktivierung des Moduls 'ssi' ## Activation of the module 'ssi' server.modules += ( "mod_ssi" ) ## ## CGI-Modul "mod_compress" zusätzlich (+=) als *letztes* Modul laden! ## Load the CGI module "mod_compress" additionally (+=) as *last* module! server.modules += ( "mod_compress" ) ssi.extension = ( ".shtml" ) ## ## --- ENDE MODUL: SSI ---
(2) Modul aktivieren
$ sudo lighttpd-enable-mod ssi [sudo] password for hans: Enabling ssi: ok Run /etc/init.d/lighttpd force-reload to enable changes
(3) Konfigurationsdateien neu einlesen
$ sudo service lighttpd force-reload [sudo] password for hans: * Reloading web server configuration lighttpd [ OK ]
(4) Funktionalität des aktivierten Moduls im Webbrowser testen
Zukünftig werden alle Dateien im Webordner mit der Extension .shtml vom Webserver Lighttpd nach SSI-Anweisungen geparst und die in ihnen enthaltenen SSI-Anweisungen ausgeführt.
Beachten Sie, dass die Option 'exec' beim Webserver Lighttpd – offensichtlich wegen Sicherheitsbedenken – nicht implementiert wurde!
Für einen Test, ob der Webserver die Ergebnisse von SSI-Anweisungen in den HTML-Quelltext einer Webseite einbindet, wird die HTML-Datei ssitest.shtml erzeugt. Die SSI-Anweisungen werden wie HTML-Kommentare in den HTML-Quelltext einer Webseite eingebunden.
Beachten Sie, dass <!–#SSI-Anweisung ohne Leerzeichen zu notieren ist, jedoch das Leerzeichen vor –> notwendig ist:
<!--#SSI-Anweisung Attribut="Wert" --> Quelltext: <!DOCTYPE html> <html lang="de"> <head> <title>Server Side Includes (SSI)</title> <meta charset="utf-8"> <style> body {background-color: #C3DDFF;font-family:"DejaVu Sans Mono",Verdana;font-size:14px;color:#000000;} h1 {text-align: left; font-family:"DejaVu Sans Mono",Verdana;font-size:20px;color:#FF0000;} p {font-family:"DejaVu Sans Mono",Verdana;font-size:14px;color:#0000FF;} pre {font-family:"DejaVu Sans Mono",Verdana;font-size:14px;color:#000000;} </style> </head> <body> <h1>Dynamisches HTML mit Server Side Includes (SSI)</h1> <p>Datum und aktuelle Uhrzeit auf dem Server: <!--#config timefmt="%d.%m.%Y, %H:%M" --><!--#echo var="DATE_LOCAL" --> Uhr<br/></p> Installierte Server-Software: <!--#echo var="SERVER_SOFTWARE" --><br /><br /> Server-Host: <!--#echo var="HTTP_HOST" --><br /> Server-Name: <!--#echo var="SERVER_NAME" --><br /> Server-Port: <!--#echo var="SERVER_PORT" --><br /> Server-Protokoll: <!--#echo var="SERVER_PROTOCOL" --><br /> Request-Methode: <!--#echo var="REQUEST_METHOD" --><br /> Dokument-Wurzelverzeichnis: <!--#echo var="DOCUMENT_ROOT" --><br /> Request-URI: <!--#echo var="DOCUMENT_URI" --><br /> Datei-Pfad: <!--#echo var="SCRIPT_FILENAME" --><br /> Name der sHTML-Datei: <!--#echo var="DOCUMENT_NAME" --><br /> Datei geändert am <!--#config timefmt="%d.%m.%Y um %H:%M" --><!--#echo var="LAST_MODIFIED" --> Uhr<br /> Client-Webbrowser: <!--#echo var="HTTP_USER_AGENT" --><br /> <br /> Werden Sie aus dem folgenden Text - eingefügt aus einer externen Datei - so recht schlau? <p><!--#include file="texte/loremipsum.html" --></p> Streng geheim? Ah - ja. Das hatte man schon lange vermutet!<br /><br /> Quelltext der sHTML-Datei: <!--#echo var="DOCUMENT_NAME" --> <hr /> <p><!--#include file="texte/ssitest.txt" --></p> </body> </html>
Abbildung 24.13.8.6.1: SSI – HTML-Ausgabe von ssitest.shtml
Es werden nicht nur Werte von SSI-Umgebungsvariablen ausgelesen und angezeigt, sondern auch Text aus 2 externen Dateien in die generierte Website eingefügt. Die entsprechenden SSI-Anweisungen sind im Quelltext in der Datei ssitest.shtml rot markiert.
Es lohnt auf jeden Fall → http://localhost/~hans/ssitest.shtml, sich den vom Webserver generierten HTML-Quelltext anzusehen, den Sie sich im Webbrowser Firefox mit CTRL+U anzeigen lassen und mit dem originalen Gambas-Quelltext vergleichen können. Dann wird – wenn auch erst auf den zweiten Blick – die Funktionsweise von SSI sehr deutlich.