Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 23 CGI mit C
Pfeil 23.1 Was ist CGI?
Pfeil 23.2 Vorteile von CGIs in C
Pfeil 23.3 Andere Techniken der Webprogrammierung
Pfeil 23.4 Das dreistufige Webanwendungsdesign
Pfeil 23.4.1 Darstellungsschicht
Pfeil 23.4.2 Verarbeitungsschicht
Pfeil 23.4.3 Speicherschicht
Pfeil 23.5 Clientseitige Programmierung
Pfeil 23.5.1 JavaScript
Pfeil 23.5.2 Java-Applets
Pfeil 23.6 Serverseitige Programmierung
Pfeil 23.7 Der Webserver
Pfeil 23.7.1 Das Client/Server-Modell des Internets
Pfeil 23.7.2 Serverimplementierung
Pfeil 23.7.3 Hosting-Services
Pfeil 23.7.4 Schlüsselfertige Lösung
Pfeil 23.7.5 Weitere Möglichkeiten
Pfeil 23.7.6 Apache
Pfeil 23.8 Das HTTP-Protokoll
Pfeil 23.8.1 Web-Protokolle
Pfeil 23.8.2 Wozu dienen Protokolle?
Pfeil 23.8.3 Was ist ein Protokoll?
Pfeil 23.8.4 Normen für die Netzwerktechnik
Pfeil 23.8.5 Das OSI-Schichtenmodell
Pfeil 23.8.6 Die Elemente einer URL
Pfeil 23.8.7 Client-Anfrage – HTTP-Request (Browser-Request)
Pfeil 23.8.8 Serverantwort (Server-Response)
Pfeil 23.8.9 Zusammenfassung
Pfeil 23.9 Das Common Gateway Interface (CGI)
Pfeil 23.9.1 Filehandles
Pfeil 23.9.2 CGI-Umgebungsvariablen
Pfeil 23.9.3 CGI-Ausgabe
Pfeil 23.10 HTML-Formulare
Pfeil 23.10.1 Die Tags und ihre Bedeutung
Pfeil 23.11 CGI-Eingabe
Pfeil 23.11.1 Die Anfrage des Clients an den Server
Pfeil 23.11.2 Eingabe parsen
Pfeil 23.12 Ein Gästebuch
Pfeil 23.12.1 Das HTML-Formular (»guestbook.html«)
Pfeil 23.12.2 Das CGI-Programm (»auswert.cgi«)
Pfeil 23.12.3 Das HTML-Gästebuch (»gaeste.html«)
Pfeil 23.13 Ausblick


Rheinwerk Computing - Zum Seitenanfang

23.7 Der Webserver Zur nächsten ÜberschriftZur vorigen Überschrift


Rheinwerk Computing - Zum Seitenanfang

23.7.1 Das Client/Server-Modell des Internets Zur nächsten ÜberschriftZur vorigen Überschrift

Das Internet oder genauer das World Wide Web wurde nach dem Client/Server-Prinzip entwickelt. Der Webbrowser ist in dieser Architektur der Client. Geben Sie z. B. in den Webbrowser die Adresse http://www.pronix.de/ ein, ruft der Browser Dienste im Web ab. In diesem Fall wird eine HTTP-Anforderung über das Netzwerk verschickt. Mit dem HTTP-Protokoll haben Sie jetzt Zugriff auf Dateien von Servern in Netzwerken. Der Server oder genauer der Webserver verarbeitet nun die Anfrage des Clients. Dabei ist der Standort des Webservers egal. Dieser kann sich im selben Gebäude, auf der anderen Seite der Erde oder auch auf demselben Computer befinden. Meistens besteht die Aufgabe des Webservers im Internet darin, ein angefordertes Dokument an den Client zurückzuschicken, beispielsweise HTML-Daten zur Darstellung einer Webseite. Der Webserver wird häufig auch als HTTP-Dämon (Hypertext Transfer Protocol Daemon) bezeichnet. Abbildung 23.2 stellt den Vorgang einer solchen Transaktion bildlich dar:

Abbildung 23.2 Transaktion einer HTTP-Anfrage


Hinweis

Ein Webserver ist nichts anderes als ein Programm bzw. eine Anwendung (meist in C geschrieben) ohne visuelle Oberfläche auf dem Server. Das Programm können Sie nicht sehen. Es nimmt über Ports (meistens Port 80) einen Auftrag entgegen und führt diesen aus, zumeist handelt es sich dabei um das Anzeigen einer HTML-Seite. Häufig wird irrtümlicherweise der Server als Hardware mit dem Serverprogramm darauf gleichgesetzt, allerdings ist die Beziehung hier so eng, dass dies auch wieder nicht ganz verkehrt ist.



