Aggiornamento di Apache

Contenuti:

1.Introduzione

Lo stato di Apache e dei suoi moduli in Gentoo stava diventando decadente. C'era un certo numero di problemi che hanno generato difficoltà nel supporto e reso il mantenimento del pacchetto difficoltoso:

  • La configurazione fornita con Gentoo è drasticamente diversa da quella distribuita da apache.org usata da molti utenti e distribuzioni.
  • Molti moduli usano porzioni di codice simili, ma ognuno di essi implementa funzioni in modo personale.
  • Alcuni moduli non sono mantenuti con cura, a causa anche del grande numero di moduli disponibile
  • I moduli non hanno una configurazione standard
  • Alcuni moduli supportano entrambe le versioni di Apache, ma gli ebuild non sono in grado di distinguerle
  • Scelte disponibili normalmente in Apache, ma non per gli utenti Gentoo (per esempio gli MPMs)
  • I bug di Apache si stavano accumulando

La soluzione? Il gruppo di Apache è stato allargato, sono stati aggiunti molti nuovi membri, che hanno lavorato per generare eclass, per aggiornare tutti i moduli e per chiudere un buon numero di bug.

Questo documento spiega come aggiornare senza danneggiare il vostro sistema. Se sei uno sviluppatore o vuoi sapere cosa è stato cambiato, o come gli ebuild devono essere modificati per utilizzare gli eclass, allora visita la pagina di riferimento del progetto Apache.

2.Istruzioni per l'aggiornamento

Sono stati fatti molti cambiamenti riguardo il modo in cui Apache lavora, in Gentoo. Ogni pacchetto direttamente collegato con Apache deve essere aggiornato, ed alcuni dettagli che prima funzionavano, ora non funzioneranno più.

Prima di tutto bisogna capire cosa necessita di aggiornamento. Questo è possibile usando il tool equery, del pacchetto app-portage/gentoolkit.

Esempio 1: Individuazione dei pacchetti obsoleti

$ equery depends net-www/apache
[ Searching for packages depending on net-www/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_ldap_userdir-1.1.4
net-www/mod_loopback-1.04
net-www/mod_mp3-0.40
net-www/mod_random-2.0
net-www/mod_throttle-3.1.2-r1
net-www/mod_watch-3.18
www-apps/viewcvs-0.9.2_p20030430

Importante: I pacchetti installati possono variare molto da un sistema all'altro, assicuratevi di eseguire questo comando.

Attenzione: Esistono alcuni moduli e pacchetti dipendenti da Apache che non sono stati aggiornati. Effettuate una ricerca su bugzilla per ogni pacchetto di importanza critica che usate con Apache.

Molte webapps non sono influenzate da questo aggiornamento perché si appoggiano alla eclass webapp che si occupa di garantirne la corretta installazione e funzionamento. È comunque consigliabile controllare la disponibilità di nuove revisioni.

Sono state aggiunte alcune nuove USE-flags, è consigliabile rivedere il contenuto di /etc/portage/package.use. Consultate la lista delle USE-flags di Apache per ulteriori dettagli.

Esempio 2: Verifica delle USE flag e ricompilazione

(Verifica delle USE-flags e gli aggiornamenti richiesti)
# 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

(Aggiornamento)
# 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

(È più semplice effettuare l'aggiornamento di world)
# emerge --ask --verbose --update --newuse --deep world

Ora si deve riconfigurare Apache ed i suoi moduli. Si inizia con un etc-update o dispatch-conf per aggiornare i files in /etc/init.d e /etc/conf.d. Si riceverà la segnalazione che i file di configurazione di Apache sono stati aggiornati (questo perché tutti i file di configurazione sono stati spostati)

Se sono stati fatti dei cambiamenti al precedente apache.conf e commonapache.conf è necessario fare la migrazione di tali cambiamenti a /etc/apache{|2}/httpd.conf. Anche la locazione per moduli e virtual-host è stata cambiata -- adesso si trovano in /etc/apache2/modules.d e /etc/apache2/vhosts.d rispettivamente.

Una volta completata la migrazione dei cambiamenti al nuovo file di configurazione, è necessario cancellare il vecchio file di configurazione (o spostarlo in una diversa posizione). Il nuovo script /etc/init.d/apache{|2} verifica che non esistano copie dei vecchi file, e non permette l'avvio di Apache fino a che questi files non sono stati rimossi, ed il nuovo Apache è stato configurato.

Nota: Molti moduli in precedenza abilitati per default sono ora disabilitati. Se si tratta di moduli built-in, rimuovere il commento dalla riga corrispondente in httpd.conf. Se si tratta di moduli esterni si deve ricercare nel file .conf del modulo, un IfDefine e aggiungere la stringa corrispondente in /etc/conf.d/apache{|2} per abilitarlo.

Ora è possibile riavviare apache.

Esempio 3: Riavvio di apache

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

Se si presentano dei problemi, consultare la Apache Troubleshooting Guide (in inglese) e se questa non risolve la questione, segnalare il problema su Gentoo Bugzilla. Assicuratevi di includere l'elenco dei moduli che sono stati abilitati e (se si usa Apache 2) quale MPM USE-flag è stata usata per la compilazione. È possibile trovare supporto anche nel canale IRC #gentoo-apache su irc.freenode.net.

3.USE-flags supportate da Apache

Ci sono alcuni USE-flags locali per Apache ed i suoi moduli. Apache supporta molte altre USE-flag generiche come ssl, ma l'effetto che hanno non è molto diverso da quello che manifestano in altri contesti, quindi non vengono incluse in questa lista. emerge --verbose --pretend apache mostra tutte le USE-flags supportate.

USE-flag Pacchetti Descrizione
apache2 depend.apache eclass (tutti i moduli) Deve sempre essere impostata se si desidera utilizzare Apache 2.0, diversamente verrà usato Apache 1.3. L'eclass utilizza questa USE per determinare da quale versione di Apache dipende.
mpm-leader apache-2* Compila il MPM leader
mpm-metux apache-2* Compila il MPM metux
mpm-peruser apache-2* Compila il MPM peruser
mpm-prefork apache-2* Compila il MPM prefork
mpm-threadpool apache-2* Compila il MPM threadpool
mpm-worker apache-2* Compila il MPM worker
no-suexec apache Disabilita la compilazione del modulo suexec (per coloro che non vogliono avere un binario suid potenzialmente pericoloso all'interno del sistema)
static-modules apache Effettua il linking statico dei moduli all'interno del binario di Apache, in modo che non sia richiesto LoadModule per il caricamento degli stessi.
lingerd apache-1* Aggiunge il supporto per lingerd
no-htdocs gentoo-webroot-default Disabilita l'installazione del default webroot in /var/www/localhost in modo che i file in quella posizione non siano sovrascritti. La webroot viene installata in /usr/share/doc/gentoo-webroot-default-*/webroot/.

Nota: Le mpm-* USE-flags sono mutuamente esclusive. Solo una deve essere abilitata tramite la mpm-* USE-flags. (Se non ne viene abilitata una, viene compilato mpm-prefork o mpm-worker, a seconda che la flag globale threads sia settata.)



Ultimo aggiorn.:
2005-09-29
Michael Stewart
Autore

Sergio Bevilacqua
Traduttore

Sommario:  Questo documento descrive le procedure necessarie all'utente finale per aggiornare la sua installazione di apache.
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.