Apache

From Dietrich Blog (Strato)
Revision as of 12:08, 13 March 2009 by Dkracht (talk | contribs)

Jump to: navigation, search

Web-Server Apache

Siehe auch: Apache2, ApacheDS

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

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