Carnet Wiki

Virtualhost pour la mutualisation

Version 6 — Avril 2012 livier

Rappels

De façon générale chaque site hébergé sur un serveur Apache est configuré comme VirtalHost par un fichier dans le répertoire /etc/apache2/sites-available et activé par un lien dans le répertoire /etc/apache2/sites-enabled. Voir la documentation de Apache à ce sujet : Hôtes virtuels

Options de mise en œuvre

Un seul fichier Virtualhost

Étant donné que les différents sites mutualisés sous SPIP doivent pointer sur le même répertoire SPIP il est possible de les déclarer tous dans le même VirtualHost de la façon suivante :

<VirtualHost *:80>
	ServerName 	site1.tld
	ServerAlias www.site1.tld
        ServerAlias site2.tld
        ServerAlias www.site2.tld


DocumentRoot "/var/www/spip"
    <Directory "/var/www/spip">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

fgdfg
Inconvénients de cette méthode : les autres éléments de configuration du site seront aussi partagés. En particulier il ne sera pas possible de configurer ErrorLog et CustomLog pour chaque site et les fichiers de log se retrouveront mélangés.

D’autres considérations de sécurité / confidentialité / séparations entre les sites pourraient être à considérer. Par exemple, le paquet Debian crée un fichier de configuration spécifique pour le répertoire de mutualisation, puis propose de créer ensuite un fichier Virtualhost par site, cf. plus bas. La protection consiste à ne pas accepter les liens symboliques ni les fichiers .htaccess dans les répertoires se sites :

<Directory /var/www/spip/>
        Options +FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
</Directory>


# some directories must be protected
<Directory /var/www/spip/sites>
       Options -FollowSymLinks
        AllowOverride None
</Directory>

Un fichier Virtualhost par site

<VirtualHost *:80>
	ServerName 	site1.tld
	ServerAlias www.site1.tld


DocumentRoot "/var/www/spip"
    <Directory "/var/www/spip">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

pour site1.tld

<VirtualHost *:80>
	ServerName 	site2.tld
	ServerAlias www.site2.tld


DocumentRoot "/var/www/spip"
    <Directory "/var/www/spip">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

pour site2.tld

Il est également possible de configurer ErrorLog et CustomLog différemment pour chaque site, et ajouter quelques protections (interdiction de taper dans le répertoire tmp ou d’exécuter du php qui ce serait logé dans le répertoire IMG).

L’exemple de configuration proposé par Debian :

<VirtualHost *:80>
        ServerAdmin admin@domain.org
        ServerName spip.domain.org


DocumentRoot /var/www/spip
        Alias /IMG /var/www/spip/sites/default/IMG


<Directory />
           Options FollowSymLinks
           AllowOverride None
        </Directory>


# Deny access to /tmp:
        <Location /tmp/>
          deny from all
        </Location>


# Disable scripts in /IMG:
        <Directory /var/www/spip/sites/default/IMG>
          php_flag engine Off
        </Directory>


ErrorLog /var/log/apache2/spip.domain.org-error.log


# Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn


CustomLog /var/log/apache2/spip.domain.org-access.log combined
        ServerSignature On
</VirtualHost>

Cette prise de notes est faite pour rendre service... Et recueillir d’autres comptes rendus d’expérience pour éclairer la mienne ;-)