Gentoo Logo

Apache upgraden

Inhalt:

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

(Sie können nun Apache sicher upgraden:)
# 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

(Prüfen Sie die USE-Flags und die nötigen Updates)
# 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

(Pakete aktualisieren)
# 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

(Möglicherweise ist es einfacher ein World-Update zu machen, anstelle
 des obenstehenden)

# 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


Drucken

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.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.