Gentoo Logo

Aktualizacja Apache

Spis treści:

1.  Aktualizacja wersji <2.2.6-r4

Ebuildy Apache przez długi czas korzystały z /etc/apache2/apache2-builtin-mods do wybierania modułów, które mają być skompilowane. Miało to jednak szereg wad.

  • Wybór podczas pierwszej instalacji nie był możliwy.
  • Portage nie wiedziało które moduły zostały już zainstalowane. Sprawiało to problemy szczególnie w przypadku prekompilowanych pakietów.
  • Portage próbowało nadpisać plik apache2-builtin-mods przy każdej aktualizacji.

W celu naprawienia tej sytuacji zrezygnowaliśmy z pliku /etc/apache2/apache2-builtin-mods i zaczęliśmy korzystać ze zmiennych APACHE2_MODULES z USE_EXPAND. Poniższe polecenie pozwoli na przerobienie starego sposobu wyboru modułów na nowy:

Listing 1.1: Zmiana apache2-builtin-mods na 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

(Można teraz bezpiecznie zaktualizować apache)
# emerge -uva '>=www-servers/apache-2.2.6-r4'

Oprócz dodania zmiennej APACHE2_MODULES, dokonaliśmy także porządków we flagach USE.

  • Wszystkie flagi USE MPM zostały przeniesione do zmiennej APACHE2_MPMS z USE_EXPAND
  • no-suexec został zastąpiony przez suexec
  • static-modules teraz nazywają się po prostu static

Dokładny opis wszystkich starych i nowych flag USE znajduje się poniżej.

2.  Aktualizacja z <2.0.52-r3

Wprowadzenie

Stan pakietów z Apache i jego modułami zaczął się pogarszać. Liczne problemy utrudniały pracę grupy opiekującej się Apache oraz pomoc użytkownikom:

  • Konfiguracja dostarczana z Gentoo znacznie różniła się od domyślnej, jakiej oczekiwała większość użytkowników
  • Wiele modułów używało podobnego kodu, ale robiło wszystko na swój sposób
  • Większość modułów nie była dobrze zarządzana - przede wszystkim z powodu ich dużej ilości
  • Moduły nie posiadały standardowej konfiguracji
  • Niektóre moduły współpracowały z obiema wersjami Apache, ale ebuildy tego nie obsługiwały
  • Niektóre funkcje Apache nie były dostępne dla użytkowników Gentoo (na przykład MPM)
  • Błędy związane z Apache nawarstwiały się

Dokument ten szczegółowo opisuje bezpieczny dla systemu proces aktualizacji apache. Deweloperzy oraz zainteresowani zmianami użytkownicy, którzy chcieliby się dowiedzieć jak zmodyfikować ebuildy, żeby korzystały z nowej eclassy mogą znaleźć więcej informacji w Apache Developer Reference.

Aktualizowanie

Wprowadziliśmy wiele zmian w działaniu Apache pod Gentoo. Każdy pakiet, który jest z nim bezpośrednio związany, musi zostać zaktualizowany. Nie wszystko będzie działać tak jak wcześniej.

Po pierwsze, musimy dowiedzieć się, które pakiety należy zaktualizować. Możemy skorzystać w tym celu z programu equery, należącego do pakietu app-portage/gentoolkit.

Listing 2.1: Wyszukiwanie pakietów do aktualizacji

$ 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
net-www/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

Ważne: Lista pakietów, które mamy zainstalowane w systemie, może się znacznie różnić od powyższej. Musimy wykonać podane polecenie samodzielnie.

Ostrzeżenie: W Portage wciąż są moduły i pakiety zależne od Apache, które nie zostały jeszcze zaktualizowane. Warto poszukać bugów dotyczących wszystkich krytycznych pakietów związanych z Apache jakich używamy w Bugzilli.

Wprowadzone zmiany nie dotyczą wielu aplikacji internetowych, w większości korzystających z eclassy webapp, która kontroluje ich poprawną instalację. Można sprawdzić czy zostały zaktualizowane w nowej wersji pakietu.

Ponieważ dodaliśmy kilka nowych flag USE, warto je przejrzeć i dodać odpowiednie wpisy do /etc/portage/package.use. Więcej informacji znajduje się w rozdziale Flagi USE dotyczące Apache.

Listing 2.2: Aktualizacja pakietów z nowymi flagami USE

(Aby wyświetlić nowe flagi USE i niezbędne aktualizacje)
# 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

(Aby zaktualizować pakiety)
# 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

(Aktualizacja samego world może okazać się łatwiejsza)
# emerge --ask --verbose --update --newuse --deep world

Teraz musimy ponownie skonfigurować Apache oraz jego moduły. Zaczniemy od aktualizacji plików w /etc/init.d oraz /etc/conf.d za pomocą narzędzi etc-update lub dispatch-conf. Nie wyświetlą one plików konfiguracyjnych apache, ponieważ wszystkie zostały przeniesione do innych lokalizacji.