Rheinwerk Computing - Zum Seitenanfang

23.7.2 Serverimplementierung Zur nächsten ÜberschriftZur vorigen Überschrift

Bevor Sie sich, sei es privat oder für eine Organisation, für eine Webpräsenz entscheiden, müssen Sie zunächst überlegen, wie oder mit wem Sie ins Web gehen. Entscheidend für die Organisationsstrategie werden wohl die Kosten und der Zweck Ihrer Präsenz sein.

In der Regel werden Sie sich für eine der zwei gebräuchlichsten Strategien zur Webserverimplementierung entscheiden:

  • Hosting-Service – Der Webserver wird remote über den Internet Service Provider (ISP) unterstützt.
  • Schlüsselfertige Lösungen – Dies ist eine komplette Soft- und Harwarelösung, die lokal am physischen Standort verwaltet wird.

Rheinwerk Computing - Zum Seitenanfang

23.7.3 Hosting-Services Zur nächsten ÜberschriftZur vorigen Überschrift

Die meisten Anwender dürften sich für einen Hosting-Service entscheiden. Dabei geht der Kunde über einen Web Service Provider (WSP) ins Netz. Verwechseln Sie aber den WSP nicht mit dem Internet Service Provider (ISP). Mit dem ISP wählen Sie sich ins Internet ein, mit einem WSP richten Sie Ihre Internetpräsenz ein. Allerdings bieten heute viele ISPs auch schon Hosting-Services an. Sie bekommen z. B. bei großen ISPs wie AOL oder T-Online auch schon 10 MB Platz für eine Internetpräsenz. Dabei müssen Sie aber auf Extras und eine eigene Domain wie www.mein_wunschname.de verzichten.

Bei den vielen Hosting-Services, die es mittlerweile im Netz gibt, ist es schon schwer, sich einen Überblick zu verschaffen. Da Sie wahrscheinlich die Beispiele im Buch erst einmal am lokalen Rechner testen, müssen Sie sich jetzt noch keine Gedanken darüber machen, wo Sie Ihre Webseite hosten. Aber Sie sollten, falls Sie eigene Skripte auf den Webserver hochladen wollen, darauf achten, dass bei den Leistungen Dinge dabei sind wie: eigene CGIs ausführen, PHP ausführen, Zugriff auf eine MySQL-Datenbank haben. Gute Hosting-Services kosten so in etwa 10 bis 50 Euro monatlich. Geben Sie einfach in einer Suchmaschine den Begriff »Hosting-Service« ein, und Sie bekommen unzählige Ergebnisse zurück.

Die Vorteile solcher Hosting-Services sind ganz klar der günstige Preis und die Tatsache, dass Sie keinerlei Verwaltungsaufgaben und Aufwand haben und somit über keinerlei technische Erfahrung mit Webservern verfügen müssen. Ebenso ist ein enormer Vorteil, dass die meisten Hosting-Services eine Bereitschaft rund um die Uhr, an sieben Tagen in der Woche bieten.


Rheinwerk Computing - Zum Seitenanfang

23.7.4 Schlüsselfertige Lösung Zur nächsten ÜberschriftZur vorigen Überschrift

Bei einer schlüsselfertigen Lösung handelt es sich um eine vollständige in sich geschlossene Soft- und Hardwarelösung. Der Vorteil gegenüber dem Hosting-Service liegt darin, dass Sie bei einem technischen Problem nicht vom WSP abhängig sind. Es wird dabei praktisch nur noch ein Server am Netzwerk und am Stromnetz angeschlossen, und Sie sind im Web. Dabei ist aber schon ein gewisses Maß an Know-how notwendig. Solche Server-Applikationen sind vorwiegend für kleinere bis mittlere Organisationen gedacht. Die Konfiguration des Webservers wird meistens über den Client, den Webbrowser, vorgenommen, der mit einer einfach zu bedienenden Oberfläche ausgestattet ist. Oft wird bei der Software Linux als Betriebssystem und Apache als Webserver verwendet, da bei beiden kaum lizenzrechtliche Bestimmungen beachtet werden müssen.


Rheinwerk Computing - Zum Seitenanfang

23.7.5 Weitere Möglichkeiten Zur nächsten ÜberschriftZur vorigen Überschrift

