![]()  | 
            ![]()  | 
        |
    
 
 
 26.7.3 Hosting-Services 
      
 | 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 Hinweis Wenn Sie die folgenden Beispiele lokal auf Ihrem System testen wollen, wird ein (Web-)Server benötigt. Die folgenden Beispiele wurden mit dem Apache als Serversoftware getestet.  | 
| 
 DENIC Die DENIC ist in Deutschland für das Vergeben von *.de-Domänen zuständig. Wenn Sie also eine eigene Domäne registrieren lassen möchten, so muss dies bei der DENIC geschehen. Die meisten WSPs kümmern sich in der Regel für den Kunden darum.  | 
1995 schlossen sich mehrere Entwickler zusammen, um den damals dominierenden, aber sehr fehlerhaften Webserver NCSA weiterzuentwickeln. Was dabei herauskam, wurde wegen der vielen Fehlerbehebungen »a patchy Server« (Patches) oder einfach Apache genannt.
Warum in diesem Kapitel der Apache-Webserver verwendet wird, lässt sich recht einfach erklären. Der Apache ist für viele Systeme erhältlich, und ist für ein System einmal keine Binary-Version vorhanden, können Sie den Quellcode, der in C geschrieben wurde und frei vorliegt, auf dem System anpassen und übersetzen (kompilieren) lassen. Natürlich können Sie sich auch auf gängigen Systemen Ihre eigene Version des Apaches zusammenbasteln. Der zweite Grund: Apache liegt in freier Form vor. In freier Form heißt, der Quellcode liegt offen, somit werden Sicherheitslücken schneller gefunden als bei Webservern, bei denen Sie sich auf den Hersteller verlassen müssen. Und der dritte Grund ist auch der ausschlaggebende: Der Apache ist der am meisten verwendete Webserver im Internet, wie folgende Auswertung von der Webseite http://www.netcraft.com/survey zeigt:

Hier klicken, um das Bild zu Vergrößern
Abbildung 26.3 Verwendete Webserver im Internet
And last, but not least: Apache ist kostenlos. Der Webserver finanziert sich durch die Apache Software Foundation, wo große Firmen wie IBM gewisse Beträge spenden und so die Weiterentwicklung des Webservers unterstützen. Firmen und Entwickler, die dieses Projekt unterstützen wollen, sind immer erwünscht. Mehr dazu unter http://www.apache.org.
Damit Sie in den folgenden Abschnitten die Beispiele auf Ihrem lokalen Rechner testen können, müssen Sie zunächst Apache auf dem System installieren, sofern dies noch nicht geschehen ist. Es empfiehlt sich im Allgemeinen, die CGI-Anwendungen zuerst auf einem lokalen Rechner zu testen, ehe sie im Web der Öffentlichkeit vorgestellt werden.
Der Vorgang der Installation wird anhand der Binary-Version des Apache vorgenommen, da dies wohl die meist verwendetste Installationsart der Leser ist. Für eine Beschreibung, wie Sie mit dem Sourcecode einen persönlichen Apache erstellen können, sei die Homepage http://www.apache.org empfohlen.
In der Regel kann der Apache auf jeder Windows-Version ohne Probleme betrieben werden. In der folgenden Tabelle finden Sie einige Versionen, mit denen es Probleme geben könnte, und Hinweise, wie Sie Abhilfe schaffen.
| Version | Problemlösung | 
| Windows95 | Winsock2-Umgebung installieren | 
| Windows NT 4.0 | Update auf Servicepack SP6a | 
| Windows 2000 | Update auf Servicepack 2 | 
Sie können sich jetzt die aktuellste Version des Apache von der Apache-Webseite herunterladen.
Um den Apache zu installieren, benötigen die Windows-Versionen Windows 95, Windows 98, Windows 98SE und Windows NT 4.0 mit Microsoft Installer, Version 1.10, den Sie auf der Webseite http://www.microsoft.com herunterladen können. Bei Windows ME, Windows 2000 und Windows XP ist dieser Installer bereits vorhanden.
Doppelklicken Sie jetzt apache_2.x.xx-win32-x86-no_ssl.msi und folgen den typischen Anweisungen der Installation (wobei x.xx für eine Versionsnummer steht). Bei allen Fenstern bis auf das folgende können Sie einfach weiterklicken (siehe Abbildung 26.4).
Verwenden Sie dieselben Einstellungen wie in der Abbildung. Für den Netzwerk-Domainnamen und den Servernamen geben Sie localhost ein. Die E-Mail-Adresse bleibt Ihnen überlassen.
Wenn die Installation beendet ist, öffnen Sie den Webbrowser, mit dem Sie auch im Internet unterwegs sind, und geben als Adresse http://localhost ein, dann drücken Sie (¢). Wenn alles glatt verlief, sollte folgende Seite erscheinen (siehe Abbildung 26.5).