Jeśli wprowadziliśmy zmiany do domyślnych plików apache.conf oraz commonapache.conf, będziemy musieli je przepisać w /etc/apache{|2}/httpd.conf. Zmieniły się ścieżki do plików konfiguracyjnych modułów oraz vhostów. Obecnie znajdują się odpowiednio w katalogach /etc/apache2/modules.d oraz /etc/apache2/vhosts.d.

Kiedy skończymy przepisywać nasze zmiany do nowych plików konfiguracyjnych, musimy usunąć poprzednie (lub gdzieś je przenieść). Poprawiony /etc/init.d/apache{|2} nie pozwala uruchomić apache jeśli wciąż istnieją, zakładając, że ponownie skonfigurowaliśmy apache korzystając z nowych plików.

Uwaga: Wiele modułów, które wcześniej były aktywowane domyślnie, teraz jest wyłączonych. Jeśli potrzebujemy tych wbudowanych w apache, wystarczy odkomentować odpowiednie linie w httpd.conf. Jeśli chcemy skorzystać z modułów zewnętrznych, musimy odszukać w ich konfiguracji IfDefine i dodać ich nazwy do /etc/conf.d/apache{|2}.

Następnie ponownie uruchamiamy apache.

Listing 2.3: Ponowne uruchamianie apache

# /etc/init.d/apache stop
# /etc/init.d/apache start

Jeśli natrafimy na jakieś problemy, powinniśmy przeczytać Apache Troubleshooting Guide. Jeżeli nie znajdziemy tam rozwiązania, należy je zgłosić w bugzilli. W raporcie błędu trzeba wymienić używane moduły oraz (jeżeli korzystamy z Apache 2) flagi USE dotyczące MPM z jakich korzystamy. Pomoc można uzyskać także na kanale #gentoo-apache w sieci irc.freenode.net.

3.  Flagi USE dotyczące Apache

Apache i jego moduły korzystają z pewnych specyficznych flag USE. Oczywiście obsługują także bardziej standardowe flagi takie jak ssl, jednak nie opisujemy ich zachowania, ponieważ nie różni się znacznie od tego w innych pakietach. Wszystkie obsługiwane flagi można wyświetlić poleceniem emerge --verbose --pretend apache.

Flaga USE Opis
apache2 Powinna być ustawiona zawsze gdy korzysta się z Apache serii 2.0. Nie powinna być ustawiona dla wersji 1.3. Eklasa wykorzystuje tę flagę do zdefiniowania używanej wersji Apache.
debug Dodaje kod pozwalający na uruchomienie podanych poleceń po tym jak proces potomny zostanie przerwany z błędem. Istnieją już dwa moduły, mod_whatkilledus i mod_backtrace, które wykorzystują tę możliwość.
doc Instaluje manual i dokumentację.
ldap Instaluje mod_ldap i mod_auth_ldap/mod_authnz_ldap.
ssl Instaluje mod_ssl.
mpm-itk Buduje itk MPM
mpm-leader Buduje leader MPM
mpm-peruser Buduje peruser MPM
mpm-prefork Buduje prefork MPM
mpm-threadpool Buduje threadpool MPM
mpm-worker Buduje worker MPM
static-modules Wbuduje moduły na stałe w binaria apache. Nie będzie wtedy konieczne korzystanie z LoadModule dla załadowania podstawowych modułów Apache.

Uwaga: Flagi USE mpm-* wzajemnie się wykluczają. Dlatego należy wybrać tylko jedną flagę mpm-*. Jeśli jej się nie wybierze poprzez USE, automatycznie zostanie wybrana flaga mpm-prefork lub mpm-worker w zależności od ustawienia flagi USE threads.

4.  Flagi USE wspierany w wersji 2.2.6-r4 i nowszych

Po wprowadzeniu APACHE2_MODULES porządki we flagach USE były koniecznością. Poniższa lista zawiera wszystkie wspierane flagi USE dla apache-2.2.6-r4 i nowszych oraz ich odpowiedniki w starszych wersjach.

Flaga USE Dawna flaga USE Opis
debug debug Dodaje kod pozwalający na uruchomienie podanych poleceń po tym jak proces potomny zostanie przerwany z błędem. Istnieją już dwa moduły, mod_whatkilledus i mod_backtrace, które wykorzystują tę możliwość.
doc doc Instaluje manual i dokumentację Apache
ldap ldap Instaluje mod_ldap i mod_authnz_ldap
ssl ssl Instaluje mod_ssl
static static-modules Wbuduje moduły na stałe w binaria apache. Nie będzie wtedy konieczne korzystanie z LoadModule dla załadowania podstawowych modułów Apache.
suexec no-suexec Instaluje mod_suexec i program pomocniczny suexec
threads threads Wybiera domyślny MPM jeśli nie wybrano żadnego w APACHE2_MPMS

Poniższa tabela zawiera wszystkie wspierane wartości zmiennej APACHE2_MPMS w apache-2.2.6-r4 i flagi USE które je reprezentowały w poprzednich wydaniach pakietu.

