cgicorner.ch

Informationen rund um Perl/CGI

Sie sind hier: Home > CGI Hilfe > Tutorial > Kapitel 1 - Win Webserver

Tutorial - Kapitel 1: Webserver unter Windows

Einleitung

Keine Angst! Dieses Tutorial ist sicherlich nicht Windows-orientiert, sondern richtet sich an die Programmierung unter UNIX. Damit ich meine Scripte jedoch unabhängig von einer Internetverbindung, einem Linux-Server, einer virtuellen Maschine oder mit Dual-Boot in meiner gewohnten Windows-Umgebung schreiben kann, habe ich mir eine entsprechende Programmierumgebung bereitgestellt.

Sicherlich gibt es auch noch andere Gründe, einen Webserver mit CGI/Perl Unterstützung unter Windows zu betreiben.

Als Webserver eignet sich der Apache-Webserver besonders gut, welcher Alternativ auch als XAMPP-Komplettpaket verwendet werden kann, dies ist jedoch nicht empfohlen. Unter Serverbetriebssystemen von Windows kann auch der IIS verwendet werden. 

Voraussetzungen für dieses Kapitel

Installation von ActivePerl

ActivePerl ist das Programm zum Ausführen von Perl-/CGI-Scripts unter Windows. ActivePerl ist für das XAMPP Paket nicht zwingend erforderlich, erleichtert aber die Fehlerdiagnose. Zudem werden wir ActivePerl zwingend benötigen, wenn wir MySQL-Datenbanken anbinden wollen. Für den Einsatz mit dem Apache-Webserver oder dem IIS ist die Installation zwingend notwendig.

ActivePerl kann mit den Standardeinstellungen in ein beliebiges Verzeichnis installiert werden. Die Installation dauert einen Moment (insbesondere die Generierung der HTML-Dokumentation). Haben Sie also etwas Geduld...

Installation des Apache-Webservers

Nach dem Download des ZIP-Archivs muss der Apache-Webserver in einen beliebigen Ordner entpackt werden. Es wird empfohlen, ein Ordnername ohne Leer- und Sonderzeichen zu verwenden.

Nun muss eine Eingabeaufforderung gestartet werden. Ab Windows Vista zwingend mit administrativen Rechten (rechtsklick im Startmenü und "als Administrator ausführen".

Nun sind einige Befehle notwendig, welche genau so eingegeben werden müssen. Falls Apache in ein anderes Verzeichnis entpackt wurde muss dies entsprechend angepasst werden (jede Zeile muss mit einem Enter abgeschlossen werden):

cd /D C:\Apache24\Bin
httpd.exe -k install

Es wird nun eine Fehlermeldung bei "Testing httpd.conf" erscheinen. Nun müssen wir die Datei C:\Apache24\conf\httpd.conf im Windows-Editor öffnen. Die Datei ist ziemlich unübersichtlich. Die Zeilen, die wir jetzt anpassen sind bereits vorhanden, am besten nutzt man die Suchfunktion für den Begriff vor dem ersten Leerzeichen. Pfadangaben müssen ggf. angepasst werden.

ServerRoot "c:/Apache24"
DocumentRoot "c:/Apache24/htdocs"
<Directory "c:/Apache24/htdocs">
#ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/"

In der Systemsteuerung unter "Verwaltung" - "Dienste" sollten wir den Dienst "Apache2.4" sehen und auch starten können. Schlägt der Start des Dienstes fehl muss allenfalls noch das "Visual C++ 2010 SP1 Redistributable Package x86" installiert werden. Der Download-Link befindet sich auf der Apache-Downloadseite ganz oben.

CGI-Funktionalität

Damit CGI-Scripte problemlos funktionieren sind noch ein paar weitere Anpassungen in der httpd.conf notwendig. Dazu fügen wir am Ende der Datei folgendes ein (Pfadangabe ggf. wieder anpassen):

<Directory "c:/Apache24/htdocs">
Options Indexes FollowSymLinks ExecCGI
AllowOverride All
Require all granted
</Directory>
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
TimeOut 600
<FilesMatch \.(pl|cgi)$>
ScriptInterpreterSource Registry-Strict
</FilesMatch>

Als Letzes müssen wir die Dateiendung zu den Perl-Scripten noch bekannt geben. Dazu erstellen wir im Windows-Editor eine Datei perl.reg in einem beliebigen Verzeichnis mit folgendem Inhalt (Pfad zu Perl ggf. anpassen):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Perl\shell\ExecCGI\command]
@="\"C:\\Perl\\bin\\perl.exe\" \"%1\" %*"