Hier klicken, um das Bild zu Vergrößern
Abbildung 26.4 Eingabe von Serverinformationen

Hier klicken, um das Bild zu Vergrößern
Abbildung 26.5 Erfolgreiche Installation des Apache-Webservers
Sollten Sie keinen Apache im Webbrowser sehen, vergewissern Sie sich, ob der Apache überhaupt gestartet wurde (siehe »Apache starten und stoppen«).
Bei den Windows Versionen, die eine »echte« Benutzerverwaltung haben (z.B. NT, 2k etc.) empfiehlt es sich, einen extra Benutzer einzurichten, unter dessen Namen der Apache als Dienst läuft.
Die Installation unter Linux gestaltet sich recht einfach, da der Apache-Webserver in der Regel mit der Distribution mitgeliefert wird. Das heißt, Sie müssen nur noch das Paket von Ihrer Linux-Distribution nachinstallieren.

Hier klicken, um das Bild zu Vergrößern
Abbildung 26.6 Paketeauswahl bei der SuSE-Distribution mit YAST2
Natürlich können Sie sich auch die neueste Version des Apache herunterladen und installieren, was allerdings für den Verlauf dieses Buchs nicht nötig ist. Die Beispiele wurden u.a. auch mit dem Apache der Version 1.3 getestet. Als Nächstes müssen Sie den Webserver in einer Konsole mit folgendem Befehl starten:
/apache2/bin/apachectl start
Sollte dies nicht funktionieren, müssen Sie einmal kurz den Superuser (su) geben, um Apache zu starten. Dann sollte es mit folgendem Aufruf klappen:
apachectl start
Starten Sie jetzt den Webbrowser Ihrer Wahl und geben Sie die URL http://localhost ein und drücken (¢). Danach sollten Sie vom Apache-Webserver begrüßt werden, wie in der folgenden Abbildung unter SuSE-Linux mit dem Browser Mozilla dargestellt:

Hier klicken, um das Bild zu Vergrößern
Abbildung 26.7 Der Apache-Webserver läuft
Bei einem UNIX/Linux-System möchte man sich auch gern einmal die Funktion der Change-root-Umgebung ansehen. In diesem Fall bekommt der Apache eine eigene Umgebung, was den Betrieb sicherer gestaltet.
Die Begrüßungsseite in den verschiedensten Sprachen finden Sie im htdocs-Verzeichnis. Dieses finden Sie unter MS-Windows z.B. in C:\Programme\Apache Group\Apache2\, bei SuSE 8.2 in /srv/www/ und bei Red Hat sollte sich dieses Verzeichnis im Pfad /etc/apache/ oder /etc/httpd/ befinden.
Wenn Sie jetzt eine HTML-Seite auf dem lokalen Webserver speichern und mit einem Webbrowser betrachten wollen, müssen Sie dazu nur die Webseiten, Bilder und, falls benötigt, weitere Unterordner im htdocs-Verzeichnis des Apache-Servers ablegen.
Erstellen Sie z.B. eine HTML-Seite mit dem Namen »testseite.html« und speichern diese im htdocs-Verzeichnis, dann können Sie diese Seite mit einem Browser über die URL »http://localhost/testseite.html« aufrufen.
Bei Windows befindet sich in der Statuszeile rechts unten eine Feder. Klicken Sie diese an, und es öffnet sich folgendes Fenster:

