Apache

Par d?faut la version stable d'Apache disponible sous Debian est déjà compilée avec le mode suEXEC disponible, sachant que suEXEC ne sera disponible que dans l'arborescence de base du serveur c'est-à -dire :

/var/www

Donc il suffit d'installer Apache :

apt-get update && apt-get install apache

Voici un extrait du fichier de config :

Port 80
User www-data
Group www-data
ServerName *
DocumentRoot /var/www/

La directive ServerName sera re-spécifiée à l'aide des Virtuals Host.

PHP5 en mode CGI

Pour installer PHP5 en mode CGI il faut d'abord ajouter la ligne suivante à votre fichier /etc/apt/sources.list :<br />

deb http://packages.dotdeb.org ./

Ensuite mettre à jour votre gestionnaire APT, puis installer PHP5 CGI :

apt-get update
apt-get install php5-cgi

Virtuals Hosts

Admettons que nous ayons 2 sites Internet à héberger :

  • www.site1.com
  • www.site2.com

Il faudra donc créer 2 utilisateurs sur le système :

"site1" et "site2" dans le même groupe "ftpusers"

addgroup ftpusers
adduser -g ftpusers site1
adduser -g ftpusers site2

Ensuite dans chaque "Home" utilisateur il faudra créer un lien symbolique "www" qui pointera vers l?espace web de l'utilisateur "/var/www/sitex/www/".

mkdir /var/www/site1/www /var/www/site2/www
cd /home/site1/
ln -s /var/www/site1/www/ www
cd /home/site2/
ln -s /var/www/site2/www/ www

Ensuite il faut copier dans chaque répertoire web utilisateur le répertoire "cgi-bin" contenant l'exécutable "php5".

cp -R /usr/lib/cgi-bin/ /var/www/site1/
cp -R /usr/lib/cgi-bin/ /var/www/site2/
chown -R site1:ftpusers /var/www/site1/
chown -R site2:ftpusers /var/www/site2/
chmod -R 755 /var/www/

Nous pouvons enfin passer à la configuration des Virtuals Hosts. Ajouter ces lignes dans la directive ? <IfModule mod_mime.c> ? :

AddHandler php-script .php
Action php-script /cgi-bin/php5
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

Si Apache "crie" à cause de la directive "Action" vérifiez si la ligne suivante est bien décommentée :

LoadModule action_module /usr/lib/apache/1.3/mod_actions.so

Créer ensuite les répertoires qui accueilleront les logs d'Apache pour chaque Virtual Host :

mkdir /home/site1/logs /home/site2/logs

Ajouter ces lignes à la fin de votre fichier de configuration d'Apache (/etc/apache/httpd.conf) :

NameVirtualHost *
 
<VirtualHost *>
        ServerName www.site1.com
        DocumentRoot /var/www/site1/www/
        ErrorLog /home/site1/logs/error.log
        CustomLog /home/site1/logs/access.log combined
        User site1
        Group ftpusers
        ScriptAlias /cgi-bin/ "/var/www/site1/cgi-bin/"
        <Directory "/var/www/site1/www/">
                AllowOverride All
                Options -Indexes +ExecCGI
                Order Deny,Allow
                Allow from all
        </Directory>
</VirtualHost>
 
<VirtualHost *>
        ServerName www.site2.com
        DocumentRoot /var/www/site2/www/
        ErrorLog /home/site2/logs/error.log
        CustomLog /home/site2/logs/access.log combined
        User site2
        Group ftpusers
        ScriptAlias /cgi-bin/ "/var/www/site2/cgi-bin/"
        <Directory "/var/www/site2/www/">
                AllowOverride All
                Options -Indexes +ExecCGI
                Order Deny,Allow
                Allow from all
        </Directory>
</VirtualHost>

Attention au php.ini, ce dernier se trouve dans /etc/php5/cgi/php.ini. Il est important de vérifier que les différentes extensions nécessaires au bon fonctionnement de PHP soient activées :

extension=mysql.so
extension=gd.so
extension=tidy.so
extension=imap.so
...

Relancer Apache, tester les accès à vos sites, c'est fini !

/etc/init.d/apache restart