Apache Configuration · 4 min read · Jan 02, 2026

Exécution de Vhosts sous des UID/GID séparés avec Apache2 mpm-peruser sur Debian Etch - Page 2

3 Configuration d’apache2-mpm-peruser

Dans cet exemple, j’utiliserai le vhost Apache par défaut de Debian (vous pouvez trouver sa configuration dans /etc/apache2/sites-available/default) avec le répertoire racine /var/www (si vous avez des vhosts différents, veuillez ajuster cela à votre situation), et je veux que ce vhost s’exécute en tant qu’utilisateur web1_admin et groupe web1.

Si l’utilisateur et le groupe n’existent pas déjà, nous pouvons les créer comme suit :

groupadd web1  
useradd -s /bin/false -d /home/web1_admin -m -g web1 web1_admin

Maintenant, nous ouvrons la configuration principale d’Apache ( /etc/apache2/apache2.conf) et recherchons la section où les différents MPM (prefork, worker, etc.) sont configurés, et ajoutons quelque chose comme ceci :

vi /etc/apache2/apache2.conf

| [...] ServerLimit 256 MaxClients 256 MinSpareProcessors 2 MaxProcessors 10 MaxRequestsPerChild 1000 # tuer les processeurs inactifs après ce nombre de secondes (0 pour désactiver) IdleTimeout 60 # tuer les processus bloqués après ce nombre de secondes (0 pour désactiver) ExpireTimeout 300 # configurer quelques processus multiplexeurs s'exécutant en tant que nobody Multiplexer nobody nogroup Multiplexer nobody nogroup Multiplexer nobody nogroup # Processor # chroot est optionnel Processor web1_admin web1 [...] |

La ligne Processor est importante - elle indique à Apache quel couple utilisateur/groupe est autorisé à exécuter un vhost. Si vous avez un deuxième vhost que vous souhaitez exécuter en tant qu’utilisateur web2_admin et groupe web2, il suffit d’ajouter une deuxième ligne Processor. Vous pouvez même chroot l’utilisateur/groupe en ajoutant un répertoire optionnel :

| [...] Processor web1_admin web1 /var/www [...] |

Nous devons également modifier nos vhosts, par exemple comme ceci :

vi /etc/apache2/sites-available/default

| [...] # cela doit correspondre à une ligne Processor ServerEnvironment web1_admin web1 # ceux-ci sont optionnels - par défaut aux valeurs spécifiées ci-dessus #MinSpareProcessors 4 #MaxProcessors 20 [...] |

Cela doit être dans un conteneur . La ligne ServerEnvironment doit correspondre exactement à l’une des lignes Processor de la configuration mpm-peruser (si vous avez défini un chroot dans la ligne Processor, vous devez également l’énumérer ici, par exemple :

| [...] ServerEnvironment web1_admin web1 /var/www [...] |

). Cela définit sous quel utilisateur et groupe ce vhost spécifique s’exécute.

Redémarrez Apache ensuite :

/etc/init.d/apache2 restart

4 Reconstruction de libapache2-mod-php5

Maintenant, reconstruisons libapache2-mod-php5. D’abord, nous installons quelques prérequis :

apt-get install apache-dev bison chrpath firebird2-dev flex freetds-dev libbz2-dev libc-client-dev libcurl3-openssl-dev libfreetype6-dev libgcrypt11-dev libgd2-xpm-dev libjpeg62-dev libmcrypt-dev libmhash-dev libmysqlclient15-dev libncurses5-dev libpam0g-dev libpng12-dev libpspell-dev librecode-dev libsnmp9-dev libsqlite0-dev libt1-dev libtidy-dev libwrap0-dev libxmltok1-dev libxml2-dev libxslt1-dev re2c unixodbc-dev automake1.4 libtool shtool

Ensuite, nous obtenons le paquet source PHP5…

cd /usr/src  
apt-get source php5

… et allons dans le répertoire source :

cd php5-5.2.0

Maintenant, nous devons dire à PHP5 qu’il accepte soit apache2-mpm-prefork, soit apache2-mpm-itk, soit apache2-mpm-peruser comme dépendance. Ouvrez debian/rules :

vi debian/rules

Vers la fin du fichier, vous trouverez cette ligne :

| [...] echo "apache2:Depends=apache2-mpm-prefork (>> 2.0.52) | apache2-mpm-itk, apache2.2-common" >>debian/libapache2-mod-php5.substvars [...] |

Changez-la en :

| [...] echo "apache2:Depends=apache2-mpm-prefork (>> 2.0.52) | apache2-mpm-itk | apache2-mpm-peruser, apache2.2-common" >>debian/libapache2-mod-php5.substvars [...] |