Hier klicken, um das Bild zu Vergrößern
Abbildung 26.8 Der Apache Service Monitor unter Windows
Damit können Sie Apache starten, stoppen und wieder neu starten. Sollten Sie nicht wollen, dass Apache bei jedem Systemstart automatisch gestartet wird, können Sie unter Systemsteuerung • Dienste oder unter Systemsteuerung • Verwaltung • Dienste die Konfiguration von automatisch auf manuell umändern. Damit können Sie Apache in Zukunft von Hand starten.
Unter Linux können Sie das Shell-Skript apachectl verwenden. Mit welchem Parameter dabei Apache gesteuert wird, können Sie der folgenden Tabelle entnehmen.
| Befehl | Bedeutung | 
| apachectl start | Startet den Apache | 
| apachectl stop | Stoppt den Apache | 
| apachectl restart | Neustart des Apache mit der HUP-Methode | 
| apachectl graceful | Neustart des Apache mit der USR1-Methode | 
In den meisten Fällen wird Apache bereits beim Boot-Vorgang automatisch gestartet. Leider gibt es mittlerweile so viele Linux-Distributionen und auch Apache-Versionen, dass es kaum möglich ist, Ihnen eine pauschale Anleitung zum Starten und Stoppen des Apache-Webservers zu vermitteln. Dafür sei die Dokumentation für die entsprechende Apache-Version auf der Webseite http://httpd.apache.org/docs-project/ empfohlen. Das Steuerskript apachectl ist die empfohlene Methode, um den Apache zu steuern. Weitere Möglichkeiten zum Starten von Apache sind:
| Distribution | Befehl zum Starten | 
| SuSE Linux | /sbin/init.d/apache start | 
| Red Hat Linux | /etc/rc.d/httpd start | 
Um den Apache zu konfigurieren, muss die Datei httpd.conf mit einem Texteditor geöffnet werden. Unter Windows sollte sich diese Datei im Verzeichnis C:\Programme\Apache Group\Apache2\conf befinden. Bei SuSE Linux 8.2 befindet sich diese Datei in /etc/httpd und bei Red Hat Linux im Verzeichnis /etc/httpd/conf. Beachten Sie außerdem, dass Sie eventuell Root-Rechte auf diese Datei benötigen, wenn Sie diese ändern wollen. Sollten Sie vorhaben, die CGI-Anwendungen im vorgegebenen cgi-bin-Verzeichnis auszuführen, müssen Sie in der Regel nichts an der Datei httpd.conf ändern. Dann können Sie munter die erste CGI-Anwendung in Ihrem Webbrowser starten, welche gleich erstellt werden soll. Hier der Quellcode dazu:
/* time.c */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* Die Kopfzeile eines Standard-HTML-Dokuments
 * Titel: String, der als Titel erscheinen soll
 */
