Übersicht Apache auf Windows
Der Apache HTTP-Server ist
mit 56% der weltweit am weitesten eingesetzte Web-Server wie die
Statistik
von Netcraft zeigt. Apache wird als Open-Source-Projekt (http://httpd.apache.org)
entwickelt.
Ich nutze Apache auf meinem Notebook unter Windows2000 als Entwicklungssystem.
Weitere Einzelheiten: http://lonzo.org.whsites.net/twiki/bin/view/Kracht/PHP
Einrichtung des Apache Web Servers (HTTP-Server)
Apache 1.3.29 ist für Windows als "Binary Distribution"
erhältlich von:
Unter Windows2000 und WinXP kann es als Service laufen, unter Win98 nicht.
Die wichtigsten Konfigurierungen werden in der Datei httpd.conf
vorgenommen. Ich habe folgendes individuell eingestellt:
- DocumentRoot
- ServerAdmin
- LanguagePriority
PHP mit Apache
PHP ist ein Open-Source-Projekt ("Apache Sister Project") http://www.php.net.
Die Binaries gibt es bei: http://www.php.net/downloads.php.
Mit Apache als Webserver kann PHP entweder als "klassische
CGI-Version" oder als Server-API-Erweiterung ("SAPI") installiert werden.
Ich beschreibe hier zunächst die für Windows als stabilere
Variante empfohlende CGI-Installation.
1. PHP4 unter Windows installieren und konfigurieren
PHP wird von www.PHP.net downgeloaded und installiert in d:\php.
Dann werden folgende Eintragungen in der Konfigurationsdatei php.ini
vorgenommen:
Schritt |
Eintragung |
Erläuterung |
(a) |
engine = On |
Enable the PHP scripting language engine under
Apache. |
(b) |
include_path = ".;d:\php\pear" |
(nichts Apache-spezifisches) |
(c) |
doc_root = |
The root of the PHP pages (Wenn leer, identisch
mit Apache Doc Root) |
(d) |
extension_dir = d:\php\extensions |
Directory in which the loadable extensions (modules)
reside. |
(e) |
extension=php_db.dll |
|
(f) |
extension=php_gd.dll |
|
(g) |
... |
|
2. Apache konfigurieren
In die Konfigurationsdatei httpd.conf wird eingetragen:
Schritt |
Eintragung |
Erläuterung |
(a) |
ScriptAlias /php/ "d:/php/" |
|
(b) |
AddType application/x-httpd-php .php |
|
(c) |
Action application/x-httpd-php "/php/php.exe"
|
Hier wird dem in Schritt (b) definierten MIME-Typen
als Applikation das php.exe zugeordnet. Dabei wird der in Schritt
(a) definierte ScriptAlias /php/ verwendet. |
|
|
|
3. Testen der Apache-PHP-Konfiguration
Ok, let's test if you got PHP working.
Create a file named phpinfo.php in your document root, by default
the htdocs directory in your main Apache directory.
Add the line to your new file:
<?php
phpinfo();
?>
Open your browser and type http://localhost/phpinfo.php
(or: http://lonzo.org.whsites.net/php/phpinfo.php),
you will see if the installation is successful. You should now get
a page full of useful information up.
If you don't get the page up, you messed it.
Weitere Infos zu PHP: http://www.phpbuilder.org
4. Apache-PHP-Konfiguration als SAPI
Ok, let's test if you got PHP working.
Create a file named phpinfo.php in your document root, by default
the htdocs directory in your main Apache directory.
Add the line to your new file:
In die Konfigurationsdatei httpd.conf wird eingetragen:
Schritt |
Eintragung |
Erläuterung |
(a) |
LoadModule php4_module d:/php/sapi/php4apache.dll |
|
(b) |
AddModule mod_php4.c |
|
(c) |
AddType application/x-httpd-php .php |
|
Das Hauptmodul php4apache.dll benötigt das zentrale PHP-Modul php4ts.dll.
Das wird zunächst in \WINNT\system32 gesucht, wenn man es dahin nicht
kopieren möchte, kann man es auch in den gleichen Ordner wie php4apache.dll
kopieren:
copy d:/php/php4ts.dll d:/php/sapi/php4ts.dll
Nun den Apache neu starten und ab geht es...
Perl mit Apache
Das Apache-Perl-Integrationsprojekt findet man unter http://perl.apache.org
.
Fertige Binaries unter http://perl.apache.org/distributions.html.
Die Win32-Binaries unter Binary Distribution
von dort das neuste selbstextrahierende perl-win32-bin-x.x.exe herunterladen
und readme konsultieren. Neu: Durchgesetzt hat sich die Windows-Perl-Version von http://www.activestate.com
1. Download perl-win32-bin-0.7.exe
2. Extrahieren in einen temporären Ordner
3. Die Unterordner Perl, Apache und Openssl verschieben nach C:\Perl,
C:\Apache und C:\Openssl
4. Aus C:\Perl die Dateien libdb.dll, zlib.dll und expat_win32.dll
in einen Order, der im PATH liegt verschieben.
5. Im Autoexec.bat des PATH erweitern um: c:\perl\bin und c:\openssl\bin.
6. Das neue Apache starten: apache.exe -k start
7. Test der Installation
Zum Testen brauchen wir einen Script-Ordner, den Apache auch kennt
und darin ein paar Perl-Scripts zum testen.
(a) Als Script-Ordner richten wir perl in httpd.conf ein:
Alias /perl/ "d:/webshare/wwwroot/cgi-bin/"
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
</Location>
(b) Als Test-Script speichern wir dies unter dem Namen hello.pl:
#!/Perl/bin/perl
#*********************************************************
# Script for printing Hello World
#
# 1997-10-05 Dietrich Kracht
#*********************************************************
$CRLF = "\n";
$date = localtime();
#print "Content-type: text/html",$CRLF,$CRLF;
print "<html><head>\n";
print "<title>Perl Hallo Welt</title>\n";
print "</head>\n";
print "<body>\n";
print "<center><h1>Hallo Welt, hier bin ich</h1></center>\n";
print "<hr>\n";
print "<p>Hello, world!";
print " It is now: " . $date . "</p>\n";
print "</body></html>\n";
Aufruf des Test-Scripts im Browser:
http://localhost/perl/hello.pl
http://localhost/perl/basepath.cgi
http://localhost/asp/env.html
Na, hat das funktioniert?
WebDAV mit Apache
Das WebDAV-Modul ist ebenfalls als Binary für Win98 erhältlich.
http://www.webdav.org/mod_dav/win32/
In der Konfigurationsdatei httpd.conf wird eingetragen:
Es funktioniert bestens unter Win98.
Es ist damit HTTP 1.1 und die zusätzliche WebDAV-Funktionalität
implementiert.
D.h. es sind Webfolder möglich und WebDAV-Clients wie Word 2000,
Excel 2000 und Powerpoint 2000 können direkt zugreifen, Frontpage
2000 mal wieder nicht, weil es zusätzlich die propietären Frontpage-Servererweiterungen
benötigt.
Authentification
Die einfachste Form des Zugrifsschutzes auf Web-Seiten und Ordner
bei Apache ist folgende:
1. Anlegen einer “User-Datei”, die Usernamen und verschlüsselte
Passwords enthält.
Dafür gibt es das einfache Utility "htpasswd". Dieses
befindet sich im Ordner C:\Apache\bin.
Der erste User für eine neues Passwort-Datei wird so angelegt:
Es wird die Userdatei "userdatei" neu angelegt, ein user
"emil" wird eingetragen. Anschliessend fordert das Utility
zur Passworteinabe auf. Das Passwort wird verschlüsselt in der User-Datei
abgespeichet.
Der zweite User wird so angelegt:
Danach fordert das Utility wieder zur Passworteingabe auf, uns
so weiter....
Wir haben nun eine User-Datei namens "C:\Apache\bin\userdatei"
mit zwei Usern.
2. Definieren von Zugrifsberechtigungen für Ordner
In der Konfigurationsdatei "httpd.conf" wird eingetragen:
<Location /IT/intern/Telefon>
AuthName "Intranet Telefon"
AuthType Basic
AuthUserFile /Apache/bin/userdatei
require user emil otto
</Location>
Das Laden irgendwelcher Apache-Module ist für diese Art der Authenmtification
nicht erforderlich.
3. Zugriff auf den so geschützen Ordner
Wenn man jetzt z.B. mit dem Microsoft Internet Explorer auf den
Ordner zugreift, erscheint folgendes generisches Login-Fenster:
Servlets mit Apache
JServ war der erste Versuch Servlets bei Apache zu unterstützen
und ist jetzt nicht mehr der aktuelle Stand.
Tomcat ist das aktuelle Mittel der Wahl. ES unterstützt Serrvlets
und JSP.
Ursprünglich dedacht als Referenzimplementation von SUN, wird
es durchaus auch in echten industriellen Installationen eingesetzt
(z.B. freenet.de). Ich selber habe auch praktische Erfahrungen mit
Tomcat in einem industriellen Projekt gemacht, über das ich in Kürze
hier berichten werde.
Tomcat-Lösung
((demnächst hier))
JServ-Lösung
Um mit dem Apache-Server JavaServlets ausführen zukönnen benötigt
man eine Servlet Engine, z.B. "Apache JServ 1.2.2", welches
voll das Servlet API 2.0 erfüllt.
Apache JServ ist Bestandteil des "Java Apache Project"
und benötigt als Voraussetzung:
(a) Eine Java Virtual Machine ab 1.1, also z.B. JDK 1.3
(b) Das Java Servlet Development Kit SDK 2.0
Downloads:
1. Java 2 SDK Standard Edition
v1.3
2. Java
Servlet Development Kit 2.0
3. ApacheJServ-1.1.2
......
|