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
LDAPUserDir public_html
LDAPUserDirDNInfo cn=root,dc=yourcompany,dc=com yourpassword
LDAPUserDirBaseDN ou=People,dc=yourcompany,dc=com
</IfDefine>
|
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|