Installer un sous-domaine en multi-site avec Drupal

 

J’ai finalement abandonné mon serveur dédié d’OVH pour revenir à une offre d’hébergement mutualisé. J’ai bien fait mumuse pendant deux ans avec mon dédié, je n’ai jamais eu de gros soucis avec, mais bon c’est quand même pas mal de boulot pour maintenir son propre serveur. Et maintenant je suis plus serein (sécurité du serveur, pas besoin de le mettre à jour) et je fais quelques économies (6€ par mois au lieu de 35 euros par mois) ! Bref…

J’écris cet article car j’ai besoin de créer un miroir de mon site drupal pour faire une base de test, et avant de commencer ce site miroir, hé bien je me suis dit que cela pouvait en intéresser certains de savoir comment il faut s’y prendre, donc pourquoi ne pas rédiger cet article en même temps que je fais ce site miroir !

Ce petit guide s’adresse surtout  aux personnes qui disposent d’un hébergement chez OVH (pour la partie redirection du moins), mais il est somme toute assez simple à mettre en œuvre, même si vous hébergez votre site ailleurs.

Je souhaite donc créer un site miroir de www.astrofiles.net. Je vais créer un sous-domaine, par exemple dev.astrofiles.net, et c’est vers ce sous-domaine que va pointer ma base de test. Le but du jeu, c’est d’avoir une base de données distincte de ma base de prod, et de bénéficier en même temps de la liste des modules disponibles, et du code de mon site de prod en général, sans avoir besoin de copier tous les fichiers. Le puissant Drupal nous permet en effet de créer facilement plusieurs sites grâce au répertoire /var/www/sites. C’est dans ce répertoire que vont être stockés tous vos autres sites.

Pour résumer :

  • Tous vos sites vont bénéficier du même cœur Drupal
  • Ils seront autonomes car auront une base de données distincte

 

Création de la base de données

En premier lieu, nous devons créer une base de données. En effet, le nom de cette nouvelle  base doit exister avant de pouvoir installer Drupal. Pour cela, vous pouvez utiliser la ligne de commande MySQL ou PhpMyAdmin. Personnellement, je vais ici utiliser les options de mon manager OVH pour créer ma base (d’ailleurs je n’ai pas le choix, je suis obligé de passer par le manager pour toute nouvelle base créée). Je vais donc sur mon hébergement, puis dans Gestion SQL, et je clique sur Nouvelle base.

Je sélectionne un type de base, je lui donne un nom, et je valide.

Gestion SQL dans le manager OVH

Cliquez sur Gestion SQL

Création d'une nouvelle base

Cliquez sur « Nouvelle base »

Selection d'un type de base

Choisissez un type de base, donnez lui un nom, puis validez

 

Création du répertoire du sous-domaine

Créez un répertoire dans votre répertoire sites, ici on crée le répertoire dev.astrofiles.net

En général je fais ce genre d’actions en ssh avec putty sous Windows, parce que c’est simple et rapide (et OVH autorise le ssh sur les hébergements mutualisés !) mais vous pouvez très bien faire cela avec votre logiciel de FTP favori :)

Putty sous Windows

 

Ensuite, nous avons besoin d’un fichier settings.php spécifique pour notre sous-domaine, dans lequel on doit lui indiquer le chemin vers notre base de données. On recopie donc le fichier default.settings.php, et on le place à la racine de notre sous-domaine, c’est à dire dans dev.astrofiles.net.

Puis on copie le default.settings.php en settings.php.

Commandes dans putty

 

Dans le fichier settings.php, il existe une ligne qui ressemble à $db_url = 'mysql://username:[email protected]/databasename';

Il faut remplacer username, password, localhost et databasename par vos infos de connexion à votre base de données.

Pour information :

  • Username : L’utilisateur de votre base de données (évitez root par sécurité)
  • Password : le mot de passe de l’utilisateur de votre base de données
  • Localhost : le nom du serveur de votre base de données si elle est distante (par exemple : mabdd.example.com), où laissez localhost si votre base est sur la même machine que votre site drupal
  • Databasename : le nom de votre base de données         

Création du sous-domaine

Lorsque la base est créée, et que votre fichier settings.php est créé et mis à jour avec les informations de votre nouvelle base de données, vous allez créer votre sous-domaine et le faire pointer vers votre installation Drupal. C’est là la magie de Drupal : il vous suffit de faire pointer votre sous-domaine à la racine de votre site drupal, c’est-à-dire en général dans www/ et à partir du moment où vous avez créé votre sous-répertoire dans sites/, Drupal va le reconnaître instantanément ! Pour que ce procédé fonctionne, il faut bien entendu que le nom du sous répertoire corresponde avec le nom du sous-domaine.

Je veux ce sous domaine : sd.example.com è je crée dans sites/ le répertoire sd.example.com

Et c’est la même chose avec les noms de domaines : si vous voulez avoir domaine1.com et domaine2.com qui partagent la même installation Drupal, vous devez créer le répertoire domaine2.com/ dans le répertoire sites/. Par contre il faut éviter de créer le répertoire www. domaine2.com (avec les www cela n’a pas marché pour moi).

Pour créer mon sous-domaine, je vais dans mon manager OVH et je clique sur « sous-domaines »

Création d'un sous-domaine dans le manager OVH

 

 

Il faut ensuite cliquer sur « création », et au niveau du dossier cible, choisir la racine de votre site de production.

Creation sous-domaine ovh

 

Export / Import de notre base Drupal

Notre sous-domaine étant prêt, nous allons ensuite importer notre base de production dans notre base de test. Vu que ma base à une taille assez conséquente, je vais faire ces opérations en ligne de commande via ssh, cela sera beaucoup plus rapide.

Procédure d’export :

L’export permet de sauvegarder l’intégralité de la base au format SQL.

mysql -hhost -uuser -ppass base_de_donnees >  fichier.sql

Procédure d’import

L’import consiste à remplir notre base de test avec le fichier d’export précédemment créé.

mysql -hhost -uuser -ppass base_de_donnees fichier.sql

Veuillez noter que ces commandes d’export/import sont quasiment identiques, à la différence que pour l’export on envoie le résultat dans fichier.sql avec le signe supérieur « > »,  et que dans l’import on récupère le fichier créé avec le signe inférieur « < ».

Finalisation

Votre site de test est prêt : il suffit de se rendre sur l’url de test pour admirer le résultat ! Vous pouvez désormais manipuler et triturer votre base de test comme bon vous semble.

Il vous faudra certainement désactiver certains modules dont vous n’avez pas besoin sur votre base de test, et qui peuvent parfois créer des ennuis. Pour ma part, il m’a fallu désactiver le module boost, car sur ma base de test je n’en ai aucune utilité.  De plus, j’ai modifié la façon dont se comporte le rapport d’erreurs (dans admin/settings/error-reporting) pour que les erreurs ne soient plus seulement inscrites dans le journal mais également affichées à l’écran.

Catégories: