VirtualHost et nom de domaines sur un VPS OVH

Mise à jour le 22/07/2016 suite à l’excellent commentaire de leknoppix.

Sur votre serveur virtuel, vous avez installé apache, php, mysql, c’est super mais pas moyen de faire fonctionner plusieurs sites et de faire pointer vos noms de domaine ( et sous domaines ) vers vos différents répertoires dans /var/www/html

Pas de panique, voici la solution.

Ce tuto est destiné à un serveur de prod, un vps hébergé chez OVH, mais vous pouvez très bien le transposer à un autre serveur. Si vous développez à la maison, en remplacement du premier chapitre, je vous conseille cet article permettant de donner une adresse bidon à son site en lieu et place de 127.0.0.1 ou de localhost.

 

1 . Le nom de domaine

Dans votre espace client OVH, sélectionnez le nom de domaine : jaimelasaucisse.fr … c’est un exemple, j’aime la saucisse mais pas au point de payer un tribut à l’AFNIC pour autant.

Dans l’onglet “Zone DNS” vérifiez que votre domaine jaimelasaucisse.fr a été créé avec le type A et le type AAAA qui pointe bien vers les IP de votre VPS. ( type A = IPv4 & le type AAAA IPv6 )

Si vous voulez ajouter un sous domaine, un petit clic sur le bouton “Ajouter une entrée“, choisir dans “champs de pointage” le bouton “A” puis tapez votre sous domaine (toulouse.jaimelasaucisse.fr) et l’IPv4 de votre VPS comme “Cible“. Et c’est tout pour la gestion du domaine.

 

2 . Le stockage

Si je peux me faire mettre un conseil, créez un dossier par domaine. Et de sous dossiers pour chaque domaine et ses sous domaines.

et attribuer les dossiers à l’utilisateur www-data

3 . VirtualHost

Niveau apache, deux règles à respecter pour mieux s’y retrouver.

Premièrement, le nom du virtual host doit être identique au nom de domaine, c’est à dire :

Et deuxièmement, les sous domaines cohabitent dans le même fichier de configuration.

Un copié / collé sauvage avec ceci :

Reste à activer avec :

Et ça marche !

Pour ajouter un nouveau sous-domaine, plus besoin de toucher au virtual host, un nouveau dossier dans /var/www/html/jaimelasaucisse.fr portant le même nom que le sous domaine et le tour est joué.

Important ! Si ça ne fonctionne plus avec l’installation de Let’s Encrypt ou autres pourvoyeurs de https://
Alors rendez vous au §4 de l’article : Passer son serveur en https avec Let’s Encrypt

 

Si vos dossiers sont vides, voici comment y palier temporairement :