Flaga USE Dawna flaga USE Opis
event mpm-event Eksperymentalna wersja domyślnego MPM
itk mpm-itk Pozwala na uruchomienie każdej wirtualnej domeny z innymi wartościami uid i gid
peruser mpm-peruser Pozwala na uruchomienie każdego procesu potomnego apache jako inny użytkownik lub inna grupa. Każdy proces może mieć własny zestaw wirtualnych domen.
prefork mpm-prefork Implementacja niewątkowego serwera stron
worker mpm-worker MPM implementujący hybrydowy wielowątkowy i wieloprocesowy serwer stron

Poniższa lista zawiera wszystkie wspierane wartości zmiennej APACHE2_MODULES od wersji apache-2.2.6-r4.

Flaga Opis
actions Pozwala na uruchamianie skryptów CGI opartych na typie pliku lub metodzie dostępu
alias Pozwala na mapowanie różnych portów do różnych miejsca drzewa dokumentów lub na przekierowanie URL
asis Wysyła pliki zawierające własne nagłówki HTTP
auth_basic Podstawowe metody uwierzytelniania
auth_digest Uwierzytelnianie za pomocą sumy MD5
authn_alias Dodaje możliwość tworzenia rozszerzonych możłiwości uwierzytelniania opartych o już istniejące
authn_anon Pozwala na anonimowy dostęp do niechronionych danych
authn_dbd Uwierzytalnie za pomocą bazy SQL
authn_dbm Uwierzytelnianie za pomocą plików DBM
authn_default Domyślny sposób uwierzytelniania
authn_file Uwierzytelnianie poprzez pliki tekstowe
authz_dbm Uwierzytelnianie grup poprzez pliki DBM
authz_default Inny domyślny sposób uwierzytelniania
authz_groupfile Uwierzytelnianie grup za pomocą plików pisanych otwartym tekstem
authz_host Uwierzytelnianie grup oparte na adresie IP i nazwie hosta
authz_owner Uwierzytelnianie oparte na prawach dostępu do plików
authz_user Uwierzytelnianie użytkownika
autoindex Automatyczne tworzenie indeksów katalogów, podobnego do wyniku polecenia ls
cache Przypisuje cache do adresów
cern_meta Składnia CERN dla httpd
charset_lite Pozwala na określenie translacji i kodowania znaków
dav Dodaje funkcje WebDAV
dav_fs System plików dla mod_dav
dav_lock Moduł odcinający dla mod_dav
dbd Zarządzanie połączeniami z bazą SQL
deflate Kompresja danych przed wysłaniem
dir Zapewnia przekierowania dla adresów z nadmiarowym ukośnikiemm
disk_cache Zarządzanie cache przypisany do adresów
dumpio Zapisuje cały ruch I/O
env Pozwala na modyfikację zmiennych środowiskowych przekazywanych do stron CGI i SSI
expires Tworzy nagłówki Expires i Cache-Control zgodnie z kryteriami podanymi przez użytkownika
ext_filter Przetwarza odpowiedź podanym programem przed wysłaniem jej do klienta
file_cache Zapisuje listy statycznych plików w pamięci
filter Pozwala na filtrowanie treści
headers Pozwala na zmianę nagłówków w zapytaniach i odpowiedziach HTTP
ident Poszukiwanie ident zgodne z RFC 1413
imagemap Przetwarzanie imagemap po stronie serwera
include Pozwala na dołączanie plików HTML po stronie serwera
info Pokazuje informacje o konfiguracji serwera
log_config Logowanie zapytań wysyłanych do serwera
log_forensic Dokładniejsze logowanie zapytań wysyłanych do serwera
logio Logowanie wejściowych i wejściowych bajtów na żądanie
mem_cache Przypisuje cache do adresów
mime Pozwala na powiązanie rozszerzeń plików ze sposobami ich obsługi
mime_magic Pozwala na wykrycie typu MIME pliku na podstawie kilku bajtów jego zawartości
negotiation Pozwala na negocjowanie zawartości
proxy Serwer proxy HTTP/1.1
proxy_ajp Moduł AJP dla mod_proxy
proxy_balancer Rozszerzenie mod_proxy pozwalające na zarządzanie obciążeniem
proxy_connect Rozszerzenie mod_proxy do obsługi zapytań CONNECT
proxy_ftp Obsługa FTP w mod_proxy
proxy_http Obsługa HTTP w mod_proxy
rewrite Pozwala na podmianę adresów w locie
setenvif Pozwala na opisanie zapytań za pomocą zmiennych środowiskowych
speling Próbuje poprawić źle wpisane adresy
status Podaje informacje na temat aktywności i wydajności serwera
unique_id Nadaje unikalną zmienną dla każdego zapytania
userdir Pozwala użytkownikom na posiadanie katalogów domowych
usertrack Logowanie aktywności użytkownika na stronie
version Konfiguracja zależna od wersji
vhost_alias Pozwala na dynamiczną konfigurację wielu wirtualnych domen


Drukuj

Zaktualizowano 11 grudnia 2007

Podsumowanie: Dokument opisuje proces bezpiecznej aktualizacji Apache.

Michael Stewart
Author

Benedikt Boehm
Editor

Joshua Saddler
Editor

Łukasz Strzygowski
Tłumacz

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

Linux World Expo

Linux World Expo

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