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
<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:
<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
Si vous voulez créer des liens de tous vos fichiers /etc/apache2/sites-available/ vers /etc/apache2/sites-enabled/ faites ceci:
ln -s /etc/apache2/sites-available/* /etc/apache2/sites-enabled/
Et on redémarre apache2 pour qu'il prenne en compte les changements.
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:
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>
<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
Vérification de la configuration des virtual hosts
apache2ctl -S