Créer des virtualhost

Qu'est ce qu'est qu'un virtualhost?

Les virtualhosts ou hôtes virtuels permettent d'héberger plusieurs sites internet (nom de domaine) sur un même serveur dédié. Donc une seule adresse IP pour plusieurs sites internet ou nom de domaine, c'est un peu le principe des hébergements mutualisés.

Donc il vous faudra un virtualhost par nom de domaine ou sous domaine hébergé sur votre serveur dédié.

Où se trouvent donc les virtualhosts?

Les deux répertoires importants sont :

- /etc/apache2/sites-available
- /etc/apache2/sites-enabled

Le répertoire sites-available, contient les fichiers de configurations des sites internet disponibles, par défaut, seul le fichier /etc/apache2/sites-available/default est présent.

Le répertoire sites-enabled contient des liens symbolique vers les fichiers du répertoire "sites-available", pour activer un virtualhost il faut juste créer un liens dans ce répertoire.

Donc:

/etc/apache2/sites-available sont les sites disponibles (available)
/etc/apache2/sites-enabled sont les sites actifs, activés (enabled)

Copie de sauvegarde de /etc/apache2/sites-available/default

Dans le répertoire /etc/apache2/sites-available en principe il y a déjà un virtualhost par défaut, on va en faire une copie de sauvegarde mais dans un autre répertoire que nous allons créer. Cette copie de sauvegarde peut être utile en cas de mauvaise manipulation des virtualhosts.


mkdir /backup
cp -i /etc/apache2/sites-available/default /backup/virtual_host_default

On va modifier le virtualhost par défaut pour plus de sécurité:

Note : on ne fait de Deny from all car sinon on ne peut plus se connecter à http://111.222.111.222/phpmyadmin

nano /etc/apache2/sites-available/default

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/

        <Directory />
                Order Deny,Allow
                Deny from all
                Options -Indexes -Includes -ExecCGI -FollowSymlinks
        </Directory>

        <Directory /var/www/>
                Order allow,deny
                allow from all
                Options -Indexes -Includes -ExecCGI -FollowSymlinks
        </Directory>

        ErrorLog /var/log/apache2/error.log

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

        CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Configuration de votre premier virtualhost

On va créer un nouveau virtualhost nommé example.com à partir de celui par défaut


cp -i /etc/apache2/sites-available/default /etc/apache2/sites-available/exemple.com

On édite le fichier de configuration du virtualhost et on modifie certains paramètres:

nano /etc/apache2/sites-available/exemple.com

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName www.exemple.com
        ServerAlias exemple.com
        DocumentRoot /var/www/exemple.com/

        <Directory />
                Order Deny,Allow
                Deny from all
                Options -Indexes -Includes -ExecCGI -FollowSymlinks
        </Directory>

        <Directory /var/www/exemple.com/>
                Order allow,deny
                allow from all
                AllowOverride All
                Options -Indexes -Includes -ExecCGI +FollowSymlinks
        </Directory>

        ErrorLog /var/log/apache2/error.log

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

        CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Remarque on a mit AllowOverride All pour permettre l'utilisation des fichiers .htaccess et +FollowSymLinks pour la récriture d'url

Maintenant que nous avons notre fichier de configuration de l'hôte virtuel il faut le rendre accessible, on va créer un lien symbolique de sites-enabled/exemple.com vers sites-available/exemple.com


ln -s /etc/apache2/sites-available/exemple.com /etc/apache2/sites-enabled/exemple.com

Et on redémarre apache2 pour qu'il prenne en compte les changements.

/etc/init.d/apache2 restart

Vérification de la configuration du virtualhost

On vérifie que le site est bien en ligne, on tape dans la barre d’adresse du navigateur http//111.222.111.222/exemple.com

et vous devriez avoir quelque chose comme ceci:

test du virtualhost dans le navigateur internet

Vous pouvez maintenant transférer des fichiers via ftp vers votre serveur dédié.

Exemple classique d'un virtualhost


<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        ServerName www.exemple.com
        ServerAlias exemple.com

        DocumentRoot /var/www/exemple.com/www/

        <Directory />
                Order Deny,Allow
                Deny from all
                Options -Indexes -Includes -ExecCGI -FollowSymlinks

        </Directory>

        <Directory /var/www/exemple.com/www/>
                Order allow,deny
                allow from all
                AllowOverride All
                Options -Indexes -Includes -ExecCGI +FollowSymlinks
        </Directory>

        ErrorLog /var/log/apache2/error.log

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

        CustomLog /var/log/apache2/access.log combined

</VirtualHost>
Explications:

        <Directory />
                Order Deny,Allow
                Deny from all
                Options -Indexes -Includes -ExecCGI -FollowSymlinks
        </Directory>



Pour le répertoire DocumentRoot c'est à dire ici /var/www/exemple.com/www/

Order Deny,Allow: Order précise dans quel ordre les directives 'deny' et 'allow' sont évaluées.

Deny from all: on refuse tout dans une premier temps (restrictif)

Options -Indexes -Includes -ExecCGI -FollowSymlinks: désactive les options (Indexes, Includes, ExecCGI, FollowSymlinks) notamment -Indexes pour empêcher le parcours du répertoire racine du serveur Apache2 et de tout ses sous-répertoires.


<Directory /var/www/exemple.com/www/>
                Order allow,deny
                allow from all
                AllowOverride All
                Options -Indexes -Includes -ExecCGI +FollowSymlinks
        </Directory>


Pour le répertoire /var/www/exemple.com/www/

Order allow,deny: Order précise dans quel ordre les directives 'deny' et 'allow' sont évaluées.

allow from all: on autorise tout

AllowOverride All: Types de directives autorisées dans les fichiers .htaccess

Options -Indexes -Includes -ExecCGI +FollowSymlinks: désactive les options Indexes, Includes, ExecCGI et active l'option FollowSymlinks

Vos commentaires
Laisser un commentaire
sera en attente de modération, validation NON automatique
Javascript should be activated
Recopiez le code SVP:
pseudoVotre nom (obligatoire)
emailEmail ou site internet (facultatif)
(nécessaire si vous souhaitez être prévenu d'une réponse)
photo, imageImage/photo (facultatif)
(JPG, JPEG, PNG ou GIF)
(image de partition concernant le question par exemple)
Ne pas remplir si vous êtes un humain (anti spam)