Gehört zu: Web-Server
Siehe auch: HTTP, Apache2, ApacheDS, PHP
Web-Server Apache (aus Wiki)
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
- Datenbank-Administration: PhpMyAdmin
- Mein WikiWikiWeb für das Knowledge-Management: TWiki
- Meine Link-Verwaltung PhpLinks
Installationen und Konfigurationen
Auf ComputerAcerBaer habe ich Apache 2.4 ganz neu installieren müssen. Das ist nun ein Muster für etwaige andere Installationen:
- Betriebssysten: Windows 11 Home
- Download von: https://www.apachehaus.com/cgi-bin/download.plx ODER: https://www.apachelounge.com/download/#google_vignette
- Download Datei: httpd-2.4.54-o111o-x64-vs17.zip ODER: httpd-2.4.54-win64-VS16.zip
- Apache Version: 2.4 für x64
- Installationsordner: C:\Apache2.4
- Konfigurationsdateien: C:\Apache2.4\conf\httpd.conf —> Datensicherung
- ServerRoot: C:\Apache24
- DocumentRoot: C:\data\htdocs
- Definitive Software Library ID: Apache
- Version: 2.2.22 (Win32)
- Betriebsystem: Windows 10 Professional
- Installationsordner: D:\bin\Apache Software Foundation\Apache2.2
- Konfigurationsdateien: D:\bin\Apache Software Foundation\Apache2.2\conf\httpd.conf —> Datensicherung
- DocumentRoot: D:\data\htdocs
- Start: Als Windows Service unter Windows 10 unter dem Account “kracht” ????
- Authentifizierung, Zusatzmodule,…..
- Definitive Software Library ID: Apache
- Version: 2.2.22 (Win32)
- Betriebsystem: Windows 10 Professional
- Installationsordner: F:\bin\Apache Software Foundation\Apache2.2
- Konfigurationsdateien: F:\bin\Apache Software Foundation\Apache2.2\conf\httpd.conf —-> Datensicherung
- DocumentRoot: F:\data\htdocs
- Start: Als Windows Service unter Windows 10 unter dem Account “kracht” ????
- Authentifizierung, Zusatzmodule,…..
xyz
Probleme und Lösungen
Auf Computer Graumann2 wollte Apache nicht als Windows-Service starten. Es gab ominöse Fehlermeldungen, dass der BInd an Port 80 nicht funktioniert hätte u.ä.
Mit der Software TcpView konnte ich herausfinden, dass vor dem Startversuch von Apache bereits eine Verbindung (“Listen”) zum Local Port 80 (http) bestand – von einem Prozess namens “system”. Den Prozess wollte ich dann doch nicht killen.
Nach längerem Suchen (ich hatte zuerst VMWARE in Verdacht) habe ich den Verursacher gefunden: es war der Windows-Service “WWW-Publishingdienst” gestartet. Nachdem dieser deaktiviert wurde, lief Apache einwandfrei.
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.
<pre>
#
# 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>
</pre>
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:
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:
<pre>
<Files “edit”>
require valid-user
</Files>
<Files “save”>
require valid-user
</Files>
<Files “attach”>
require valid-user
</Files>
</pre>
Perl-Script-Ausführung als CGI
Test eines Perl-Scripts: http://braunbaer.kr8.de/twiki/bin/test.pl
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”
<pre>
<Directory “D:/var/www/htdocs/twiki/bin/”>
Options +ExecCGI
</Directory>
</pre>
2. Perl-Script-Handler hinzufügen: Standard CGI
<pre>
<Directory “D:/var/www/htdocs/twiki/bin/”>
Options +ExecCGI
SetHandler cgi-script
</Directory>
</pre>
3. Zuordnung des aufzurufenden Programms durch die Shebang-Zeile am Anfang eines jeden Scripts:
<pre>
#!d:/Programme/cygwin/bin/perl -w
</pre>
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.
<pre>
<Directory “D:/home/kracht/www/twiki/bin/”>
Options +ExecCGI
</Directory>
</pre>
2. Script-Handler hinzufügen: perl_mod
<pre>
<Directory “D:/home/kracht/www/twiki/bin/”>
Options +ExecCGI
SetHandler perl-script
PerlHandler Apache::Registry
</Directory>
</pre>
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.
”’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:
<pre>
LoadFile “D:/perl/bin/perl56.dll”
LoadModule perl_module modules/mod_perl.so
AddModule mod_perl.c
</pre>
Das Perl-Package wird mit ”’ppm”’ wie folgt installiert:
<pre>
ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd
</pre>
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:
- http://www.gknw.net/development/apache/apache-1.3/win32/modules/
- http://www.webdav.org/mod_dav/
Um die WebDAV-Unterstützung als Apache-Zusatzmodul zu installieren, sind folgende Eintragungen in der Apache-Konfigurations-Datei httpd.conf vorzunehmen:
<pre>
LoadModule dav_module modules/mod_dav.dll
…
AddModule mod_dav.c
…
DAVLockDB e:/var/db/DAVLock
DAVMinTimeout 600
</pre>
Dann sind noch die für WebDAV freigegebenen Ordner zu definieren:
<pre>
<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>
</pre>
— Main.DietrichKracht – 29 Apr 2004