GoldZone Web Hosting

Rédigé par Gaëtan Trellu (goldyfruit)

Outils pour utilisateurs

Outils du site


virtualhost_basique

Utilisation des virtualhosts basiques.

Je conseille cette méthode si vous n'avez que quelques sites à gérer.
Les virtualhosts (vhost) permettent de diriger un nom de domaine (où sous-domaine) vers un répertoire, exemple :

Si je possède le nom de domaine "marcel.com" et que je veux que ce nom de domaine pointe vers le répertoire "marcel" alors je précise le chemin du répertoire "marcel" qui sera égal à cette adresse.

Les virtualhosts devront se trouver dans le répertoire /etc/apache2/sites-available/ (nous les activerons avec la commande a2ensite).

Virtualhost "default"

Il existe un virtualhost de base, il se nomme default et se trouve dans /etc/apache2/sites-available/

NameVirtualHost *:80
<VirtualHost *:80>
 
        ServerAdmin administrateur@goldzoneweb.info
 
        DocumentRoot /var/www/
 
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
 
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride none
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                RedirectMatch ^/$ /apache2-default/
        </Directory>
 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
 
</VirtualHost>

Explications :

NameVirtualHost *:80

Grâce à cette directive votre serveur va pouvoir résoudre les adresses DNS, elle doit être placée dans un seul virtualhost.

ServerAdmin administrateur@goldzoneweb.info

C'est assez clair il me semble, c'est l'adresse email du responsable du site ou du serveur (suivant plusieurs cas).

Options FollowSymLinks

Cette option permet de suivre des liens symboliques présents à la racine du site.

AllowOverride None

Etant sur None ici il sera impossible d'utiliser les fichiers de configuration .htaccess, pour autoriser l'utilisation de ses fichiers il faut passer la valeur à All.

Options Indexes FollowSymLinks MultiViews
  • Indexes autorise le listage des répertoires si aucune page index est présente, pour interdire le listage il faut passer l'option à -Indexes.
  • FollowSymLinks nous l'avons déjà vu. ^_^
  • MultiViews autorise la recherche de fichiers inconnus, exemple si vous avez un fichier photo.jpg dans le répertoire images et que vous tapez http://monsite.com/images/pho alors le fichier photo.jpg sera affiché. Pour désactiver cette option il faut passer l'option à -MultiViews.
Order allow,deny

Permet de préciser les hôtes dont les requêtes seront traitées, et ceux dont les requêtes seront rejetés.

Allow from all

Variable qui est en rapport avec Order allow,deny, en effet elle liste les domaines, adresses IP, ect.. à autoriser. Ici on accepte tout.

RedirectMatch ^/$ /apache2-default/

Variable prise de tête pour un novice, si elle n'est pas commentée elle vous redirigera automatiquement vers le répertoire apache2-default lorsque vous taperez l'adresse de votre serveur. Pour la commenter il suffit d'ajouter un dièse (#) devant cette ligne.

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

Cette directive permet de créer un alias /cgi-bin/ qui pointe directement dans le répertoire /usr/lib/cgi-bin/. Ca donnera donc http://monsite.com/cgi-bin/nomduscript.pl par exemple, le script nomduscript.pl se trouvera dans le répertoire /usr/lib/cgi/bin/.

Voila pour ce qui est des options, pour les autres directives comme DocumentRoot je vous invite à lire la suite. :)

Virtualhost minimal.

Voici à quoi ressemble un virtualhost sans fioritures.

<VirtualHost *:80>
 
        DocumentRoot /var/www/marcel
        ServerName marcel.com
 
</VirtualHost>

Je vais vous expliquer les directives :

<VirtualHost *:80>

Ouverture du virtualhost, signifie que l'on écoute sur toutes les adresses IP (si il y en a plusieurs) sur le port 80.

DocumentRoot /var/www/marcel

La racine du site, ici le site se trouve dans le répertoire /var/www/marcel/.

ServerName marcel.com

Nom de domaine du site qui nous permettra d'arriver dans le répertoire /var/www/marcel/ et donc d'afficher le contenu du site.

</VirtualHost>

Fermeture du virtualhost.

Virtualhost plus complet.

<VirtualHost *:80>
 
        ServerAdmin administrateur@goldzoneweb.info
        ServerName marcel.com
        ServerAlias www.marcel.com
 
        DocumentRoot /var/www/marcel
 
        <Directory "/var/www/marcel">
                AllowOverride All
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        ErrorLog /var/www/logs/marcel.com-error.log
        CustomLog /var/www/logs/marcel.com-access.log combined
 
</VirtualHost>

Explications :

Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
  • ExecCGI autorise l'exécution des scripts .cgi .py .pl, si cette option est à -ExecCGI alors le code source du script sera affiché à l'écran. :-/
  • SymLinksIfOwnerMatch fait la même chose que FollowSymLinks mais suit les liens symboliques créer uniquement par l'utilisateur étant propriétaire des fichiers et répertoires (par défaut www-data).
ServerAlias www.marcel.com

En ajoutant cette directive à un virtualhost nous allons pouvoir accéder au même site via les urls suivantes :

ErrorLog /var/www/logs/marcel.com-error.log

Si l'on souhaite avoir un fichier log contenant les erreurs en rapport avec le site (erreurs 403 ou 404 par exemple) il faut ajouter cette directive.

CustomLog /var/www/logs/marcel.com-access.log combined

Permet d'avoir un fichier log contenant tous les accès au site, utile pour relever les IP ou encore pour un système de statistique (comme AWStat). Nous verrons à quoi sert l'option combined juste après.

Formatage des logs.

Le format de log de base définie par Apache est largement suffisant pour une configuration de virtualhosts basique.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Ici combined est le nom donné au format de log, on aurait pu mettre log_base ce qui aurait donné dans un virtualhost :

CustomLog /var/www/logs/marcel.com-access.log log_base

A la place de :

CustomLog /var/www/logs/marcel.com-access.log combined

Liens sur la documentation Apache au sujet des logs : http://httpd.apache.org/docs/2.2/mod/mod_log_config.html

Placer les virtualhosts ailleurs.

Il est possible de placer certains virtualhosts dans un autre répertoire (pour des raisons de clarté par exemple).
La modification se passe dans le fichier /etc/apache2/apache2.conf qui se trouve dans le répertoire :

Include /etc/apache2/sites-enabled/[^.#]*

Nouvelle destination :

Include /nouvelle-destination/[^.#]*

N'oubliez pas de relancer Apache.

# /etc/init.d/apache2 reload
virtualhost_basique.txt · Dernière modification: 2011/01/05 16:05 (modification externe)