Vhost dbd
De MySoLo Wiki.
Sommaire |
Introduction
Module apache permettant la gestion des "virtual host" (directive Virtualhost d'apache) directement à partir d'une base de donnée.
Il utilise les fonctionnalités de mod_dbd donc toutes les bases prisent en charge par mod_dbd sont utilisables (Mysql, SQLite, Postgresql, etc).
Lorsque que j'ai commencer à développer vhost_dbd, ma priorité a été de rendre celui-ci indépendant des bases utilisées ( l'avantage d'utiliser mod_dbd ) et de le rendre aussi indépendant de la structure des tables sql utilisées. Il n'y a pas de champs imposés ( il vaut quant même mieux indiquer le host et le répertoire des documents :) ).
Pré-requis
- Apache 2
- Attention, il n'y a pas eu de test effectué avec une version 2.0.x d'apache.
- Le développement et test n'ont été effectué que sur une version apache 2.2.x sous gentoo.
- mod_dbd compilé, installé et configuré. ( Sinon, il n'y a pas de raison d'utiliser mod_vhost_dbd :-) )
- apr-util >= 1.2.x
Installation
La compilation du module est assez simpliste en utilisant apxs ou apxs2 ( Cela dépend de la distribution linux utilisée ou de l'installation effectué d'apache. )
Dans le répertoire des sources:
apxs -i -n mod_vhost_dbd mod_vhost_dbd.c
ou en utilisant le Makefile
make all
Attention, le Makefile a été créé avec un apxs -g -n mod_vhost_dbd. Il correspond donc au chemin de mon installation de apache ( Les chemain d'un apache2 installé sous gentoo ). Il se peut que celui-ci ne fonctionne pas bien. Dans ce cas changer les lignes ci-dessous pour quelles correspondent à votre installation d'apache.
less Makefile
... top_srcdir=/usr top_builddir=/usr/lib/apache2 include /usr/lib/apache2/build/special.mk ...
Configuration
| Description: | Active ou désactive vhost_dbd |
| Syntax: | VhostDBDEnable On |
| Context: | server config, virtual host |
| Status: | module externe |
| Module: | mod_vhost_dbd |
| Version: | >= 0.0.1 |
La directive VhostDBDEnable permet d'activer ou désactiver la gestion des hosts par vhost_dbd.
Celle-ci est utilisable aussi bien dans la configuration du serveur qu' entre les directives <virtualhost> </virtualhost>.
Dans la configuration du serveur , elle permet d'activer ( ou de désactiver ) toute la gestion des hosts par vhost_dbd. Dans la configuration de virtualhost, elle permet d'activer ( ou de désactiver ) toute la gestion des hosts par vhost_dbd au niveau du seul virtualhost définie.
Par défaut , la directive VhostDBDEnable est à Off (désactivé).
exemple:
Configuration unique d'activation.
VhostDBDEnable On
Activation au niveau de tout le serveur et désactivation au niveau d'un virtualhost spécifique.
VhostDBDEnable On <VirtualHost 111.22.33.44> VhostDBDEnable Off ... </VirtualHost>
| Description: | Permet d'indiquer la requête SQL qui sera utilisé pour retrouver les vhosts. |
| Syntax: | VhostDBDQuery [modèle de requete] |
| Context: | server config, virtual host |
| Status: | module externe |
| Module: | mod_vhost_dbd |
| Version: | >=0.0.1, UID,GID >= 0.2.0 |
La directive VhostDBDQuery permet d'indiquer la requête qui sera utilisé pour retrouver les valeurs actuellement pris en charge correspondant au hostname indiqué lors de la requête http.
La requête sera recréé par mod_vhost_dbd à partir du modèle fournis.
Le modèle de requête est constitué:
- des commandes sql
- de variable clef entouré de { } (variable=valeur} permettant d'indiquer les noms de colonne renvoyer par la requête. Il doit y avoir au minimum une variable d'indiquée, sinon, l'utilisation du module n'a pas lieu d'être.
- de la valeur %s qui sera remplacé par le host de la requête http reçu.
exemple de modèle de requête:
SELECT {Path='nom de colonne de la table'} FROM 'la table' WHERE 'nom de colonne de la table'=%s
requête correspondante:
SELECT 'nom de colonne de la table' FROM 'la table' WHERE 'nom de colonne de la table'=host
Les variable pris en charge dans le modèle de requête:
- Path = indique la colonne du répertoire ou sont situé les fichiers servie par apache. Equivalent à la directive d'apache DocumentRoot.
- ServerAdmin = indique l'email de l'admin du serveur. Equivalent à la directive d'apache ServerAdmin.
- UID, GID = indique les uid et ou gid pour suexec. Correspond au directive de mod_suexec username et groupname à la différence prêt que seul des UID ET GID doivent correspondent ( et non pas les noms de user ou group ). Ceci permet d'indiquer des UID/GID même si il n'y a pas de correspondance de ceci avec les nom d'utilisateur de nom de group au niveau du système.
| Description: | Active ou désactive support itk |
| Syntax: | VhostDBDItkEnable On |
| Context: | server config, virtual host |
| Status: | module externe |
| Module: | mod_vhost_dbd |
| Version: | >= 0.3.0 |
La directive VhostDBDItkEnable permet d'activer ou désactiver le support du mpm itk (Doit avoir été compilé avec le support d'itk).
le mpm itk est la version du mpm prefork permettant de faire tourner les apaches fils directement avec les uid/gid voulu. Ceci permet , par exemple d'utilisé php en modules ( qui requiert un mpm non threadé ) plutot que suPHP/suExec en cgi.
Celle-ci est utilisable aussi bien dans la configuration du serveur qu' entre les directives <virtualhost> </virtualhost>.
Dans la configuration du serveur , elle permet d'activer ( ou de désactiver ) le préfork du serveur apache par itk avec les UID/GID fourni par VhostDBDQuery. Dans la configuration de virtualhost, elle permet d'activer ( ou de désactiver ) au niveau du seul virtualhost définie.
Par défaut , la directive VhostDBDItkEnable est à Off (désactivé).
Téléchargement
module disponible uniquement par svn actuellement
Version stabilisé
Cette version indique simplement que le module est actuellement en état de fonctionnement sans bug direct connu, mais cela n'indique pas que la version est stable :) Actuellement utilisé ici même pour ce site.
Version actuellement utilisé ici même pour ce site.
svn co https://svn.cynetek.com/pub/mod_vhost_dbd/branches/vhost_dbd-0.2.1a mod_vhost_dbd
Version en cours
Seul cette version a vocation à évoluer.
ChangeLog: https://svn.cynetek.com/pub/mod_vhost_dbd/trunk/ChangeLog
SVN: svn co https://svn.cynetek.com/pub/mod_vhost_dbd/branches/trunk mod_vhost_dbd
A Faire ( TODO )
- Intégration avec le mpm ITK pour le préfork des daemons apaches directement avec les uid/gid correspondant aux vhosts en base de donnée. (FAIT version >= 0.3.x)
- Intégrer un système de cache si il n'y en a pas au niveau du système de base de donnée ( MEMCACHE ? )
Copyright de vhost_dbd par Thierry Laurier ( MySoLo )
