Virtual host sous apache2, créer des sous-domaines sur votre serveur dédié ou VPS

Tout comme un serveur mutualisé, il est possible de gérer plusieurs sites, et donc plusieurs domaines ou sous domaines sur un serveur dédié ou VPS. Si vous n’utilisez pas d’interface graphique, il est possible de créer des hôtes virtuels qui vous permettront de gérer les différents domaines et de leur assigner un dossier propre de votre serveur.

  1. Prérequis à la configuration du virtual host
  2. Créer les sous-domaines
  3. Créer les virtual hosts
  4. Configuration du serveur apache2

Prérequis pour la création de virtual hosts sur un dédié ou VPS

Avant de commencer, vous devez vous assurer d’avoir un maximum de droits sur votre serveur et votre compte d’hébergement. Vous devez être en mesure de créer des domaines et sous domaines dans la gestion DNS de votre hébergeur, mais également d’avoir un accès ssh vous permettant de naviguer dans tous les dossiers du serveur et de pouvoir éditer et créer de nouveaux fichiers.

Création d’un nouveau sous domaine chez l’hébergeur

La première étape n’est pas bien différente de celle utilisée pour un serveur mutualisé. Il vous faut accéder à la gestion des DNS pour y créer un nouveau sous-domaine. Il va falloir ajouter deux nouvelles entrées, soit une nouvelle entrée A, soit une nouvelle entrée CNAME. Les deux auront la même utilité, soit faire pointer le domaine vers l’hébergement.

  • Avec l’entrée A, vous devez entrer le sous-domaine et le faire pointer vers l’adresse ip du serveur
  • Avec l’entrée CNAME, il s’agit de la même chose, mais il s’agira cette fois-ci de pointer vers le nom de domaine principal

Vous devez le faire pour le nom de domaine avec et sans les www, en version textuelle voici à quoi cela devrait ressembler :

Entrée A

test   IN A      213.186.33.3
www.test     IN A      213.186.33.3

Entrée CNAME (attention à ne pas oublier le . après le domaine cible)

test     IN CNAME      facemweb.com.
www.test      IN CNAME   www.facemweb.com.

Création des virtual hosts sur le serveur

Maintenant que nous avons créé les sous domaines chez l’hébergeur, il est temps de passer aux choses sérieuses. Supposons que nous voulons créer le domaine site.fr et son sous-domaine blog.site.fr. Depuis votre accès ssh ou depuis votre FTP, nous allons modifier le fichier /etc/hosts

sudo gedit /etc/hosts

ou

sudo nano /etc/hosts

Nous allons ajouter les lignes suivantes :

127.0.0.1 site.fr
127.0.0.1 blog.site.fr

Par la suite nous allons créer un dossier pour chacun des sites, cela permet de ne pas mélanger les répertoires des sites et de mieux gérer le développement des sites.

sudo mkdir /var/www/site
sudo mkdir /var/www/blog

Nous allons désormais créer des fichiers de configuration apache pour chacun des domaines pour que le serveur apache puisse gérer les domaines et les cibler aux bons répertoires. Ce fichier est basé sur un fichier de configuration normalement déjà présent dans votre répertorie de configuration apache nommé 000-default.conf (/etc/apache2/sitesavailable/000-default.conf).

Vous pouvez créer les nouveaux fichiers de configuration avec le contenu du fichier default avec la commande suivante :

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site.conf

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/blog.conf

Modification des fichiers .conf pour la configuration des virtual hosts

Il va maintenant falloir configurer les fichiers site.conf et blog.conf et les modifier. Pour site.fr, voici à quoi cela ressemble :

<VirtualHost *:80>
	ServerAdmin votre-mail@site.fr
	ServerName site.fr
	ServerAlias www.site.fr
	
	DocumentRoot /var/www/site
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/site>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</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>

	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

    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>

Modifiez également le blog.conf avec les configurations qui lui correspondent (nom de domaine, répertoire).

Une fois les deux fichiers de configuration modifiés, nous allons demander au serveur apache de faire le lien entre les différents fichiers et dossiers que nous avons créés.

sudo a2ensite site.conf
sudo a2ensite blog.conf

Pour que la configuration soit effective, il faut redémarre le serveur apache :

sudo /etc/init.d/apache2 reload

Pour vérifier que tout fonctionne sans avoir à configurer un site en entier, mettez simplement un fichier index.php à la racine de chacun des domaines (donc /var/www/site/index.php et /var/www/blog/index.php) chacun contenant le sempiternel

<?php
	echo : "hello world!";
?>

Si “hello world!” apparaît sur site.fr et blog.site.fr c’est que la manœuvre est réussie !

A propos de l'auteur(e)

Une réponse