Apache upgraden
1.
Upgraden von <2.2.6-r4
Die Apache-Ebuilds haben für eine lange Zeit
/etc/apache2/apache2-builtin-mods benutzt, um die built-in Module
zur Kompilierzeit auszuwählen. Dieses Verhalten hat jedoch einige Nachteile:
-
Das Auwählen der built-in Module während des ersten Merges ist nicht möglich
-
Portage weiß nicht, welche Module installiert wurden. Dies ist besonders
nervig für binäre Pakete.
-
Portage wird versuchen, apache2-builtin-mods bei jedem Upgrade
zu überschreiben.
Um diese Lage zu bessern, wird /etc/apache2/apache2-builtin-mods
nicht mehr länger benutzt und wurde zu den neuen Variablen
APACHE2_MODULES und USE_EXPAND migriert. Um Ihre persönliche
Modulauswahl ins neue Format zu konvertieren, benutzen Sie folgenden Befehl:
Befehlsauflistung 1.1: Konvertieren der apache2-builtin-mods zu APACHE2_MODULES |
$ echo APACHE2_MODULES=\"$(sed '/^mod_/s/mod_\(.*\)\s\+\(shared\|static\)/\1/;t n;d;:n' /etc/apache2/apache2-builtin-mods)\" >> /etc/make.conf
# rm /etc/apache2/apache2-builtin-mods
# emerge -uva '>=www-servers/apache-2.2.6-r4'
|
Zusätzlich zu dem neuen APACHE2_MODULES wurden die lokalen USE-Flags
aufgeräumt:
-
Alle MPM USE-Flags wurden in die APACHE2_MPMS USE_EXPAND
Variable verschoben
-
no-suexec ist jetzt suexec
-
static-modules ist jetzt static
Eine detaillierte Beschreibung der alten und entsprechenden neuen USE-Flags
finden Sie unten.
2.
Upgraden von <2.0.52-r3
Einführung
Der Zustand des Apache und seiner Module innerhalb von Gentoo wurde langsam
trostlos. Es gab eine Reihe von Problemen die den Support und die Pflege von
allem, wofür das Apache Team verantwortlich ist, schwierig machten:
-
Die Konfiguration, die mit Gentoo ausgeliefert wurde, unterschied sich
enorm von einer regulären Konfiguration, die die meisten Benutzer
erwarteten
-
Viele Module haben einen ähnlichen Code verwendet, aber alle erledigten
Dinge auf ihre eigene Art und Weise
-
Die meisten Module wurden nicht besonders gut gepflegt, hauptsächlich wegen
der großen Zahl der verfügbaren Module
- Es gab keinen Standard für die Konfiguration der Module
-
Einige Module wären mit beiden Apache Versionen lauffähig gewesen, aber die
Ebuilds haben das nicht berücksichtigt
-
Einige Optionen die Apache bietet waren für Gentoo-Benutzer nicht verfügbar
(zum Beispiel MPMs)
- Apache Bugs sammelten sich an
Dieses Dokument beschreibt, wie Sie Ihren Apache upgraden ohne ihr System kaputt
zu machen. Wenn Sie ein Entwickler sind oder gerne wissen möchten, was wir
geändert haben, oder wie Ebuilds angepasst werden müssen, um die Vorteile
unserer Eclass nutzen zu können, sehen Sie sich die Apache Developer Reference an.
Upgraden
Es gab viele Änderungen daran, wie Apache unter Gentoo funktioniert. Jedes
Paket, das im direkten Zusammenhang mit Apache steht, muss aktualisiert werden
und einige Dinge, die bisher funktioniert haben, funktionieren jetzt nicht mehr.
Als erstes müssen Sie herausfinden welche Pakete ein Upgrade benötigen. Sie
können das mit Hilfe des equery Tools, welches Bestandteil des
app-portage/gentoolkit Pakets ist, feststellen.
Befehlsauflistung 2.1: Auffinden von zu aktualisierenden Paketen |
$ equery depends www-servers/apache
[ Searching for packages depending on www-servers/apache... ]
dev-db/phpmyadmin-2.5.6
dev-php/mod_php-4.3.10
dev-php/phpsysinfo-2.1-r2
net-www/mod_bandwidth-2.0.5
net-www/mod_layout-4.0.1a
net-www/mod_mp3-0.40
net-www/mod_random-2.0
net-www/mod_throttle-3.1.2-r1
www-apache/mod_ldap_userdir-1.1.4
www-apache/mod_loopback-1.04
www-apache/mod_watch-3.18
www-apps/viewcvs-0.9.2_p20030430
|
Wichtig:
Die Pakete die Sie installiert haben, können vollständig andere sein. Stellen
Sie sicher, dass Sie den oben stehenden Befehl selbst ausgeführt zu haben.
|
Warnung:
Es gibt einige Module und Pakete die Apache benötigen und noch nicht auf den
neuesten Stand gebracht wurden. Bitte durchsuchen Sie Bugzilla für jedes
kritische Paket das Sie mit Ihrem Apache einsetzen.
|
Viele Webapplikationen werden von diesem Upgrade nicht beeinflusst, da die
meisten Webapplikationen die webapp Eclass benutzen, welche sich darum
kümmert, dass diese richtig installiert werden. Sie sollten überprüfen ob es
vielleicht eine neue Revision gibt.
Da wir einige neue USE-Flags eingeführt haben, möchten Sie vielleicht einen
Blick darauf werfen und entsprechende Zeilen in ihre
/etc/portage/package.use einfügen. Für weitere Informationen
schauen Sie sich die von Apache unterstützten
USE-Flags an.
Befehlsauflistung 2.2: Überprüfen der USE-Flags und erneutes Kompilieren |
# emerge --pretend --verbose --update --newuse --deep apache subversion \
mod_php mod_bandwidth mod_layout mod_ldap_userdir mod_loopback mod_mp3 \
mod_random mod_throttle mod_watch
# emerge --verbose --update --newuse --deep apache subversion mod_php \
mod_bandwidth mod_layout mod_ldap_userdir mod_loopback mod_mp3 mod_random \
mod_throttle mod_watch
# emerge --ask --verbose --update --newuse --deep world
|
Nun müssen Sie Apache und seine Module neu konfigurieren. Beginnen Sie damit
etc-update oder dispatch-conf auszuführen um die Dateien in
/etc/init.d und /etc/conf.d zu aktualisieren. Sie
werden feststellen, dass Ihre Apache Konfigurationsdateien nicht mit in der
Liste der zu aktualisierenden Dateien erscheinen, dies liegt daran, dass
sämtliche Apache Konfigurationsdateien nun an einem anderen Ort gespeichert
werden.
Wenn Sie Änderungen an den alten apache.conf und
commonapache.conf Standarddateien vorgenommen haben, müssen
Sie diese Änderungen in die Datei /etc/apache{|2}/httpd.conf
migrieren. Des Weiteren haben sich die Speicherorte für die Module und
Virtual-Hosts geändert. Diese befinden sich nun in
/etc/apache2/modules.d bzw. /etc/apache2/vhosts.d.
Wenn Sie damit fertig sind Ihre Änderungen in die neuen Dateien zu übertragen,
müssen Sie die alten Konfigurationsdateien löschen (oder Sie an einen sicheren
Ort verschieben). Das neue /etc/init.d/apache{|2} überprüft ob
diese Dateien existieren und lässt Sie den Apache nicht starten bis Sie sie
entfernt haben und so zeigen, dass Sie den Apache mit den neuen Pfaden
rekonfiguriert haben.
Notiz:
Viele Module die ehemals standardmäßig aktiviert waren sind dies nun nicht
mehr. Wenn es sich um built-in Module handelt, dann entkommentieren Sie einfach
die entsprechende Zeile in der httpd.conf. Wenn es sich aber um externe Module
handelt suchen Sie in der .conf Datei des Moduls nach einer IfDefine
Anweisung und fügen den Namen der /etc/conf.d/apache{|2} hinzu
um das Modul zu aktivieren.
|
Nun sollten Sie den Apache neustarten.
Befehlsauflistung 2.3: Apache neustarten |
# /etc/init.d/apache stop
# /etc/init.d/apache start
|
Wenn Sie irgendwelche Schwierigkeiten haben sehen Sie im Apache Troubleshooting Guide
nach und, sollte sich dort keine Lösung finden, schreiben Sie einen Bugreport
auf dem Gentoo Bugzilla. Denken Sie
daran anzugeben welche Module Sie benutzen und (falls Sie Apache 2 nutzen)
welches MPM USE-Flag Sie zum Kompilieren verwendet haben (wenn zutreffend).
Sie können auch #gentoo-apache auf dem Server
irc.freenode.net besuchen, um Hilfe zu ihren Problemen zu erfragen.
3.
Unterstütze USE-Flags in <2.2.6-r4
Es gibt einige spezifische USE-Flags für Apache und seine Module. Apache
unterstützt darüber hinaus weitere, allgemeinere USE-Flags wie z.B. ssl,
aber die Auswirkung unterscheidet sich kaum von der die diese USE-Flags an
anderer Stelle haben, deshalb wurden diese USE-Flags nicht mit in die folgende
Liste aufgenommen. Um eine vollständige Liste aller unterstützten USE-Flags zu
erhalten führen Sie emerge --verbose --pretend apache aus.
| USE-Flag |
Beschreibung |
| apache2 |
Dieses USE-Flag sollte immer gesetzt sein, wenn Sie die Apache-2.0 Reihe
verwenden, allerdings nicht wenn Sie die Apache-1.3 Versionen einsetzen.
Die Eclass benutzt dieses USE-Flag, um festzustellen welche Apache-Version
benutzt wird.
|
| debug |
Aktiviert einen Hook, der es externen Modulen ermöglicht, sich
einzuschalten und etwas zu tun, nachdem ein Child gecrasht ist. Es gibt
bereits zwei Module, mod_whatkilledus und mod_backtrace, die
Gebrauch von diesem Hook machen.
|
| doc |
Installiere das Apache-Manual und Konfiguration.
|
| ldap |
Installiert mod_ldap und mod_auth_ldap/mod_authnz_ldap.
|
| ssl |
Installiert mod_ssl.
|
| mpm-itk |
Erstellt das itk MPM |
| mpm-leader |
Erstellt das leader MPM
|
| mpm-peruser |
Erstellt das peruser
MPM
|
| mpm-prefork |
Erstellt das prefork MPM
|
| mpm-threadpool |
Erstellt das threadpool
MPM
|
| mpm-worker |
Erstellt das worker MPM
|
| static-modules |
Die Basismodule werden statisch in das Apache-Binary verlinkt, so dass
LoadModule nicht benötigt wird, um diese Module zu laden.
|
Notiz:
Auch wenn es viele mpm-* USE-Flags gibt, schließen diese sich gegenseitig
aus. Sie sollten nur ein einziges der mpm-* USE-Flags aktivieren. (Falls
Sie keines aktivieren, wird entweder mpm-prefork oder mpm-worker
benutzt, abhängig davon, ob das threads USE-Flag gesetzt ist.)
|
4.
Unterstütze USE-Flags in 2.2.6-r4 und höher
Mit der Einführung von APACHE2_MODULES war ein generelles Aufräumen der
USE-Flags erforderlich. Die folgende Tabelle listet alle unterstützten USE-Flags
für apache-2.2.6-r4 und höher auf, ebenso das entsprechende Flag in
älteren Versionen.
| USE-Flag |
Altes USE-Flag |
Beschreibung |
| debug |
debug |
Aktiviert einen Hook, der es externen Modulen ermöglicht, sich
einzuschalten und etwas zu tun, nachdem ein Child gecrasht ist. Es gibt
bereits zwei Module, mod_whatkilledus und mod_backtrace, die
Gebrauch von diesem Hook machen.
|
| doc |
doc |
Installiere das Apache-Manual und Konfiguration.
|
| ldap |
ldap |
Installiert mod_ldap und mod_authnz_ldap
|
| ssl |
ssl |
Installiert mod_ssl.
|
| static |
static-modules |
Die Basismodule werden statisch in das Apache-Binary verlinkt, so dass
LoadModule nicht benötigt wird, um diese Module zu laden.
|
| suexec |
no-suexec |
Installiert mod_suexec und die suexec Hilfs-Binary |
| threads |
threads |
Wählt die standardmäßige MPM aus, wenn keine in APACHE2_MPMS gesetzt ist
|
Die folgende Tabelle listet unterstützte APACHE2_MPMS seit
apache-2.2.6-r4 und deren entsprechendes, vorheriges, lokales USE-Flag
auf.
| Flag |
Altes USE-Flag |
Beschreibung |
| event |
mpm-event |
Eine experimentelle Variante der standardmäßigen worker MPM |
| itk |
mpm-itk |
Ermöglicht es, jeden virtuellen Host unter einer separaten uid und gid
auszuführen
|
| peruser |
mpm-peruser |
Peruser ist eine funktionierende Implementierung der perchild MPM, die es
erlaubt, jeden Apache-Kindprozess unter seinem eigenen Benutzer und seiner
eigenen Gruppe auszuführen, wobei jeder seinen eigenen Satz an virtuellen
Hosts handhabt
|
| prefork |
mpm-prefork |
Implementiert einen non-threaded, pre-forking Webserver |
| worker |
mpm-worker |
Multi-Processing Module, welches einen hybriden, multi-threaded,
multi-prozess Webserver implementiert
|
Die folgende Tabelle listet unterstützte APACHE2_MODULES seit
apache-2.2.6-r4 auf.
| Flag |
Beschreibung |
| actions |
CGI-Skripte basierend auf dem Media-Typ und der Request-Methode ausführen
|
| alias |
Bereitstellen von "Mapping" verschiedener Teile des Host-Dateisystems im
Dokumentbaum und für URL-Umleitung
|
| asis |
Sendet Dateien, die ihre eigenen HTTP-Header enthalten |
| auth_basic |
Grundlegende Authentifikation |
| auth_digest |
Benutzerauthentifikation unter Benutzung von MD5 Digest Authentifikation
|
| authn_alias |
Stellt die Fähigkeit bereit, erweiterte Authentifikationsprovider zu
erstellen, basierend auf eigentlichen Providern
|
| authn_anon |
Erlaubt "anonymous" Benutzerzugriff zu authentifizierten Bereichen |
| authn_dbd |
Benutzerauthentifizierung unter Benutzung einer SQL-Datenbank |
| authn_dbm |
Benutzerauthentifikation unter Benutzung von DBM-Dateien |
| authn_default |
Authentifikationsausweichlösungsmodul |
| authn_file |
Benutzerauthentifikation unter Benutzung von Textdateien |
| authz_dbm |
Gruppenautorisierung unter Benutzung von DBM-Dateien |
| authz_default |
Autorisierungsausweichlösungsmodul |
| authz_groupfile |
Gruppenautorisierung unter Benutzung von Textdateien |
| authz_host |
Gruppenautorisierungen basierend auf Host (Name oder IP-Adresse) |
| authz_owner |
Autorisierung basierend Dateieigentümerschaft |
| authz_user |
Benutzerautorisierung |
| autoindex |
Generiert Verzeichnisindizes automatisch, ähnlich zum Unix-Befehl ls
|
| cache |
Inhaltscache "keyed" zu URIs |
| cern_meta |
CERN httpd metafile semantics |
| charset_lite |
Spezifiziere Zeichensatzübersetzung oder -kodierung |
| dav |
Verteilte Authoring und Versioning (WebDAV) Funktionalität |
| dav_fs |
Dateisystemprovider für mod_dav |
| dav_lock |
Generisches Sperrmodul für mod_dav |
| dbd |
Verwaltet SQL-Datenbankverbindungen |
| deflate |
Komprimiere Inhalt bevor er an Clients geliefert wird |
| dir |
Provides für "trailing slash" Umleitungen und Verzeichnisindexdateien
|
| disk_cache |
Inhaltscachespeichermanager "keyed" zu URIs |
| dumpio |
Gibt kompletten I/O zum Error-Log falls gewünscht |
| env |
Modifiziert die Umgebung, welche an CGI-Skripte und SSI-Seiten übergeben
wird
|
| expires |
Generierung von Expires und Cache-Controll HTTP Headers, nach
benutzerspezifizierten Kriterien
|
| ext_filter |
Leite den Antwortkörper durch ein externes Programm vor Auslieferung an
einen Client
|
| file_cache |
Cachet eine statische Liste von Dateien im Speicher |
| filter |
Kontext-sensitive kluges Filterkonfigurationsmodul |
| headers |
Anpassung von HTTP Request und Response Headern |
| ident |
RFC 1413 ident lookups |
| imagemap |
Server-side imagemap Verarbeitung |
| include |
Server-parsed HTML-Dokumente (Server Side Includes) |
| info |
Stellt eine umfassende Übersicht der Serverkonfiguration bereit |
| log_config |
Loggen der Anfragen an den Server |
| log_forensic |
Forensisches Loggen der Anfragen an den Server |
| logio |
Loggen von Eingabe- und Ausgabebytes pro Anfrage |
| mem_cache |
Inhaltscache "keyed" zu URIs |
| mime |
Verbindet die Endung des angefragten Dateinamens mit dem Verhalten
(Handler und Filter) und dem Inhalt (MIME-Typ, Sprache, Zeichensatz,
Kodierung) der Datei
|
| mime_magic |
Stellt den MIME-Typ einer Datei durch Anschauen der ersten Bytes des Inhalts
fest
|
| negotiation |
Provides für content negotiation |
| proxy |
HTTP/1.1 Proxy/Gateway-Server |
| proxy_ajp |
AJP Unterstützungsmodul für mod_proxy |
| proxy_balancer |
mod_proxy Erweiterung für Ausgleichen der Load |
| proxy_connect |
mod_proxy Erweiterung für CONNECT Anfragenhandhabung |
| proxy_ftp |
FTP Unterstützungsmodul für mod_proxy |
| proxy_http |
HTTP Unterstützungsmodul für mod_proxy |
| rewrite |
Stellt eine regelbasierte Umleitungs-Engine bereit, um angeforderte URLs
on-the-fly umzuleiten.
|
| setenvif |
Ermöglicht das Setzen von Umgebungsvariablen basierend auf Eigenschaften
der Anfrage
|
| speling |
Versucht irrtümliche URLs, die Benutzer eingegeben haben können, zu
korrigieren, indem Großschreibung ignoriert wird und bis zu eine
Fehlbuchstabierung erlaubt wird
|
| status |
Stellt Informationen zu Serveraktivitäten und -performanz bereit |
| unique_id |
Stellt eine Umgebungsvariable mit einem eindeutigen Bezeichner für jede
Anfrage bereit
|
| userdir |
Benutzerspezifische Verzeichnisse |
| usertrack |
Clickstream-Loggen von Benutzeraktivität auf einer Seite |
| version |
Versionsabhängige Konfiguration |
| vhost_alias |
Provides für dynamisch konfiguriertes Massen-Virtual-Hosting |
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|
|
Seite aktualisiert 11. Dezember 2007 |
Zusammenfassung:
Dieses Dokument beschreibt die Vorgehensweise die Endanwender für ein Upgrade
ihrer Apache-Installation benutzen sollten.
|
Michael Stewart
Autor
Benedikt Boehm
Bearbeiter
Joshua Saddler
Bearbeiter
Stefan Becker
Übersetzer
keytoaster@gentoo.org
Übersetzer
|
|
Donate to support our development efforts.
|
|
|