Import d’un site existant dans aegir depuis un dépôt git

gdo_aegir

Dans cet article, nous allons voir comment importer un site existant dans aegir depuis un dépôt git, mais tout d'abord, voici un petit préambule pour bien comprendre le vocabulaire d'aegir.

Imaginons que vous ayez un site sur monurl.fr qui pointe sur /var/www/monsite (la plateforme) dans votre vhost avec un sous-répertoire /sites/monurl.fr (le site), le tout géré par votre dépôt git sous gitlab.

Pour faire simple aegir appelle un drupal sans base de données, une plateforme et un drupal avec sa base de données, un site :

  • une plateforme au sens aegir, c’est le dépôt git d'un répetoire drupal avec sa branche courante (qu’on ne peut plus changer à postériori)
  • une site au sens aegir c’est : à l'intérieur d'une plateforme, un répertoire dans sites avec le settings.php (généré par aegir, il ne faut pas y toucher), une base de données, un alias, et un vhost

Etape 1 : créer la plateforme à partir du dépôt git

Une plateforme, c’est un répertoire PHP avec un drupal installé dedans, mais sans base de données associée (une plateforme peut contenir plusieurs sites).

http://aegir.monurl.fr/node/add/platform

Donner un nom "monsite" par exemple dans le BO aegir pour votre plateforme.

On relie la plateforme à un dépôt git avec sa branche sous la forme :

ssh://git@gitlab.monurl.fr:22443/mon-depot.git

Attention, il faut utiliser le protocole ssh car il y a une clé ssh définie sur gitlab et sur la VM pour pouvoir cloner sans mot de passe. Via https ça ne fonctionnera pas.

Choisir le mode git pull (Git pull task pour des pull manuels).

Aegir va cloner le dépôt du site dans le répertoire

/var/aegir/platforms/monsite

Il va automatiquement repérer les sites dans /var/aegir/platforms/monsite/sites/ et tenter de les importer automatiquement, mais ça ne va pas fonctionner. C'est normal, pas de panique 😉

Idéalement, il faudrait que répertoire n’existe pas dans le dépôt git.

Etape 2 : suppression du site importé

Il faut donc supprimer le répertoire du site aegir :

# rm -r /var/aegir/platforms/monsite/sites/monurl.fr/

et supprimer le nœud du site (automatiquement créé) dans aegir aussi :

http://aegir.monurl.fr/node/add/platform#overlay=admin/content : supprimer le noeud « monurl.fr »

Ensuite, il faut recréer le site « à vide » puis le "remplir" avec le vrai site.

Pourquoi cette étape de suppression avant la re-création ?

Parce que aegir lors de l’import est censé créer une base de données reconnue par aegir pour le nouveau site. Comme l’import plante, il ne crée pas la base de données.

Il faut supprimer et re-créer pour qu’il fasse les choses proprement et qu'on ait cette fameuse base de données par défaut gérée par aegir, dans laquelle on va pouvoir importer notre site.

Etape 3 : création du site

Cette fois on va rattacher le site à une plateforme, ce qui revient à créer une base de données, un répertoire dans /sites, et un settings.php qui relie les deux.

http://aegir.monurl.fr/node/add/site

Dans le domain name mettre : monurl.fr

Laisser vide le deploy from git (Repository URL : vide).

Attention à bien choisir la plateforme récemment créée pour que le site soit créé au bon endroit.

A ce moment là aegir fait plusieurs choses :

  • il crée une base de données vide : monurl_0
  • il lance l’installation par défaut de drupal
  • il crée un alias drush : su - aegir -c "drush status" : /var/aegir/.drush/monurl.fr.alias.drushrc.php
  • il crée un vhost qui contient des paramètres utilisés dans le settings.php aussi : port 80 namevhost monurl.fr (/var/aegir/config/server_master/apache/vhost.d/monurl.fr:1)

NB : monurl.fr existe déjà dans votre ancien vhost. Si vous regardez votre configuration apache, vous verrez qu'il y en a 2, mais celui d'aegir est prioritaire.

Etape 4 : import des données

Il y a deux choses à faire, comme pour tout clonage de site : récupérer les fichiers dans files et récupérer la base de données initiale.

#cp -a /var/www/monsite/sites/monurl.fr/files /var/aegir/platforms/monsite/sites/monurl.fr/
# chown -R aegir:aegir /var/aegir/platforms/monsite/sites/monurl.fr/files

#mysqldump -u root -p'PASSWORD' monsite | su - aegir -c 'drush @monurl.fr sqlc'

Etape 5 (optionnel) : supprimer l’ancien site

Si on veut supprimer la base de données initiale :

#cd /var/www/monsite/sites/monurl.fr ; drush sql-drop -y

Si on ne veut supprimer que le site :

#rm -r /var/www/monsite/sites/monurl.fr

Si on n’a plus besoin de la plateforme :

#rm -r /var/www/monsite

Etape 6 : mise à jour du site

A partir de là, vous pouvez gérer votre site dans aegir, et donc, demander un backup d'un simple click, cloner votre site, et plein d'autres choses (en fonction des sous-modules que vous aurez activés).

Pour faire une mise à jour (si vous avez updaté votre dépôt git) voici les étapes à suivre.

Faire un git pull sur la plateforme, dans les tâches : http://aegir.monurl.fr/hosting/c/platform_monsite

Faire le « Revert features » et le « Run db updates » sur les tâches du site : http://aegir.monsite.fr/hosting/c/monurl.fr

On peut faire la même chose en ligne de commande, mais il faut être en user aegir pour que ça fonctionne.

Laisser un commentaire

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

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.