Theoretisch haben Sie aber auch die Möglichkeit, einen Server von zu Hause aus zu betreiben. Dabei installieren Sie einen Webserver auf Ihrem PC. Danach wählen Sie sich ins Internet ein und bekommen meist eine dynamische IP-Adresse. Unter dieser IP-Adresse können jetzt die Surfer Ihre Webseite ansteuern und das Internetangebot auch nutzen. Der Vorteil: Diese Lösung kostet keinen Cent. Aber bei einer ständig wechselnden IP-Adresse Ihrer Webseite dürfte wohl kaum ein Websurfer Ihre Seite finden. Dieses Problem können Sie theoretisch mit kostenlosen Diensten wie www.dyndns.org beheben. Damit können Sie sich auch ohne DENIC eine Webadresse einrichten lassen – wobei logischerweise die Bandbreite der Besucher, die sich gleichzeitig auf Ihrer Seite tummeln können, beschränkt ist. Aber probieren macht gewöhnlich Spaß, und so lernen Sie auch noch einiges dabei.

Eine weitere Möglichkeit stellt das Intranet dar, ob nun privat oder geschäftlich. Wenn Sie das Glück haben, in einer Firma ein größeres Intranet zu betreiben, können Sie schalten und walten, wie Sie wollen.


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.



Rheinwerk Computing - Zum Seitenanfang

23.7.6 Apache topZur vorigen Überschrift

1995 schlossen sich mehrere Entwickler zusammen, um den damals dominierenden, aber sehr fehlerhaften Webserver NCSA weiterzuentwickeln. Was dabei herauskam, wurde wegen der vielen Fehlerbehebungen (Patches) »a patchy Server« oder einfach »Apache« genannt.

Warum Apache?

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 Apache 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:

Abbildung 23.3 Verwendete Webserver im Internet

And last, but not least: Apache ist kostenlos. Der Webserver finanziert sich durch die Apache Software Foundation, der 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 willkommen. Mehr dazu finden Sie unter http://www.apache.org.

Apache installieren und testen

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 sie im Web der Öffentlichkeit vorstellen.

Den Vorgang der Installation zeige ich anhand der Binary-Version des Apache, da dies wohl die Installationsart ist, die am häufigsten verwendet wird. Für eine Beschreibung, wie Sie mit dem Sourcecode einen persönlichen Apache erstellen können, sei die Homepage http://www.apache.org empfohlen.

Windows

In der Regel kann der Apache auf jeder Windows-Version ohne Probleme betrieben werden. Die Funktionalität kann hierbei für Windows 2000 (w2k), Windows Server 2003 (R2), Windows XP (SP2 und SP3) und Windows Vista garantiert werden. Nicht mehr offiziell unterstützt wird Windows 98SE, obgleich auch hier der Apache noch läuft.