Ensuite, exécutez

dpkg-buildpackage

pour reconstruire les paquets PHP5.

Vérifions ensuite ce que nous avons maintenant :

cd /usr/src  
ls -l
server1:/usr/src# ls -l  
total 28940  
-rw-r--r--  1 root src    11392 2007-10-03 19:02 apache2-mpm-itk_2.2.3-01-2.diff.gz  
-rw-r--r--  1 root src      664 2007-10-03 19:02 apache2-mpm-itk_2.2.3-01-2.dsc  
-rw-r--r--  1 root src    29071 2006-10-31 00:04 apache2-mpm-itk_2.2.3-01.orig.tar.gz  
drwxr-xr-x  5 root root    4096 2008-08-16 13:40 apache2-mpm-peruser-2.2.3-01  
-rw-r--r--  1 root src      353 2008-08-16 13:36 apache2-mpm-peruser_2.2.3-01-1.dsc  
-rw-r--r--  1 root src      710 2008-08-16 13:40 apache2-mpm-peruser_2.2.3-01-1_i386.changes  
-rw-r--r--  1 root src   165438 2008-08-16 13:40 apache2-mpm-peruser_2.2.3-01-1_i386.deb  
-rw-r--r--  1 root src    50282 2008-08-16 13:36 apache2-mpm-peruser_2.2.3-01-1.tar.gz  
-rw-r--r--  1 root root 6364431 2008-03-22 10:35 apache2.tar.gz  
-rw-r--r--  1 root src  2413278 2008-08-16 14:30 libapache2-mod-php5_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src  2412784 2008-08-16 14:30 libapache-mod-php5_5.2.0-8+etch11_i386.deb  
drwxr-xr-x 20 root root    4096 2008-08-16 14:29 php5-5.2.0  
-rw-r--r--  1 root src      1040 2008-08-16 14:30 php5_5.2.0-8+etch11_all.deb  
-rw-r--r--  1 root src   914599 2008-08-16 13:55 php5_5.2.0-8+etch11.diff.gz  
-rw-r--r--  1 root src      1741 2008-08-16 13:55 php5_5.2.0-8+etch11.dsc  
-rw-r--r--  1 root src      4768 2008-08-16 14:30 php5_5.2.0-8+etch11_i386.changes  
-rw-r--r--  1 root src  8583491 2006-11-07 13:34 php5_5.2.0.orig.tar.gz  
-rw-r--r--  1 root src  4757790 2008-08-16 14:30 php5-cgi_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src  2397698 2008-08-16 14:30 php5-cli_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src   215284 2008-08-16 14:30 php5-common_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    24478 2008-08-16 14:30 php5-curl_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src   344780 2008-08-16 14:30 php5-dev_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    33426 2008-08-16 14:30 php5-gd_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    34508 2008-08-16 14:30 php5-imap_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    44362 2008-08-16 14:30 php5-interbase_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    17250 2008-08-16 14:30 php5-ldap_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    12844 2008-08-16 14:30 php5-mcrypt_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src     5052 2008-08-16 14:30 php5-mhash_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    64620 2008-08-16 14:30 php5-mysql_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    34060 2008-08-16 14:30 php5-odbc_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    50482 2008-08-16 14:30 php5-pgsql_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src     8632 2008-08-16 14:30 php5-pspell_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src     4774 2008-08-16 14:30 php5-recode_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    11308 2008-08-16 14:30 php5-snmp_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    34160 2008-08-16 14:30 php5-sqlite_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    18414 2008-08-16 14:30 php5-sybase_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    16482 2008-08-16 14:30 php5-tidy_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    36458 2008-08-16 14:30 php5-xmlrpc_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src    12258 2008-08-16 14:30 php5-xsl_5.2.0-8+etch11_i386.deb  
-rw-r--r--  1 root src   311360 2008-08-16 14:30 php-pear_5.2.0-8+etch11_all.deb  
server1:/usr/src#

Nous pouvons installer les nouveaux paquets PHP5 comme suit :

dpkg -i php5*.deb  
dpkg -i libapache2-mod-php5_5.2.0-8+etch11_i386.deb

Cette fois, il ne se plaindra pas du paquet apache2-mpm-prefork manquant car apach2-mpm-peruser est installé, ce qui est suffisant pour le nouveau paquet.

Tout ce qu’il reste à faire est d’activer le module PHP5 et de redémarrer Apache :

a2enmod php5  
/etc/init.d/apache2 restart

Maintenant, ouvrez à nouveau la page phpinfo(); dans un navigateur - elle devrait maintenant afficher peruser au lieu de prefork dans la ligne Modules chargés sous apache2handler :

5 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.