13 commentaires

  1. Merci pour ce tuto très précis. J’ai suivi la procédure et ça marche parfaitement. Quand je renseigne http://jaimelasaucisse.fr, je suis redirigé vers mon index à partir de mon domaine (qui n’est pas jaimelasaucisse.fr au passage 😉 ). Impeccable. Par contre, quand je renseigne http://www.jaimelasaucisse.fr (avec les www incontournables)… la redirection ne s’effectue pas dans ce cas. Pourriez-vous m’orienter sur ce point ? Merci d’avance

  2. Salut Malcom,
    Regarde dans la configuration DNS de ton espace client si tu as bien une ligne de type CNAME qui ressemble à cela :
    www.jaimelasaucisse.fr. CNAME jaimelasaucisse.fr.

    1. Merci de ta réponse. Je viens de rajouter la ligne dans : Gestion des champs de pointage >> Type CNAME
      Sous-domaine : www .jaimelasaucisse.fr
      Destination : jaimelasaucisse.fr
      Pour l’instant, j’ai : Page Web inaccessible | ERR_NAME_NOT_RESOLVED
      Le temps de la propagation peut-être ?

  3. Un autre technique, plus pro, consisterais à faire du virtual masshosting.
    En gros, dans ton www, tu fais un
    mkdir /var/www/monsite.fr/www qui lui correspond à ton http://www.monsite.fr
    et quand tu crais un autre dossier au même niveau que le www, tu auras directement le sous domaine.
    /var/www/monsite.fr/toulouse sera accéssible depuis toulouse.monsite.fr.

    et tu n’as maintenant qu’un seul virtualhost par ndd (qui ne t’appèche pas, manuellement de le modifier pour changer les index of ….

    C’est une pratique plus pro.

    1. Merci pour l’information, je ne connaissais pas cette pratique.
      N’étant pas un pro moi-même, je partage sur ce blog mes expérimentations et les garde en mémoire par la même occasion.
      Je vais tester ta solution et si tu n’y vois pas d’inconvénients, ce sera l’occasion de mettre à jour le tuto.

  4. Bonjour
    Je viens de faire votre explication et au reboot du service j’ai le message suivant:
    Invalid command ‘RewriteEngine’, perhaps misspelled or defined by a module not included in the server configuration

    J’ai installer Apache 2 sur une debian 9

    Merci pour votre aide

  5. Bonjour JB,
    À première vue, ça ressemble à la librairie mod_rewrite de apache qui n’est pas chargée. Regarde le fichier de conf d’Apache si tu trouves une ligne qui commence par ‘LoadModule’ puis qui contient ‘mod_rewrite’ ou ‘rewrite_module’… Je ne me souviens plus. Si la ligne est commentée, enlève le caractère ‘#’ et relance apache ou reboot.
    Est-ce correct ?

  6. Désolé si je déterre cet article après 4 ans, mais j’ai quelques soucis.

    Nous avons pris un VPS chez OVH pour y héberger nos sites Internet. Quand nous avons souscrit à l’offre , un Prestashop 1.7 était déjà installé.

    Ce site est accessible à l’adresse suivante :
    vpsxxxxxx.ovh.net

    A savoir : 1) Je n’ai pas de sous domaine et 2) Prestashop 1.7 était déjà installé dans /var/www/prestashop/

    Comme on veut y mettre 2 sites Internet sous Prestashop, j’ai créé (dans /var/www/prestashop/):
    – un dossier www à la racine du serveur
    – un sous-dossier dev.nomdusite1.fr dans le dossier www
    (Je verrai pour le second site par la suite)

    Une fois ces 2 dossiers créés, j’ai déplacé tous les dossiers qui étaient à la racine dans le sous-dossier dev.nomdusite1.fr

    En appelant OVH pour un autre problème, le technicien m’a dit qu’il fallait créer un fichier VirtualHost afin de pointer vers tel dossier quand on tape telle URL. J’ai donc cherché sur Internet et c’est là que je suis tombé sur votre article.

    Comme les 2 sites que l’on veut mettre sur le VPS sont déjà en ligne, je n’ai pas fait la première partie dans l’espace client d’OVH, dans Zone DNS et je suis passé directement à la seconde partie.
    Je me suis connecté en SSH au serveur VPS, je suis allé dans /etc/apache2/sites-available/ et là, j’ai fait
    nano nomdusite1.fr.conf

    Autre chose, comme je n’ai pas de sous domaine et que Prestashop 1.7 était déjà installé dans /var/www/prestashop/ , dans nomdusite1.fr.conf, j’ai alors mis ceci :

    ServerName dev2.nomdusite1.fr
    # ServerAlias http://www.nomdusite1.fr
    # ServerAlias *.nomdusite1.fr
    ServerAdmin blablabla@nomdusite1.fr
    DocumentRoot “/var/www/prestashop/www/dev2.nomdusite1.fr”

    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all

    RewriteEngine on
    # Domaine principal, redirection vers dossier /www/
    RewriteCond %{HTTP_HOST} ^dev2\.nomdusite1\.fr
    RewriteRule ^(.*) /www/$1 [L]

    Ensuite, j’ai redémarré Apache et je suis allé dans la BDD, dans la table ps_shop_url où j’ai entré vpsxxxxxx.ovh.net/dev2.nomdusite1.fr
    dans domain et domainssl

    Pourtant, quand je tape :
    vpsxxxxxx.ovh.net/dev2.nomdusite1.fr
    dans la barre d’adresse, j’ai une erreur 404

    Savez-vous pourquoi ?
    Qu’est-ce que je dois mettre dans
    * nomdusite1.fr.conf
    * dans la table ps_shop_url
    * et comme URL dans le navigateur
    pour que ça fonctionne ?
    D’avance merci pour votre aide.

Répondre à Arnaud Annuler la réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

4 + 6 =