[HKEY_CLASSES_ROOT\.cgi]
@="Perl"

Danach können wir diese Datei mit einem Doppelklick importieren (Warnung mit Ja bestätigen) und danach den Dienst "Apache2.4" neu starten. Der Apache Webserver ist nun einsatzbereit.

XAMPP-Paket

Wichtig: wurde bereits ActivePerl und der Apache Webserver installiert, ist eine Installation von XAMPP nicht mehr notwendig. Es wird empfohlen, Perl und den Apache-Webserver separat gemäss obenstehender Anleitung zu installieren und auf die Verwendung von XAMPP zu verzichten.

Es ist empfehlenswert, das Installer-Paket von XAMPP herunterzuladen.

Auf der XAMPP-Webseite sollte die "Installer-Version" heruntergeladen werden. Diese kann mit den Standard-Einstellungen installiert werden. Es wird empfohlen, das Standard-Verzeichnis C:\Xampp beizubehalten oder sonst ein Verzeichnis ohne Sonder- und Leerzeichen zu verwenden.

Wichtig: Der Installationspfad des Apache-Friends wird in mehreren Konfigurationsdateien gespeichert. Ein nachträgliches verschieben des Installationsordners ist nur mit einer kompletten Neuinstallation möglich (oder durchkämmen aller Config-Files)

Nach der Installation kann der Apache-Server über das "XAMPP Control Panel" gestartet werden.

Path-Umgebungsvariable bei integriertem Perl

Wenn das integrierte Perl anstelle von ActivePerl verwendet wird muss die Path-Umgebungsvariable noch erweitert werden. Dazu wechselt man - ja nach Windows-Version - in der Systemsteuerung unter "System" in die "Erweiterte Systemeinstellungen" (auf der linken Seite, ab Windows Vista) und dort unter "Erweitert" in die "Umgebungsvariablen". Um unteren Abschnitt "Systemvariablen" sucht man nach der Zeile "PATH", klickt auf "Bearbeiten" und ergänzt diese Zeile um

;C:\xampp\perl\bin

Wichtig: der bestehende Inhalt muss unbedingt belassen werden und vor dem neuen Inhalt ist ein Strichpunkt notwendig. Wurde XAMPP in ein anderes Verzeichnis installiert, muss dies entsprechend angepasst werden.

Dadurch reicht es, in Perl-Scripten den relativen Pfad zu Perl anzugeben. Dazu im nächsten Kapitel mehr.

cgi-bin Ordner verschieben

Der Apache-Server wäre nun schon vollständig einsatzbereit. Der Apache hat aber - aus Sicherheitsgründen - eine Einschränkung, dass im cgi-bin Verzeichnis nur Scripte liegen dürfen und keine HTML-Seiten oder Grafiken. Der Einfachkeit halber heben wir die Umleitung auf und erstellen einen neuen cgi-bin Ordner im htdocs Verzeichnis in dem jeder Dateityp erlaubt ist. Dazu muss die Datei apache\conf\httpd.conf im XAMPP-Ordner angepasst werden:

Die Zeile

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

löschen wir, oder kommentieren Sie mit einem vorangestellten # aus.

Nachdem wir das gemacht haben, können wir das Verzeichnis cgi-bin im XAMPP-Verzeichnis in das Verzeichnis htdocs im gleichen Verzeichnis verschieben und den Apache-Server neu starten.

IIS-Webserver

Der "Internet Information Server" (IIS) wird kostenlos mit einer Windows-Servervariante mitgeliefert. Dieser unterstützt von Haus auf kein Perl/CGI, ist aber mit wenigen Handgriffen auch "Perl-fähig". Eine Anleitung für Windows 2000 und 2003 Server ist als Artikel in der Knowledgebase vorhanden. Das Prinzip dürfte auch für den IIS anderer Windows-Versionen funktionieren.

Text-Editoren

Wie Sie soeben bemerkt haben, schreiben wir die Perl-Programme in einem normalen Texteditor. Dabei tut es der Notepad theoretisch auch. Es gibt aber Text-Editoren mit Syntax-Highlighting (Befehle werden hervorgehoben), welche die Arbeit erleichtern.

Ich bevorzuge die Editoren TextPad (Shareware, http://www.textpad.com) oder PSPad (Freeware, http://www.pspad.com/de/index.html).

Mehr Informationen zu diesen Editoren finden Sie in meiner Knowledge-Base im Artikel "Texteditoren für Windows".

Testen der Installation

Unabhängig von dem verwendeten Webserver können wir den Webserver nun testen, um zu sehen, ob alles funktioniert.

Dazu wechseln wir in den htdocs Ordner innerhalb des Installationsverzeichnisses. Dort erstellen wir - wenn noch nicht vorhanden - einen neuen Ordner cgi-bin und innerhalb dieses Ordners erstellen wir mit einem Texteditor eine neue Datei test.cgi mit folgendem Inhalt:

#!perl.exe
print "Content-type: text/html\n\n";
print "<html><body><h1>Script $ENV{SCRIPT_NAME} funktioniert!</h1></body></html>";

Mehr zu diesem Code erfahren Sie in Kapitel 2.

Danach sollten Sie das Script im Browser mit der URL http://localhost/cgi-bin/test.cgi betrachten können (der Webserver muss dafür natürlich gestartet sein). Die Ausgabe auf dem Browser sollte dann eine H1-Überschrit mit dem Text "Script /cgi-bin/test.cgi funktioniert!" sein.

Ist dies der Fall? Wenn ja: Gratulation! Ihr Webserver läuft. War doch ganz einfach, oder?

Nein? Können Sie die Seite http://localhost betrachten? Wenn nicht: kontrollieren Sie, ob der Webserver gestartet ist, versuchen Sie einmal die IP "127.0.0.1" anstelle von "localhost". Ja? Kontrollieren Sie die Perl-Installation. Möglicherweise erscheint auf dem Browser eine Fehlermeldung, die Ihnen weiterhilft.

Übrigens: Wenn Ihr Computer in einem Netzwerk ist, können Sie natürlich auch von einem anderen Browser auf diesen Webserver zugreifen. Ersetzen Sie einfach "localhost" durch die IP-Adresse des PCs, auf dem Apache läuft. Bei XAMPP sind externe Zugriffe auf die eigenen Demoseiten je nach Version unterbunden, das kann freigegeben werden, indem in der Datei apache\conf\extra\httpd-xampp.conf die Zeilen zum Security-Konzept gelöscht werden. Suchen Sie dafür nach folgender Zeile fast zuunterst in der Datei

# New XAMPP security concept

und löschen Sie ab dieser Zeile alle Zeilen bis ans Dateiende.

Wichtig: Der Apache-Webserver mit XAMPP benötigt stets den korrekten Pfad zu Perl in der ersten Zeile (also #!perl.exe). Beim eigenständigen Apache-Webserver haben wir dies mit der Anpassung der httpd.conf und dem importieren der Reg-Datei "korrigiert". Hier ist die Angabe völlig egal, muss jedoch vorhanden sein. In den Beispielen der folgenden Kapitel verwende ich immer #!/usr/bin/perl, welches unter UNIX/Linux dem Standard entspricht und in 99% der Fällen stimmt. Auch meine Scripts im Downloadbereich haben diese Pfadangabe defaultmässig angegeben. Wenn Sie also die Beispiele oder Scripts von meiner Homepage mit XAMPP unter Windows testen wollen, müssen Sie jeweils diese erste Zeile anpassen. Unter Linux oder der eigenständigen Apache-Installation kann diese Zeile unverändert belassen werden.

Zusammenfassung

In diesem Kapitel haben wir unter Windows Perl sowie den Webserver Apache (entweder als eigenständiges Paket oder als XAMPP Komplettpaket) installiert und getestet. Mir einigen Anpassungen haben wir dafür gesorgt, dass CGI-Scripts in jedem Verzeichnis funktionieren und bei der Standalone-Apache-Version die erste Zeile zu Perl nicht mehr relevant ist. Zudem haben wir bemerkt, dass wir unsere Scripte in normalen Texteditoren schreiben und zwei Alternativen zu Notepad kennengelernt.

Wie geht's weiter?

Im Kapitel 2 befassen wir uns einmal mit dem Aufbau eines Perl-Scripts.

Sie können aber auch zurück zum Inhaltsverzeichnis und dort ein beliebiges anderes Kapitel auswählen.