void print_html_header(char *titel) {
   printf("<html><head>\n");
   printf("<title>%s</title>\n",titel);
   printf("</head><body>\n");
}
/* Das Ende eines HTML-Dokuments */
void print_html_end(void) {
   printf("</body></html>\n");
}
/* Damit überhaupt ein HTML-Dokument ausgegeben wird */
void print_header(void) {
   printf("Content-Type: text/html\n\n");
}
void print_time(void) {
   time_t zeit;
   time(&zeit);
   printf("Aktuelle Systemzeit: ");
   printf("%s\n",ctime(&zeit));
}
int main(void) {
   print_header();
   print_html_header("Hallo Welt in CGI mit Zeit\n");
   print_time();
   print_html_end();
   return EXIT_SUCCESS;
}
Die Funktion print_html_header() enthält die Kopfdaten eines HTML-Dokuments. Der String, den Sie der Funktion übergeben, wird als Titel der HTML-Seite verwendet. Und die Funktion print_html_end() enthält das Ende eines HTML-Dokuments. Zur Zeile print_header() erfahren Sie später mehr. Mit der Funktion print_time() wird die aktuelle Systemzeit ausgegeben. Da sich diese zwischen den Funktionen print_html_header() und print_html_end() befindet, also im Body-Teil des HTML-Dokuments, stellt die Ausgabe praktisch den Inhalt der HTML-Seite dar. Jetzt soll dieses CGI-Programm mit dem Webbrowser Ihrer Wahl aufgerufen werden.
Ein CGI-Programm erstellen und starten Sie in den folgenden Schritten (der Programmname sei time.c):
| Übersetzen Sie den Quellcode wie gewohnt. | 
| Verändern Sie die Extension der ausführbaren Datei. Bei Linux hat diese binäre Datei keine Extension und Sie sollten eine hinzufügen. Aus time wird hierbei time.cgi. Unter Windows läuft dies ähnlich ab, aus time.exe machen Sie time.cgi. Es kann dabei vorkommen, dass Ihr System Sie warnt, das Programm sei danach nicht mehr ausführbar. Das können Sie ignorieren. | 
| Kopieren Sie die übersetzte Datei in das cgi-bin-Verzeichnis des Webservers. Unter Windows finden Sie dieses Verzeichnis gewöhnlich in C:\Programme\Apache Group\Apache2\. Bei Linux SuSE 9.1 in /srv/www/ und bei Red Hat sollte dies der Pfad /etc/apache/ oder /etc/httpd/ sein. Außerdem werden Sie bei Linux Superuser-Rechte (su) benötigen, um auf dieses Verzeichnis schreibend zuzugreifen. | 
| Unter Linux müssen Sie noch die Zugriffsrechte der Datei time.cgi ändern. Ein einfaches chmod go+rx time.cgi sollte dabei reichen (voraussichtlich werden Superuser-Rechte dazu benötigt). | 
| Jetzt können Sie einen Webbrowser Ihrer Wahl starten und, falls nicht schon geschehen, den Apache-Webserver ebenfalls. | 
| Jetzt wird es Zeit, die CGI-Anwendung zu starten. Geben Sie in der Adressleiste Ihres Browser folgende URL ein: | 
http://localhost/cgi-bin/time.cgi
Wenn alles richtig verlaufen ist, müssten Sie folgende Ausgabe auf Ihrem Bildschirm erhalten (siehe Abbildungen 26.9 und 26.10).
| 
 Tipp Unter Linux können Sie sich das Verändern der Extension ersparen, wenn Sie der ausführbaren Datei gleich beim Übersetzen diese Extension übergeben: gcc –o time.cgi time.c.  | 

Hier klicken, um das Bild zu Vergrößern
Abbildung 26.9 Ausgabe der Systemzeit mit Internet Explorer (Windows)

Hier klicken, um das Bild zu Vergrößern
Abbildung 26.10 Ausgabe der Systemzeit mit Mozilla (SuSE Linux)
Sollten Sie die CGI-Anwendung nicht zum Laufen bekommen, sehen Sie in der folgenden Checkliste nach, welche möglichen Ursachen dies haben könnte:
| Haben Sie die Zugriffsrechte auf die CGI-Anwendung richtig gesetzt? Wenn Sie keine Rechte auf die Datei haben, sollten Sie dies nachholen. | 
| Ein Fehler im Programm? Meistens bekommen Sie dabei von Ihrem Webbrowser einen Fehler mit der Nummer 500 zurück. | 
| Führen Sie das Programm in der Kommandozeile aus und achten Sie auf die Ausgabe. | 
| Haben Sie die richtige URL im Browser eingegeben? | 
| Testen Sie nochmals, ob der Webserver richtig oder überhaupt läuft (http://localhost/). | 
| Ein Blick ins apache log kann auch nicht schaden. In der Regel ist dies in /var/log/apache/ zu finden. Interessant sind hier die Dateien error.log und access.log. Gerade beim Testen von neuen CGIs sollten Sie durch Eingabe in einer Konsole tail –f /var/log/apache/error.log mitlaufen lassen. Alle Fehlermeldungen, die dann über stderr ausgegeben werden, tauchen im log auf. | 
Bevor Sie jetzt weitere CGI-Anwendungen erstellen, benötigen Sie noch ein wenig Grundwissen zum HTTP-Protokoll.
| << zurück | 
                
  | 
        ||||||||||||||
                
  | 
        ||||||||||||||
                
  | 
        ||||||||||||||
                
  | 
        ||||||||||||||
Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.