Apache2-mpm-itk : Utiliser un utilisateur différent pour chaque vhost

Qu’est ce qu’un MPM Apache ?

le MPM ou Multi-Processing Module, est le composant d’Apache qui gère les connexions simultanées, en terme de process et/ou de thread.

 

Quel est l’intérêt d’utiliser apache2-mpm-itk plutôt que worker ou prefork ?

Une des limitations des mpm classiques est qu’ils utilisent le même uid:gid, définis dans /etc/apache2/apache2.conf pour traiter les requêtes de tous les vhosts.

Le mpm itk permet de choisir un uid:gid différent pour chaque virtual-host et ce sans avoir recours aux cgi ou aux modules suexec ou suphp, ce qui est extrêmement pratique dans le cadre d’un hébergement mutualisé ainsi que dans certains cas pratiques.

Coté sécurité, le mpm itk permet d’isoler la configuration de chaque vhost directement dans son fichier de configuration.

 

Performances :

La principale limitation du mpm itk est sa performance. Parce que le MPM ITK crée puis détruit un processus pour chaque requête, les performances de ce MPM s’en trouvent bien dégradées notamment par rapport à Prefork ou Worker, bien que ITK reste plus performant que les modules suexec ou suphp.
Si la performance vous est indispensable il sera bon de se tourner vers le mpm per-user qui réalise le même travail en profitant des threads mais qui demande bien plus d’efforts de configuration. Ou encore vers les solution FastCGI.

 

Installation :

Pour installer Apache2-mpm-itk, utilisez simplement votre gestionnaire de paquet, qui s’occupera lui même via les install script de remplacer le mpm que vous utilisez actuellement

apt-get install apache2-mpm-itk

Si vous souhaitez compiler ce module depuis les sources je vous conseille cet article :

 http://blog.stuartherbert.com/php/tag/mpm-itk/

 

Configuration :

Pour finir il vous suffit ensuite de rajouter ce bloc dans le fichier de configuration du vhost :

<IfModule mpm_itk_module>

AssignUserId username groupname

</IfModule>

Il ne reste plus qu’à recharger la configuration d’Apache :

apache2ctl configtest && /etc/init.d/apache2 restart

Vous pouvez maintenant verifier que les processus Apache se lancent avec les bons droits :

ps aux | grep apache

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *