Apache Webserver 2
von: Sebastian Wolfgarten
Addison-Wesley Verlag, 2004
ISBN: 9783827321183
Sprache: Deutsch
897 Seiten, Download: 6971 KB
Format: PDF, auch als Online-Lesen
Apache Webserver 2 - Installation, Konfiguration, Programmierung | 3 | ||
Inhaltsverzeichnis | 5 | ||
Vorwort | 5 | ||
1 Apache-Grundlagen | 5 | ||
2 Installation | 5 | ||
3 Erweiterte Installation | 6 | ||
4 Betrieb | 7 | ||
5 Konfiguration | 7 | ||
6 Logging | 9 | ||
7 Serverseitige Programmierung | 9 | ||
8 Datenbanken und LDAP | 11 | ||
9 Sicherheit | 11 | ||
10 Analyse während der Laufzeit | 12 | ||
Anhang | 12 | ||
Stichwortverzeichnis | 13 | ||
Vorwort | 17 | ||
1 Apache-Grundlagen | 19 | ||
1.1 Apache | 19 | ||
1.2 Vergleich Apache 1.3.x vs. 2.x | 20 | ||
1.2.1 Verschiedene Laufzeitmodelle | 20 | ||
1.2.2 Apache Portable Runtime | 21 | ||
1.2.3 Multi Processing Modules | 21 | ||
1.2.4 Neues Build-System | 22 | ||
1.2.5 Multi-Protokoll-Unterstützung | 22 | ||
1.2.6 Neues Apache API | 22 | ||
1.2.7 IPv6 | 22 | ||
1.2.8 Ein- und Ausgabefilter | 22 | ||
1.2.9 Mehrsprachige Fehlermeldungen | 23 | ||
1.2.10 Vereinfachte Konfiguration | 23 | ||
1.2.11 Native Windows NT Unicode-Unterstützung | 23 | ||
1.2.12 Bibliothek für reguläre Ausdrücke aktualisiert | 24 | ||
1.3 Migration Apache 1.x auf 2.x | 24 | ||
1.3.1 Änderungen an der Installation | 24 | ||
1.3.2 Änderungen an der Laufzeitkonfiguration | 24 | ||
1.3.3 Weitere Änderungen | 25 | ||
1.3.4 Module von Drittanbietern | 25 | ||
1.3.5 Fazit | 26 | ||
1.4 Funktionsweise des Apache | 26 | ||
1.4.1 Apache 1.3.x | 26 | ||
1.4.2 Apache 2.x | 28 | ||
2 Installation | 35 | ||
2.1 Bezug der Software | 35 | ||
2.2 Inhalte der Quellen | 36 | ||
2.3 Grundinstallation unter Unix/Linux | 37 | ||
2.4 Installation mit fertigen Paketen | 45 | ||
2.4.1 Installation per RPM | 45 | ||
2.4.2 Installation mit Debian .deb Paketen | 46 | ||
2.4.3 Installation mit vorkompilierten Paketen | 47 | ||
2.5 Installation des Apache 2 unter Gentoo Linux | 48 | ||
2.5.1 Aktualisierung des Systems | 48 | ||
2.5.2 Installation des Apache 2 | 49 | ||
2.6 Installation des Apache 2 unter SuSE | 51 | ||
2.6.1 Installation | 51 | ||
2.7 Installation unter (Free-) BSD | 53 | ||
2.7.1 Aktualisierung der Ports-Sammlung unter FreeBSD mit CVSup | 54 | ||
2.7.2 Installation von Software mit der FreeBSD Ports Sammlung | 55 | ||
2.7.3 Deinstallation von einer Software mit der Ports Sammlung | 57 | ||
2.7.4 Installation des Apache 2 mit der Ports-Sammlung | 58 | ||
2.8 Installation unter Sun Solaris | 60 | ||
2.8.1 Installation von wget und gunzip | 60 | ||
2.8.2 Installation des Compilers gcc | 60 | ||
2.8.3 Autoconf | 62 | ||
2.8.4 Libtool | 62 | ||
2.8.5 Manuelle Kompilierung und Installation des Apache 2 unter Sun Solaris | 63 | ||
2.9 Installation unter Microsoft Windows | 64 | ||
2.9.1 Installation des Apache 2 unter Windows | 64 | ||
2.9.2 Kompilierung des Apache 2 unter Microsoft Windows | 68 | ||
2.9.3 SSL unter Windows | 73 | ||
2.10 Apache für absolute Anfänger (XAMPP) | 78 | ||
2.10.1 Installation unter Linux (LAMPP) | 78 | ||
2.10.2 Installation unter Windows (WAMPP) | 80 | ||
3 Erweiterte Installation | 83 | ||
3.1 Anpassung der Installationspfade | 83 | ||
3.1.1 Erstellung eines eigenen Installationslayouts | 92 | ||
3.2 Benutzerdefinierte Installation unter Unix/Linux | 93 | ||
3.3 Modulübersicht | 110 | ||
3.3.1 Standardmodule | 110 | ||
3.3.2 Module von Drittanbietern | 113 | ||
3.3.3 Empfohlene Module | 118 | ||
3.4 ./configure bis zum Abwinken | 122 | ||
3.4.1 Fallbeispiele | 122 | ||
3.5 Installation diverser Zusatzsoftware unter Unix/Linux | 125 | ||
3.5.1 Installation von GNU Bison (optional, u. a. für PHP benötigt) | 125 | ||
3.5.2 Installation von GNU Flex (optional, u. a. für PHP benötigt) | 125 | ||
3.5.3 Installation von GNU GDBM (optional, u. a. für PostgreSQL benötigt) | 126 | ||
3.5.4 Installation von LibNCurses (optional, u. a. für Kernelkonfiguration und LibReadline benötigt) | 126 | ||
3.5.5 Installation von FreeType (optional, u. a. für PHP benötigt) | 127 | ||
3.5.6 Installation von zlib (optional, u. a. für PHP und GD Lib benötigt) | 128 | ||
3.5.7 Installation von JPEGSrc (optional, u. a. für PHP benötigt) | 129 | ||
3.5.8 Installation von LibPNG (optional, u. a. für PHP und GD-Lib benötigt) | 130 | ||
3.5.9 Installation von GD-Lib (optional, u. a. für PHP benötigt) | 131 | ||
3.5.10 Installation der LibTiff (optional, u. a. für PHP und PDFLib benötigt) | 132 | ||
3.5.11 Installation der PDFLib (optional, u. a. für PHP benötigt) | 133 | ||
3.5.12 Installation von GhostScript (optional) | 134 | ||
3.6 Apache 2 in einer Chroot-Umgebung | 135 | ||
3.6.1 Grundinstallation des Apache 2 | 136 | ||
3.6.2 Einrichtung der Chroot-Umgebung | 137 | ||
3.6.3 Konfiguration des Apache und Test der Chroot Umgebung | 142 | ||
3.6.4 Abschlussarbeiten | 143 | ||
3.7 Metux MPM | 144 | ||
3.7.1 Installation | 145 | ||
3.7.2 Konfiguration | 147 | ||
3.7.3 Praxisbeispiel | 149 | ||
3.8 Updates | 152 | ||
4 Betrieb | 155 | ||
4.1 Starten/Stoppen des Apache unter Unix/Linux | 155 | ||
4.2 Starten/Stoppen des Apache unter Microsoft Windows | 160 | ||
5 Konfiguration | 165 | ||
5.1 Einleitung | 165 | ||
5.1.1 Begriffsdefinition | 165 | ||
5.1.2 Konfigurationsdateien | 166 | ||
5.1.3 Syntax der Konfigurationsanweisungen | 167 | ||
5.1.4 Kommentare | 168 | ||
5.1.5 Mehrzeilige Anweisungen | 169 | ||
5.1.6 Aufteilung auf mehrere Konfigurationsdateien | 169 | ||
5.1.7 Kontexte | 170 | ||
5.2 Basiskonfiguration | 171 | ||
5.2.1 Serveridentifikation | 173 | ||
5.2.2 Erweiterte Basiskonfiguration | 180 | ||
5.2.3 Datei- und Verzeichnisstandorte | 204 | ||
5.2.4 Benutzer- und Gruppenverwaltung | 217 | ||
5.2.5 Ressourcenbegrenzung und Prozessmanagement | 226 | ||
5.2.6 Dateien und Verzeichnisse | 245 | ||
5.2.7 Aliase und Umleitungen | 254 | ||
5.2.8 Handler | 280 | ||
5.2.9 Verzeichnisindizes und Listings | 284 | ||
5.2.10 Umgebungsvariablen | 296 | ||
5.2.11 Server-Side Includes | 305 | ||
5.2.12 suEXEC | 309 | ||
5.3 Fortgeschrittene Konfiguration | 311 | ||
5.3.1 Virtuelle Server | 311 | ||
5.3.2 URL-Manipulation mit mod_rewrite | 329 | ||
5.4 Sonstige Module | 370 | ||
5.4.1 Der Apache als Proxy-Server (mod_proxy) | 370 | ||
5.4.2 Auf den Client zugeschnittene Verarbeitung (mod_negotiation) | 385 | ||
5.4.3 Einfügen von definierten Inhalten in Antwortseiten (mod_injection) | 393 | ||
5.4.4 Der Umgang mit verschiedenen Dateitypen (mod_mime) | 398 | ||
5.4.5 Caching von Inhalten (mod_cache) | 412 | ||
5.4.6 Kontrolle über und Änderung von HTTP-Headern (mod_headers) | 428 | ||
5.4.7 Steuerung der Aktualität von Inhalten (mod_expires) | 432 | ||
5.4.8 Serverseitige Unterstützung von Image-Maps | 435 | ||
5.4.9 Aufzeichnung des Userverhaltens mit Cookies (mod_usertrack) | 438 | ||
5.4.10 Änderung des Zeichensatzes von Antwortseiten (mod_charset_lite) | 442 | ||
5.4.11 Emulation der CERN HTTPD-Metdatei-Semantik (mod_cern_meta) | 445 | ||
5.4.12 Multiprotokoll-Unterstützung: Das echo Beispiel Modul (mod_echo) | 447 | ||
5.4.13 Auslieferung einer Zufallsdatei mit mod_variety | 449 | ||
6 Logging | 453 | ||
6.1 Logdateien | 453 | ||
6.1.1 ErrorLog | 455 | ||
6.1.2 LogLevel | 458 | ||
6.1.3 CustomLog | 460 | ||
6.1.4 LogFormat | 462 | ||
6.1.5 TransferLog | 464 | ||
6.1.6 CookieLog | 466 | ||
6.2 Formatierung der Logdatei-Einträge | 467 | ||
6.2.1 Sinnvolle Logdatei-Formate | 472 | ||
6.3 Mehrere Logdateien | 472 | ||
6.4 Konditionelle Protokollierung | 473 | ||
6.5 Logdatei-Rotation | 476 | ||
6.5.1 rotatelogs | 477 | ||
6.5.2 cronolog | 478 | ||
6.5.3 Logdatei-Umleitung (Piped Logs) | 480 | ||
6.6 Logdateien der virtuellen Server | 481 | ||
6.7 Weitere Logdateien | 482 | ||
6.7.1 RewriteLog | 482 | ||
6.7.2 RewriteLogLevel | 483 | ||
6.7.3 ScriptLog | 483 | ||
6.7.4 ScriptLogLength | 484 | ||
6.7.5 ScriptLogBuffer | 484 | ||
6.8 Logdatei-Auswertung | 485 | ||
6.8.1 Webalizer | 485 | ||
6.8.2 Kostenpflichtige Alternative: WebTrends für Windows | 490 | ||
6.8.3 Alternativen | 492 | ||
6.8.4 Echtzeitanzeige von Logdateien mit mod_view | 493 | ||
7 Serverseitige Programmierung | 497 | ||
7.1 Common Gateway Interface (CGI) | 497 | ||
7.1.1 Sicherheit von CGI-Skripten | 499 | ||
7.1.2 mod_cgid | 500 | ||
7.2 Perl | 501 | ||
7.2.1 Installation unter Unix | 501 | ||
7.2.2 Installation unter Windows | 502 | ||
7.2.3 mod_perl | 504 | ||
7.3 Servlets | 507 | ||
7.3.1 Installation eines Java Development Kits (optional) | 507 | ||
7.3.2 Java (Tomcat) unter Unix/Linux | 508 | ||
7.3.3 Java (Tomcat) unter Microsoft Windows | 511 | ||
7.4 PHP | 515 | ||
7.4.1 CGI-Variante unter Unix/Linux | 515 | ||
7.4.2 DSO-Variante unter Unix/Linux | 523 | ||
7.4.3 Installation unter Microsoft Windows | 527 | ||
7.4.4 Konfiguration (php.ini) | 536 | ||
7.5 Nutzung von C++ mit mod_cplusplus | 541 | ||
7.5.1 Installation | 541 | ||
7.5.2 Konfiguration | 542 | ||
7.6 ASP.NET mit mod_mono | 547 | ||
7.6.1 Vorbereitung | 547 | ||
7.6.2 Installation von mono | 548 | ||
7.6.3 Installation von mod_mono | 549 | ||
7.6.4 Installation von xsp | 551 | ||
7.6.5 Konfiguration | 553 | ||
7.6.6 Probleme | 555 | ||
7.7 mod_ruby | 555 | ||
7.7.1 Installation von ruby | 556 | ||
7.7.2 Installation von eruby | 556 | ||
7.7.3 Installation von mod_ruby | 557 | ||
7.7.4 Konfiguration | 557 | ||
7.8 Apache spricht Python mit mod_python | 559 | ||
7.8.1 Installation von Python | 559 | ||
7.8.2 Installation von mod_python | 560 | ||
7.8.3 Konfiguration und Test von mod_python | 561 | ||
7.9 Ein- und Ausgabefilter | 562 | ||
7.9.1 Kompressionsfilter (mod_deflate) | 569 | ||
7.9.2 Entwicklung von eigenen Filtern | 572 | ||
7.10 Erweiterung der Funktionalität mit mod_isapi | 583 | ||
7.10.1 Unterstützte Serverfunktionen | 587 | ||
7.10.2 Entwicklung einer ISAPI-Anwendung mit Borland Delphi 6 | 588 | ||
7.11 Programmierung von eigenen Modulen: Das Beispiel-Modul (mod_example) | 592 | ||
8 Datenbanken und LDAP | 595 | ||
8.1 MySQL | 595 | ||
8.1.1 Installation unter Unix | 595 | ||
8.1.2 Installation unter Microsoft Windows | 599 | ||
8.2 PostgreSQL | 600 | ||
8.2.1 Installation von PostgreSQL (optional) | 600 | ||
8.3 Authentifizierung gegen LDAP- Verzeichnisdienste | 605 | ||
8.3.1 Vorbereitung | 605 | ||
8.3.2 Installation von OpenLDAP | 605 | ||
8.3.3 Konfiguration | 606 | ||
8.3.4 Start von OpenLDAP und Erzeugung der eigenen Population | 610 | ||
8.3.5 Installation des Apache 2 mit LDAP-Unterstützung | 612 | ||
8.3.6 Beispielkonfiguration des Apache | 613 | ||
8.3.7 Apache, LDAP und SSL | 613 | ||
8.4 Optimierung von Zugriffen auf LDAP- Server (mod_ldap) | 614 | ||
9 Sicherheit | 619 | ||
9.1 Sicherheitstechnische Optimierung der Standardkonfiguration des Apache | 619 | ||
9.1.1 Optimierung | 619 | ||
9.2 Verwendung von sudo | 624 | ||
9.2.1 Installation | 625 | ||
9.2.2 Konfiguration und Verwendung von sudo | 625 | ||
9.3 Kommunikationsverschlüsselung | 627 | ||
9.3.1 Installation von OpenSSL (optional, u. a. für Apache und PostgreSQL benötigt) | 627 | ||
9.3.2 Verschlüsselung mit dem SSL/TLS Interface mod_ssl | 628 | ||
9.3.3 Zertifizierung | 630 | ||
9.3.4 Konfiguration von mod_ssl | 637 | ||
9.4 Client- und Benutzerauthentifizierung | 665 | ||
9.4.1 Verwendung von htpasswd | 679 | ||
9.4.2 mod_auth_anon | 682 | ||
9.4.3 mod_auth_dbm | 686 | ||
9.4.4 mod_auth_digest | 688 | ||
9.4.5 Authentifizierung mit mod_auth_shadow | 693 | ||
9.4.6 Authentifizierung mit mod_auth_mysql | 694 | ||
9.4.7 Authentifizierung mit mod_auth_pam | 707 | ||
9.4.8 Authentifizierung über LDAP (mod_auth_ldap) | 712 | ||
9.4.9 Authentifizierung mit Hilfe einer externen Quelle (mod_auth_external) | 724 | ||
9.5 Abwehr interner Angriffe | 735 | ||
9.5.1 Chroot()-Umgebung für lokale Benutzer | 735 | ||
9.6 Abwehr externer Angriffe | 745 | ||
9.6.1 Abwehr von bösartigen Anfragen mit mod_fortress | 745 | ||
9.6.2 Intrusion Detection System (mod_security) | 751 | ||
9.6.3 Konzeption und Realisierung einer Firewall unter Linux | 780 | ||
9.6.4 Schutz vor Denial of Service-Attacken durch mod_dosevasive | 810 | ||
10 Analyse während der Laufzeit | 819 | ||
10.1 Der Apache erstattet Meldung (mod_status und mod_info) | 819 | ||
10.2 Analyse eingehender Aufgaben | 821 | ||
10.2.1 Echtzeitauswertung der aktuellen Zugriffe mit apachetop | 821 | ||
10.2.2 Debugging mit mod_loopback | 823 | ||
10.2.3 Vollständige Sicherung des ein- und ausgehenden Datenverkehrs mit mod_log_data | 827 | ||
10.2.4 Verzögerung einer Anfrage mit mod_sleep | 831 | ||
10.3 Analyse ausgehender Daten | 833 | ||
10.3.1 Dynamische Syntaxüberprüfung von HTML- Dateien mit mod_tidy | 833 | ||
Anhang | 837 | ||
A.1 Reguläre Ausdrücke | 837 | ||
A.1.1 Allgemeine Grundlagen | 837 | ||
A.1.2 Metazeichen | 838 | ||
A.1.3 Beispiele für reguläre Ausdrücke | 840 | ||
A.2 HTTP-Statuscodes | 845 | ||
A.2.1 1xx | 846 | ||
A.2.2 2xx | 846 | ||
A.2.3 3xx | 847 | ||
A.2.4 4xx | 849 | ||
A.2.5 5xx | 850 | ||
A.3 Umgebungsvariablen | 851 | ||
A.3.1 Standardumgebungsvariablen | 852 | ||
A.3.2 Headervariablen | 854 | ||
A.3.3 Spezielle Variablen | 856 | ||
A.4 Datumsformatierung mit strftime() | 858 | ||
A.4.1 Benutzung der Funktion strftime() in C | 859 | ||
A.5 Ein- und Ausgabekanäle | 860 | ||
A.5.1 stdin-Eingabekanal | 861 | ||
A.5.2 stdout-Ausgabekanal | 861 | ||
A.5.3 stderr-Fehlerausgabekanal | 861 | ||
A.6 Browserkennungen | 861 | ||
A.7 Daten auf den Server überspielen | 862 | ||
A.7.1 Secure Copy (SCP) unter Windows | 863 | ||
A.8 Installation und Konfiguration eines Nameservers unter Unix/Linux | 865 | ||
A.8.1 Installation | 866 | ||
A.8.2 Konfiguration | 866 | ||
A.8.3 Erster Start des Nameservers und Test der Zonendateien | 871 | ||
A.8.4 Erweiterte Konfiguration | 874 | ||
A.8.5 Das optionale Sahnehäubchen | 879 | ||
A.9 Webseite zum Buch | 881 | ||
A.10 Unterstützung und Hilfe | 881 | ||
A.11 Literaturangaben | 884 | ||
A.12 Lizenzbestimmungen für den Apache- Webserver | 884 | ||
Stichwortverzeichnis | 889 | ||
Numerics | 889 | ||
A | 889 | ||
B | 890 | ||
C | 890 | ||
D | 891 | ||
E | 891 | ||
F | 891 | ||
G | 891 | ||
H | 892 | ||
I | 892 | ||
J | 892 | ||
K | 892 | ||
L | 892 | ||
M | 893 | ||
N | 894 | ||
O | 894 | ||
P | 894 | ||
Q | 895 | ||
R | 895 | ||
S | 895 | ||
T | 896 | ||
U | 896 | ||
V | 896 | ||
W | 897 | ||
X | 897 | ||
Z | 897 |