Computer: Apache (aus Wiki)

Web-Server Apache (aus Wiki)

Siehe auch: [[Apache2]], [[ApacheDS]], PHP

Einsatzzweck

Auf meinem Entwicklungssystem betreibe ich als [[WebServer]] Apache. Die Einsatzzwecke sind:

  • Staging-System für meine Web-Sites, die ich dann zu meinen [[WebProvider|Web-Hosting-Providern]] uploaden will
  • Als Trägersystem (“Application Server”) für produktive Anwendnungen
    • Mein [[WikiWikiWeb]] für das Knowledge-Management: [[WikiWikiWebMain|TWiki]]
    • Meine Link-Verwaltung [[PhpLinks]]

Installationen

Installation auf Computer Asusbaer

  • 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,…..

Installation auf Computer Graumann2

  • * 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,…..

Installation auf Computer Thinkbar

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]]
<br />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:
* 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:
<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|http://braunbaer.kr8.de/twiki/bin/test.pl]]

Zur serverseitigen Ausführung von [[Perl|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.
<br />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:
<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
[[Category:DefinitiveSoftwareLibrary]]