Für die Installation können Sie sich zwar die aktuellste Version von Apache von der offiziellen Apache-Webseite (http://www.apache.org/) herunterladen, aber ich empfehle Ihnen, sofern Sie noch nie etwas mit Webservern zu tun gehabt haben, hierfür das Komplettpaket XAMPP für Windows. Der Vorteil des Pakets ist, dass Sie sich für den Hausgebrauch keine Gedanken um die Konfigurationen machen müssen, und außerdem sind neben dem Apache auch gleich MySQL, PHP, phpMyAdmin, FileZilla FTP Server und der Mercury E-Mail-Server dabei. Und um das alles zu steuern, gibt es auch gleich mit dem XAMPP Control Panel eine grafische Oberfläche dazu. Die aktuellste Version können Sie sich von der Webseite http://www.apachefriends.org/ herunterladen und mithilfe des Installers installieren.


Hinweis

Wenn Sie noch Perl und Tomcat dazu benötigen, können Sie diese ebenfalls von derselben Webseite als Add-Ons nachinstallieren.


Nach der Installation von XAMPP können Sie über das XAMPP Control Panel die Server starten und stoppen (siehe Abbildung 23.4). Hier können Sie auch gleich die Server als Dienst installieren bzw. deinstallieren, wenn Sie die Checkbox des entsprechenden Servers aktivieren bzw. deaktivieren.

Abbildung 23.4 Das XAMPP Control Panel zum Starten und Stoppen der Server

Für dieses Kapitel benötigen Sie zunächst nur den Apache als Webserver. Daher reicht es aus, wenn Sie nur diesen über den Button Start ausführen.

Wenn Sie jetzt XAMPP installiert haben und den Apache-Server gestartet haben, können Sie den Webbrowser öffnen und hier die Adresse http://localhost eingeben und mit Taste Enter bestätigen. Jetzt sollten Sie die Ansicht aus Abbildung 23.5 erhalten.

Abbildung 23.5 Der Apache-Webserver läuft – hier können Sie außerdem auch gleich einige Tests und Demos ausführen.


Hinweis

Wenn Sie unter Vista das Benutzerkonto (UAC – User Account Control) aktiviert haben, müssen Sie das Setup natürlich als Administrator durchführen. Auch die entsprechenden Ports müssen gegebenenfalls bei der Firewall freigeschaltet werden. Sofern Sie das Benutzerkonto (UAC) nicht deaktivieren wollen bzw. können, sollten Sie außerdem XAMPP in ein anderes Verzeichnis als C:\Programme installieren (beispielsweise c:\xampp) weil Sie sonst nur eingeschränkte Schreibrechte haben, womit sich beispielsweise Änderungen in Skripten nicht durchführen lassen. Mehr dazu finden Sie auf der Webseite http://www.apachefriends.org/ in der FAQ.


Linux

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.

Abbildung 23.6 Paketauswahl bei der Ubuntu-Distribution mit der Paketverwaltung »Synaptic«

Natürlich können Sie auch die neueste Version des Apache herunterladen und installieren, was allerdings für die Beispiele dieses Buchs nicht nötig ist. Diese wurden unter anderem auch mit dem Apache der Version 1.3 und 2.2 getestet. Als Nächstes müssen Sie gegebenenfalls den Webserver in einer Konsole mit folgendem Befehl starten:

$ sudo /etc/init.d/apache2 start
[sudo] password for user: ******
* Starting web server apache2 [ OK ]
$

Sollte dies nicht funktionieren, können Sie mit Administrator-Rechten das apache2ctl-Skript verwenden, um Apache zu starten. Dann sollte es mit folgendem Aufruf klappen:

$ sudo apache2ctl start
[sudo] password for user: ******
* Starting web server apache2 [ OK ]
$

Das Steuerskript apache2ctl ist die empfohlene Methode, um den Apache zu steuern. Mit welchem Parameter dabei Apache gesteuert wird, können Sie Tabelle 23.1 entnehmen.


Tabelle 23.1 Steuern des Apache mit dem Shellskript »apach2ectl« (Linux)

Befehl Bedeutung
apache2ctl start

Startet den Apache.

apache2ctl stop

Stoppt den Apache.

apache2ctl restart

Neustart des Apache mit der HUP-Methode

apache2ctl graceful

Neustart des Apache mit der USR1-Methode


Wenn Sie Apache installiert und gestartet haben, können Sie den Webbrowser öffnen und hier die Adresse http://localhost eingeben und mit Taste Enter bestätigen. Die Startseite des Apache kann von Distribution zu Distribution unterschiedlich aussehen (siehe Abbildung 23.7).

Abbildung 23.7 Schnörkellos, aber klar: die Antwortseite bei Ubuntu

htdocs-Verzeichnis

Die Begrüßungsseite in den verschiedensten Sprachen finden Sie im htdocs-Verzeichnis. Bei den vielen verschiedenen Distributionen und Betriebssystemen ist es gar nicht so einfach, das Verzeichnis zu finden. Gerade bei Linux/Unix-Systemen, wo vieles selbst kompiliert wird, hängt das Verzeichnis (auch als Direktive DocumentRoot bekannt) vom vordefinierten Layout ab. In Tabelle 23.2 finden Sie einige dieser vordefinierten Layouts (ohne Garantie auf Vollständigkeit).


Tabelle 23.2 Verschiedene vordefinierte Layouts für das »htdocs«-Verzeichnis

System/Distribution Verzeichnis

Apache (Standardlayout)

/usr/local/apache2/htdocs

Beos

/boot/home/apache/htdocs

BSD

/var/www/htdocs

Darwin (MacOS X)

/Library/WebServer/Documents

Debian

/usr/share/apache2/default-site/htdocs

FreeBSD

/usr/local/www/data

GNU

/usr/local/share/apache2/htdocs

MacOS X Server

/Local/Library/WebServer/Documents

OpenBSD

/var/www/htdocs

opt-Verzeichnis

/opt/apache/share/htdocs

Red Hat

/var/www/html

Solaris

/var/apache/htdocs

SuSE

/usr/local/httpd/htdocs

Ubuntu

/usr/share/apache2/default-site/htdocs


Unter Windows kann der Pfad ebenfalls recht unterschiedlich sein. Bei XAMPP beispielsweise finden Sie das htdocs-Verzeichnis in c:\xampp\htdocs bzw. c:\Programme\xampp\htdocs.

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 und anzeigen.


Hinweis

Wo sich das Basisverzeichnis für die Webseiten des Hauptservers (wie hier eben mit dem Standardwert /htdocs) befindet, wird in der Konfigurationsdatei httpd.conf bzw. apache2.conf von Apache mit der Direktive DocumentRoot festgelegt.


Apache für CGI-Anwendungen konfigurieren

Wenn Sie irgendetwas beim Apache konfigurieren müssen, ist die Konfigurationsdatei httpd.conf Ihre erste Anlaufstelle. Bei Linux/Unix benötigen Sie zum Editieren dieser Datei natürlich Administratorrechte. Bei vielen Distributionen wird der Dateiname httpd.conf gar nicht mehr verwendet, sondern die Datei heißt apache2.conf.

Auch der Pfad zur Konfigurationsdatei des Apache lässt sich nicht auf Anhieb genau nennen. So finden Sie beispielsweise bei Windows mit XAMPP die Konfigurationsdatei im xampp-Verzeichnis unter C:\Pfad_zu_XAMPP\apache\conf und bei Linux (hier beispielsweise bei Ubuntu) im Verzeichnis /etc/apache2. Allerdings kann dieser Pfad auch woanders liegen.

Enorm von Bedeutung ist hier die Direktive ScriptAlias, mit der Sie den Namen für das CGI-Verzeichnis (traditionell lautet der Name cgi-bin) und den Pfad dahin festlegen. Standardmäßig ist dieses Verzeichnis ein anderes als das DocumentRoot-Verzeichnis (das htdocs-Verzeichnis). Gewöhnlich wird dieses Verzeichnis mit dem Modul mod_alias (bzw. alias_module) und der Direktive ScriptAlias bereitgestellt.


Hinweis

Sollten Sie vorhaben, die CGI-Anwendungen im vorgegebenen cgi-bin-Verzeichnis auszuführen, müssen Sie in der Regel nichts in der Konfigurationsdatei ändern.


Beispielsweise sieht diese Zeile bei XAMPP unter Microsoft Windows wie folgt aus:

    ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"

Und unter Linux so:

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

Hier wurde der traditionelle Name cgi-bin verwendet, gefolgt vom Verzeichnis, wo sich dieses befindet und wo Sie (hier bspw. /var/www/cgi-bin/) Ihre CGI-Anwendungen ausführen können. Die Werte können Sie selbstverständlich an Ihre Bedürfnisse anpassen. Ein Zugriff auf http://localhost/cgi-bin/test.cgi entspricht dann praktisch unter Windows einem Zugriff auf C:\xampp\cgi-bin\test.cgi bzw. bei Linux einem Zugriff auf /var/www/cgi-bin/test.cgi.


Hinweis

Wenn Sie mehrere Verzeichnisse CGI-fähig machen wollen, können Sie auch die Direktive ScriptAliasMatch verwenden.



Hinweis

Es sollte klar sein, dass in diesem Buch der Umfang von httpd.conf bzw. apache2.conf und Apache nicht ausreichend beschrieben werden kann. Für die Ausführung von CGI-Skripten reicht es zwar, aber für mehr Informationen empfehle ich Ihnen, die Apache-Dokumentation (http://httpd.apache.org/docs/) zu lesen. Wenn Sie auf der Suche nach Literatur zu Apache sind, kann ich Ihnen ohne Bedenken das Buch »Apache 2.4 – Das umfassende Handbuch« von Sascha Kersken (erschienen beim Rheinwerk Verlag; ISBN 978-3-8362-1777-4) empfehlen.


Hier sehen Sie eine erste CGI-Anwendung, die Sie in Ihrem Webbrowser zum Testen starten können:

/* 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):

1. Übersetzen Sie den Quellcode wie gewohnt.
2. 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.
3. Kopieren Sie die übersetzte Datei in das cgi-bin-Verzeichnis des Webservers. Unter Linux/Unix werden Sie hierbei Administratorrechte benötigen, um auf das Verzeichnis schreibend zugreifen zu können.
4. CGIZugriffsrechteUnter Linux müssen Sie noch die Zugriffsrechte der Datei time.cgi ändern. Ein einfaches chmod a+x time.cgi sollte dabei reichen (voraussichtlich werden Superuser-Rechte dazu benötigt).
5. Jetzt können Sie einen Webbrowser Ihrer Wahl starten und, falls es nicht schon geschehen ist, den Apache-Webserver ebenfalls.
6. Jetzt wird es Zeit, die CGI-Anwendung zu starten. Geben Sie in der Adressleiste Ihres Browser folgende URL ein:

Wenn alles richtig verlaufen ist, müssten Sie folgende Ausgabe auf Ihrem Bildschirm erhalten:

Abbildung 23.8 Ausgabe der Systemzeit mit Mozilla (SUSE Linux)


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.


Troubleshooting

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.
  • Liegt ein Fehler im Programm vor? 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.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: C/C++






 C/C++


Zum Katalog: Einstieg in C






 Einstieg in C


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
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.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de