Gentoo Logo

Documentazione per Sviluppatori di Apache

1.  Guida ai Moduli Apache

Panoramica

Questo capitolo guiderà uno sviluppatore attraverso la creazione di un'ebuild usando uno dei pacchetti maggiormente complessi, www-apache/mod_ldap_userdir, scelto come esempio. Tutti i moduli di Apache hanno bisogno di usare apache-module.eclass per poter funzionare correttamente con i futuri cambiamenti del nucleo di apache.

Localizzazione Percorsi Apache

Allo scopo di avvicinarsi al tipo di installazione fatto da apache.org e altre distribuzioni, devono essere usati i seguenti percorsi come specificato in depend.apache.eclass:

Utilizzo Variabile Percorso
Server Root APACHE_BASEDIR /usr/lib/apache2/
Directory della Configurazione APACHE_CONFDIR /etc/apache2/
Configurazione Vhosts APACHE_VHOSTS_CONFDIR /etc/apache2/vhosts.d/
Configurazione Moduli APACHE_MODULES_CONFDIR /etc/apache2/modules.d/
Binari dei Moduli APACHE_MODULESDIR /usr/lib/apache2/modules/
Directory File Include APACHE_INCLUDEDIR /usr/include/apache2/
Binario Apache APACHE_BIN /usr/sbin/apache2
Script Controllo Apache APACHE_CTL /usr/sbin/apache2ctl
Binario APXS APXS /usr/sbin/apxs2

Nota: Se il proprio pacchetto non è precisamente un modulo, ma ha solo bisogno di conoscere i percorsi usati da Apache, eseguire inherit depend.apache ed usare le variabili rese disponibili nella eclass. A tale proposito vedere la documentazione relativa all'eclass depend.apache.eclass .

Panoramica sulle ebuild per i moduli di apache

  • In genere tutte le funzioni possono essere rimosse dall'ebuild
  • Controllare se la funzione src_compile predefinita nell'eclass funziona. Altrimenti, impostare APXS2_ARGS per compilare altri file come richiesto.
  • Sostituire qualsiasi occorrenza di DEPEND su Apache con una delle funzioni need_apache* descritte nella documentazione di depend.apache.eclass.
  • Modificare il file di configurazione del modulo affinché usi gli IfDefine per caricare e configurare il modulo
  • Aggiungere qualsiasi file di documentazione a DOCFILES
  • Specificare il file di configurazione che src_install deve installare: APACHE2_MOD_CONF
  • Specificare la IfDefine che il modulo usa nel suo file di configurazione così che pkg_postinst possa dare informazioni all'utente su come abilitare il modulo: APACHE2_MOD_DEFINE

Ebuild Globali

Codice 1.1: mod_ldap_userdir-1.1.12 (modificato)

inherit apache-module


DESCRIPTION="Modulo Apache che abilita ~/public_html from an LDAP directory."
HOMEPAGE="http://horde.net/~jwm/software/mod_ldap_userdir/"
SRC_URI="http://horde.net/~jwm/software/mod_ldap_userdir/${P}.tar.gz"

LICENSE="GPL-1"
SLOT="0"
KEYWORDS="~ppc ~x86"
IUSE="ssl"

DEPEND="ssl? ( dev-libs/openssl )
    net-nds/openldap"
RDEPEND="${DEPEND}"

DOCFILES="DIRECTIVES README user-ldif posixAccount-objectclass"

APXS2_ARGS="-lldap -llber -c ${PN}.c"
APACHE2_MOD_CONF="47_mod_ldap_userdir"
APACHE2_MOD_DEFINE="LDAP_USERDIR"

need_apache2_2

Si è partiti da inherit apache-module che a sua volta eredita depend.apache. depend.apache definisce le locazioni usate da Apache e, più importante, le tre DEPENDs: APACHE2_2_DEPEND per quei pacchetti che hanno bisogno di Apache-2.2*, APACHE2_DEPEND per quei pacchetti che hanno bisogno di Apache-2*, e APACHE_DEPEND per quelli che hanno bisogno di una qualsiasi delle due versioni di Apache.

L'apache-module fa la parte più pesante per i pacchetti del modulo definendo impostazioni predefinite valide per pkg_setup, src_compile,src_install e pkg_postinst.

depend.apache lavora aggiungendo il corretto Apache DEPEND al proprio DEPEND (se si chiama una delle funzioni need_apache*) così che si possa evitare la gestione del apache DEPEND nella propria ebuild.

DOCFILES è usato da src_install in apache-modules per installare tutta la documentazione. src_install trova automaticamente i file html e altri e usa sia dodoc che dohtml per installarli al posto giusto.

APACHE2_MOD_CONF definisce il file di configurazione da installare per il modulo. Questo è usato durante src_install e ha bisogno di essere relativo a FILESDIR. Vedere la documentazione di apache-module.eclass per maggiori dettagli.

APACHE2_MOD_DEFINE dice all'eclass quale <IfDefine MODULENAME> usa il modulo. Serve per mostrare all'utente le istruzioni su come abilitare il modulo.

src_compile

src_compile può servire se il modulo richiede speciali passi che l'eclass non può gestire. Questo è un caso raro. Nella maggioranza dei casi, riguardare il Makefile e aggiungere gli oggetti a APXS2_ARGS è sufficiente.

Codice 1.2: mod_ldap_userdir-1.1.12 (modificato)

src_compile() {
    econf || die "econf failed"
    use ssl && APXS2_ARGS="${APXS2_ARGS} -DTLS=1"
    apache-module_src_compile
}

Nota: In generale se APXS2_ARGS deve essere diverso, è definito nello spazio globale. mod_ldap_userdir a questo riguardo è differente perché lo stato della flag USE di ssl influenza quelle variabili ed è più efficiente nell'impostare solamente quei valori in src_compile piuttosto che eseguire il controllo USE durante ogni chiamata dell'ebuild.

src_install

Nella maggior parte dei casi, src_install non è necessario, eccetto quando ci sono altre directory che hanno bisogno di essere installate o quando i permessi sui file devono essere modificati.

Codice 1.3: mod_ldap_userdir-1.1.12 (modificato)

src_install() {
    apache-module_src_install
    fperms 600 "${APACHE_MODULES_CONFDIR}"/47_mod_ldap_userdir.conf
}

Come si può notare, nel mod_ldap_userdir bisogna impostare i permessi corretti sui suoi file di configurazione. apache-module dà il meglio di sé chiamando apache-module_src_install all'interno del proprio src_install. Nella maggior parte dei casi src_install non è per nulla necessario.

src_install gestisce correttamente e completamente l'installazione del modulo, dei file di configurazione e della documentazione.

Altre funzioni

Nella maggioranza dei casi, non ci dovrebbe essere nessun pkg_postinst o pkg_config, visto che l'eclass gestisce direttamente l'invio delle istruzioni relative all'abilitazione di un modulo e la posizione del file di configurazione dell'utente. Se ci fosse bisogno di istruzioni aggiuntive per la configurazione, allora si può aggiungere pkg_postinst, ma si deve ugualmente far andare apache-module_pkg_postinst al suo interno.

Con la nuova configurazione predefinita, gli utenti non hanno bisogno di modificare httpd.conf per abilitare un modulo. Tutti i file *.conf nella directory modules.d sono automaticamente inclusi. Tutti i file dovrebbero essere inglobati in un blocco <IfDefine MODULENAME>, in modo che le direttive in quel file siano usate solo se l'utente aggiunge un "-D MODULENAME" al suo file /etc/conf.d/apache2.

File di configurazione

La maggior parte dei file di configurazione non deve essere modificata. Bisogna fare estrema attenzione nell'usare il percorso corretto quando si carica il modulo: Ogni file di configurazione dev'essere racchiuso nei blocchi <IfDefine MODULENAME>. Se questo non viene fatto, allora Apache carica il modulo predefinito, cosa che si vuole evitare. Il caricamento del modulo deve essere controllato dall'utente usando il file /etc/conf.d/apache2.

Codice 1.4: file di configurazione d'esempio

<IfDefine LDAP_USERDIR>
LoadModule ldap_userdir_module modules/mod_ldap_userdir.so

# Inserire qui una buona configurazione predefinita:
LDAPUserDir             public_html
LDAPUserDirDNInfo       cn=root,dc=yourcompany,dc=com yourpassword
LDAPUserDirBaseDN       ou=People,dc=yourcompany,dc=com

</IfDefine>


Stampa

Aggiornato il 2 marzo 2008

Oggetto: Questo documento fornisce dettagli sulle eclass disponibili per gli sviluppatori di pacchetti relativi al webserver Apache.

Michael Stewart
Autore

Benedikt Böhm
Redazione

Massimo Zanetti
Traduzione

Davide Cendron
Traduzione

Donate to support our development efforts.

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