Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Kommunikation und Netzwerk

k24:k24.13:start

24.13 Exkurs: Webserver Lighttpd – Installation, Konfiguration und Test

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.

24.13.1 Hinweise

Die folgenden Hinweise und Anregungen sollten Sie beachten:

  • Die Installation, Konfiguration und vielfältige Test des Webservers Lighttpd erfolgen in der vorliegenden Beschreibung für Linux Mint 17.1 mit Hinweisen für Mint 18.
  • Es wird die Version 1.4.33 des Webserver Lighttpd eingesetzt.
  • Der Standard-Webordner – in dem Webseiten gespeichert werden – hängt von der Linux-Distribution und von deren Version ab. Für Mint 17.1 ist es zum Beispiel das Verzeichnis /var/www, für Mint 18 /var/www/html.
  • Sie können für das Anlegen und die Änderung aller Konfigurationsdateien unter Root-Rechten einen beliebigen Text-Editor verwenden.
  • Die zu installierende PHP-Version (Option) hängt von der Linux-Distribution und von deren Version ab. So setzen zum Beispiel Ubuntu 16.04 und Mint 18 die PHP-Version 7 ein – Mint 17.1 dagegen die PHP-Version 5.
  • Die Dokumentation zum Webserver ist ebenso zu installieren, damit Sie Zugriff auf die Dokumentation der einzelnen Module erhalten, welche für die Konfiguration der Module unerlässlich ist. Die Pfade zur Dokumentation der einzelnen Module finden Sie in den Konfigurationsdateien der betreffenden Module.
  • Die Funktionalität des Webservers können Sie durch Module erweitern.
  • Bei einigen Befehlen in der Konsole oder bei Link-Angaben für den Webbrowser ist der Benutzername 'hans' der Testumgebung des Autors stets durch Ihren Benutzernamen zu ersetzen!

24.13.2 Installation

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!

24.13.3 Webserver Status und Start-Varianten

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.

24.13.4 Webserver – 1. Test

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.

24.13.5 Dokumentation

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

24.13.6 Log-Dateien

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/.

24.13.7 Webserver-Steuerung

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

24.13.8 Konfiguration

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:

Pfad

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.

24.13.8.1 Anpassung der (Haupt-)Konfigurationsdatei

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 ] 

24.13.8.2 Erweiterung der Funktionalität des Webservers durch den Einsatz von Modulen

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:

  1. Modul konfigurieren durch das Bearbeiten der passenden Konfigurationsdatei in dem Ordner etc/lighttpd/conf-available – wenn das notwendig ist.
  2. Modul aktivieren.
  3. (Haupt-)Konfigurationsdatei neu einlesen.
  4. Funktionalität des Moduls im Webbrowser Ihrer Wahl testen.

Die Module wurden so ausgewählt, dass folgende Server-Funktionalität erzielt wird:

  • Ein Benutzer verwaltet alle eigenen Webseiten und Skripte im seinem Home-Verzeichnis in einem speziellen Webordner /home/$USER/public_html beziehungsweise ~/public_html → Modul userdir)
  • CGI-Skripte der Programmiersprachen Gambas (Skripte und Webpages), Perl und Python werden nur in einem speziellen (Unter-)Ordner ~/public_html/cgi-bin ausgeführt → Modul cgi)
  • PHP-Skripte werden ausgeführt → Modul fastcgi.
  • HTML-Dateien mit der Extension .shtml werden nach SSI-Anweisungen geparst und die gefundenen SSI-Anweisungen ausgeführt. SSI steht für Server Side Includes. SSI ermöglicht es u.a. auf sehr einfache Weise, den Inhalt einer Text-Datei in eine sHTML-Datei einzufügen → Modul ssi.

24.13.8.3 Konfiguration Modul userdir

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

Index-Datei

Abbildung 24.13.8.3.1: Anzeige der Index-Datei für den Benutzer 'hans'

24.13.8.4 Konfiguration Modul cgi

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

Perl

Abbildung 24.13.8.4.1: Perl-Skript

Python

Abbildung 24.13.8.4.2: Phyton-Skript

WebPage

Abbildung 24.13.8.4.3: Gambas-Webpage wp_datetime.gambas

Skript

Abbildung 24.13.8.4.4: Gambas-Skript datetime.gbs

CGI-Formular

Abbildung 24.13.8.4.5: Gambas-Web-Formular cgi_f.gambas

Anzeige

Abbildung 24.13.8.4.6: Anzeige der Daten aus dem Web-Formular cgi_fa.gambas

DB-Report

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.

24.13.8.5 Konfiguration Modul fastcgi

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.

24.13.8.6 Konfiguration Modul ssi

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>

SSI

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.

Download

Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k24/k24.13/start.txt · Zuletzt geändert: 16.11.2017 von honsek

Seiten-Werkzeuge