Apache
Web-Server Apache
Einsatzzweck
Auf meinem Entwicklungssystem betreibe ich als WebServer Apache. Die Einsatzzwecke sind:
- Staging-System für meine Web-Sites, die ich dann zu meinen Web-Hosting-Providern uploaden will
- Als Trägersystem ("Application Server") für produktive Anwendnungen
- Mein WikiWikiWeb für das Knowledge-Management: TWiki
- Meine Link-Verwaltung PhpLinks
Installationen
Installation auf ComputerBraunbaer
- Definitive Software Library ID: Apache
- Version: 2.2.4
- Betriebsystem: WindowsXP Professional
- Installationsordner: D:\Programme\Apache
- Konfigurationsdateien: D:\Programme\Apache\conf\httpd.conf ----> Datensicherung
- DocumentRoot: E:\var\www\htdocs
- Start: Als Windows Service unter WindowsXP unter dem Account "kracht" ????
- Authentifizierung, Zusatzmodule,.....
Installation auf ComputerKragenbaer
- Definitive Software Library ID: Apache
- Version: 2.2.4
- Betriebsystem: WindowsXP Professional
- Installationsordner: D:\Programme\Apache
- Konfigurationsdateien: D:\Programme\Apache\conf\httpd.conf ----> Datensicherung
- DocumentRoot: E:\var\www\htdocs
- Start: Als Service unter WindowsXP unter dem Account "kracht" ????
- Authentifizierung, Zusatzmodule,.....
Virtual Hosts
Mit sog. "Virtual Hosts" kann man die Adressierung mehrerer WebSites auf einem Computer (d.h. auf einem Apache) vernünftiger machen. Z.B. so wie es nachher auch beim WebProvider geschieht.
Beispiel: Zwei Sub-Domains mit Typo3
Zu bedenken sind zwei besondere Punkte:
- Namensauflösung: Die ServerNamen müssen über DNS oder sonstwie (hosts-Datei) auf die IP-Adresse des Apache-Servers geleitet werden
- Neben den als extra Virtual Hosts eingerichteten WebSites möchte man meistens auch noch auf die sonst noch verhandenen sog. "globalen" Seiten des Apache zugreifen. Man benötigt also eine Art "Default" für den Fall das die "normale" (nicht virtualle) Adresse verwendet wird. Dieser Default-Server muss als erster VirtualHost in der Konfiguration angegeben werden und muss den gleichen ServerName haben, wie der ServerName in der "globalen" Konfiguration.
# # Use name-based virtual hosting. # NameVirtualHost *:80 # <VirtualHost *:80> DocumentRoot "D:/var/www/htdocs" ServerName localhost ServerAlias 127.0.0.1 </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@wiki.graumann.kr8.de DocumentRoot "D:/var/www/htdocs/typo3" ServerName wiki.graumann.kr8.de ErrorLog logs/wiki.graumann.kr8.de-error_log CustomLog logs/wiki.graumann.kr8.de-access_log common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@blog.graumann.kr8.de DocumentRoot "D:/var/www/htdocs/typo3" ServerName blog.graumann.kr8.de ErrorLog logs/bolg.graumann.kr8.de-error_log CustomLog logs/blog.graumann.kr8.de-access_log common </VirtualHost>
NTFS-Filesystem
Wenn man den Apache-Webserver als Trägersystem für eine Anwendung benutzt, mit der man neue Seiten (neue Dateien) anlegt (Kandidaten: Content-Management-System, Knowledge-Management, konkretes Beispiel: TWiki), muss man sich gut überlegen, unter welchem Windows-Account Apache als Windows-Service laufen soll. Dieser Account wird dann im NTFS-Filesystem nämlicher der Owner der neu-erzeugten Dateien.
Standard-mäßig wird "Lokales Systemkonto" dafür abgeboten, was zur Folge hat, dass man unter seinem eigenen User-Account an so neu-erzeugte Dateien nicht so ohne weiteres heran kommt (Owner=SYSTEM). Wenn Apache auf einer User-Masine läuft, sollte man Apache auch unter dem User-Account laufen lassen. Das sollte das lokale User-Konto sein, wenn man (im Regelfall) ohne Windows-Domain-Anmeldung arbeitet ( User: .\Kracht) und es sollte das Windows-Domain-Konto sein, wenn man damit normalerweise als User arbeitet (User: domainname\username).
Unter meinem Windows 2000 hatte ich den Eindruck, dass die httpd.conf-Eintragungen:
- User nobody
- Group nobody
nichts bewirken.
Apache Authentifizierung
Zur Authentifizierung unter Apache dienen User-Id und Passwort. Diese werden in einer Datei gespeichert, wobei vom Passwort nur ein Hash-Code (MD5 oder SHA1) gespeichert wird. Diese Datei durch einen Konfigurationsparameter definiert:
- Z.B. für TWiki: AuthUserFile d:/home/kracht/twiki/data/.htpasswd
Dieser Parameter kann in der globalen Apache-Konfigurationsdatei httpd.conf oder in einer lokalen Steuerdatei .htaccess gesetzt werden.
Der Zugriff auf Ordner und/oder bestimmte Dateien kann in Abhängigkeit von der Authentifizierung erlaubt oder verboten werden. Beispielsweise für TWiki:
<Files "edit"> require valid-user </Files> <Files "save"> require valid-user </Files> <Files "attach"> require valid-user </Files>
Perl-Script-Ausführung als CGI
Test eines Perl-Scripts: [[1]]
Zur serverseitigen Ausführung von Perl-Scripts sind in der Apache-Konfigurationsdatei sind folgende Eintragungen vorzunehmen:
1. Aktivierung der Script-Ausführung für einen Ordner. Entweder mit der Direktive "ScriptAlias" oder mit Hilfe von "Options ExecCGI"
<Directory "D:/var/www/htdocs/twiki/bin/"> Options +ExecCGI </Directory>
2. Perl-Script-Handler hinzufügen: Standard CGI
<Directory "D:/var/www/htdocs/twiki/bin/"> Options +ExecCGI SetHandler cgi-script </Directory>
3. Zuordnung des aufzurufenden Programms durch die Shebang-Zeile am Anfang eines jeden Scripts:
#!d:/Programme/cygwin/bin/perl -w
Perl-Script-Ausführung vermittels mod_perl
In der Apache-Konfigurationsdatei sind folgende Eintragungen vorzunehmen:
1. Aktivierung der Script-Ausführung für einen Ordner.
<Directory "D:/home/kracht/www/twiki/bin/"> Options +ExecCGI </Directory>
2. Script-Handler hinzufügen: perl_mod
<Directory "D:/home/kracht/www/twiki/bin/"> Options +ExecCGI SetHandler perl-script PerlHandler Apache::Registry </Directory>
Installation von mod_perl
mod_perl Version 1 wird für Apache 1.3.xx verwendet, mod_perl Version 2 ist für Apache 2.xx gedacht.
Traditionsgemäss muss man den Sourcecode kompilieren --- oder man besorgt sich eine Windows-Binary-Version.
http://perl.apache.org/docs/1.0/os/win32/install.html#PPM_Packages
mod_perl besteht aus einem Apache-Moul (mod_perl.so) und einem Perl-Paket (Apache::xyz). Das ladbare Apache-Modul wird in die Apache-Konfigurationsdatei httpd.conf eingetragen:
LoadFile "D:/perl/bin/perl56.dll" LoadModule perl_module modules/mod_perl.so AddModule mod_perl.c
Das Perl-Package wird mit ppm wie folgt installiert:
ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd
Installation von mod_dav
Zur Unterstützung von WebDAV wird das Modul mod_dav verwendet. Zunächst muss man sich das Win32-Binary beschaffen; z.B. von:
Um die WebDAV-Unterstützung als Apache-Zusatzmodul zu installieren, sind folgende Eintragungen in der Apache-Konfigurations-Datei httpd.conf vorzunehmen:
LoadModule dav_module modules/mod_dav.dll ... AddModule mod_dav.c ... DAVLockDB e:/var/db/DAVLock DAVMinTimeout 600
Dann sind noch die für WebDAV freigegebenen Ordner zu definieren:
<Directory "e:/var/www/htdocs/docs"> DAV on AllowOverwrite AuthConfig AuthName "DAV restricted" AuthType Basic AuthUserFile e:/var/www/htdocs/twiki/data/.htpasswd <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Require valid-user </Limit> <Directory>
-- Main.DietrichKracht - 29 Apr 2004