Services et serveurs

Apache : Les Virtual Hosts

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

apache_logo





Introduction





Votre serveur ne dispose que d'une seule adresse IP, et de nombreux alias (CNAMES) pointent vers cette adresse dans le DNS. Pour l'exemple, dev.linuxtricks.fr et marjo21.linuxtricks.fr doivent tourner sur cette machine mais dans 2 racines de sites différents.



La base de cet article est Gentoo, mais en adaptant les chemins, c'est applicable à n’importe quelle distribution.



Configurer httpd.conf





D'abord, s'assurer que dans le fichier httpd.conf on ait une ligne de ce style :

Code BASH :
Include /etc/apache2/vhosts.d/*.conf




Grâce à cette ligne, on inclura tous les .conf de /etc/apache2/vhosts.d/



Vous l'aurez compris, tous mes "virtual hosts" vont être des fichiers du style xxx.conf dans /etc/apache2/vhosts.d/



Sur CentOS le fichier se trouve dans /etc/httpd/conf/httpd.conf

On peut placer les vhosts dans un dossier conf aussi en vérifiant la ligne Include conf/vhost.conf






Création des Virtual Hosts





Voici l'exemple de mon site de développement : dev.linuxtricks.fr



Pour me repérer facilement, le fichier est nomdedomaine.conf :



Code BASH :
vi /etc/apache2/vhosts.d/dev.linuxtricks.conf




Code BASH :
<VirtualHost *:80>
        ServerName dev.linuxtricks.fr
        ServerAlias dev.linuxtricks.fr
        ServerAdmin adrien@domaine.fr
        ErrorLog /var/log/apache2/dev.linuxtricks.fr-error_log
        TransferLog /var/log/apache2/dev.linuxtricks.fr-access_log
        DocumentRoot "/var/www/localhost/htdocs/dev/"
        <Directory "/var/www/localhost/htdocs/dev/">
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>




Et le deuxième :





Code BASH :
vi /etc/apache2/vhosts.d/marjo21.linuxtricks.conf




Code BASH :
<VirtualHost *:80>
        ServerName marjo21.linuxtricks.fr
        ServerAlias marjo21.linuxtricks.fr
        ServerAdmin adrien@domaine.fr
        ErrorLog /var/log/apache2/marjo21.linuxtricks.fr-error_log
        TransferLog /var/log/apache2/marjo21.linuxtricks.fr-access_log
        DocumentRoot "/var/www/localhost/htdocs/marjo21/"
        <Directory "/var/www/localhost/htdocs/marjo21/">
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>








Explications





Je reprends mon fichier précédent et vais expliquer les lignes du "Virtual Host" :



Code BASH :
<VirtualHost *:80> # Virtualhost écoutant sur le port 80
        ServerName dev.linuxtricks.fr # Nom du serveur auquel le vhost doit répondre
        ServerAlias dev.linuxtricks.fr # Eventuel alias supplémentaire
        ServerAdmin adrien@domaine.fr # Mail du webmaster 
        ErrorLog /var/log/apache2/dev.linuxtricks.fr-error_log # Délocaliser pour ce vhost les logs d'erreur
        TransferLog /var/log/apache2/dev.linuxtricks.fr-access_log # Délocaliser pour ce vhost les logs d'accès
        DocumentRoot "/var/www/localhost/htdocs/dev/" # Racile des fichiers du site
        <Directory "/var/www/localhost/htdocs/dev/"> #Définition des droits d'un répertoire
                Options Indexes FollowSymLinks # Options choisies
                AllowOverride All # 
                Order allow,deny #ordre d'accès
                Allow from all # On autorise tout le monde
        </Directory> # Fin de la définition des droits
</VirtualHost> # Fin de la définition du vhost