Écriture doc !

This commit is contained in:
Gregory Colpart 2022-09-16 12:20:29 +02:00
parent c307da72a1
commit 624b87d960
2 changed files with 200 additions and 6 deletions

View file

@ -12,10 +12,10 @@ Code source : <https://github.com/aegir-project>
Aegir est composé des éléménts suivants :
* hostmaster : interface web en Drupal 7 : <https://www.drupal.org/project/hostmaster>
* provision : suite de commandes `drush` pour installer des sites Drupal : <https://www.drupal.org/project/Provision>
* hosting : Drupal modules pour permettre l'UI de l'interface web d'Aegir : <https://www.drupal.org/project/hosting>
* eldir : thème Drupal pour Aegir : <https://www.drupal.org/project/eldir>
* [hostmaster](https://www.drupal.org/project/hostmaster) : interface web en Drupal 7 : <https://www.drupal.org/project/hostmaster>
* [provision](https://www.drupal.org/project/Provision) : suite de commandes [drush](HowtoDrupal#drush) pour installer des sites Drupal (cf `/usr/share/drush/commands/provision/`
* [hosting](https://www.drupal.org/project/hosting) : modules Drupal pour permettre l'UI de l'interface web d'Aegir
* [eldir](https://www.drupal.org/project/eldir) : thème Drupal pour Aegir
## Installation
@ -28,13 +28,131 @@ Préparer un service MySQL local avec un login / mot de passe "admin" afin de pe
# wget http://debian.aegirproject.org/key.asc -O /etc/apt/trusted.gpg.d/aegir.asc
# apt update && apt install aegir3 composer
# ls -d /var/aegir/hostmaster-*
/var/aegir/hostmaster-7.x-3.192
# /usr/local/bin/drush version
Drush Version : 8.1.16
~~~
On peut ensuite activer différents modules via l'interface web d'Aegir : options pour Git, Let's Encrypt, etc.
## Utilisation
Le principe d'Aegir est de définir des plateformes associés à un serveur web (ou plusieurs, cf plus bas le [mode multi-serveurs](HowtoAegir#multi-serveurs)).
Un usage typique est de définir une plateforme de "PROD" et une plateforme de "PREPROD" associés à des serveurs web différents.
Une plateforme déploie le code Drupal sur le serveur associé, cela peut par exemple être un Drupal 8.8.5 ou en Drupal 9.4.5.
On peut ensuite créer des sites associé à une plateforme, cela s'appuye sur la fonctionnalité [multisites](https://www.drupal.org/docs/multisite-drupal) de Drupal.
### Servers
Par défaut il y a le serveur web local (type `Apache`) et un serveur de base de données local (type `MySQL`).
### Platforms
Ajouter une plateforme est l'étape la plus critique, car c'est là qu'Aegir va déployer le code source de Drupal.
Plusieurs [stratégies de déploiement](https://docs.aegirproject.org/usage/advanced/deployment/) sont possibles : récupérer le code de Drupal via Git, déploiement via Drush, etc.
Attention, à cette étape Aegir va scanner la présence d'un fichier `composer.lock` et lancera un `composer install` si il est présent… et ne se déploiera pas en cas d'erreur !
### Sites
Il faut définir un nom de domaine et l'associer à une plateforme.
On peut aussi : choisir un language pour le site, un profil (minimal, standard, personnalisé, etc.) et serveur de base de données.
## Ligne de commande
Lorsque que l'on définit des serveurs, plateformes, sites, cela va créer des fichiers de configuration stockés dans `/var/aegir/.drush/` :
~~~
# ls /var/aegir/.drush/
hm.alias.drushrc.php
hostmaster.alias.drushrc.php
server_localhost.alias.drushrc.php
server_master.alias.drushrc.php
platform_hostmaster.alias.drushrc.php
platform_PROD.alias.drushrc.php
platform_PREPROD.alias.drushrc.php
FQDN1.alias.drushrc.php
FQDN2.alias.drushrc.php
FQDN3.alias.drushrc.php
...
~~~
On peut ainsi lancer plein de commandes Drush du type :
~~~
# su - aegir
$ drush @hostmaster provision-verify
$ drush @platform_PREPROD provision-verify --debug
$ drush @platform_PREPROD provision-delete --debug --force
~~~
## Gestion des Tasks
Aegir lance des Tasks pour toutes les actions : installation, suppression, vérification, etc.
Pour cela, Aegir s'appuie sur un service `hosting-queued` :
~~~
systemctl status hosting-queued.service
● hosting-queued.service - Hosting queue daemon
Loaded: loaded (/lib/systemd/system/hosting-queued.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-09-13 14:28:45 CEST; 5s ago
Main PID: 1704 (php)
Tasks: 3 (limit: 4701)
Memory: 67.6M
CGroup: /system.slice/hosting-queued.service
├─1704 php /usr/local/bin/drush --quiet @hostmaster hosting-queued
├─1815 sh -c /usr/local/bin/drush --strict= --uri=aegir.example.com --root=/var/aegir/hostmaster-7.x-3.192 hosting-task 13 2>&1
└─1816 php /usr/local/bin/drush --strict= --uri=aegir.example.com --root=/var/aegir/hostmaster-7.x-3.192 hosting-task 13
~~~
et un cron lancé chaque minute :
~~~
# crontab -u aegir -l
* * * * * /usr/bin/env php /usr/local/bin/drush '@hostmaster' hosting-dispatch
~~~
qui lancera ensuite des commandes du type `drush --php=/usr/bin/php --php-options= --quiet @hostmaster hosting-queued`
En cas de soucis, blocage des Tasks par exemple, on peut déboguer la tâche en récupérant son n° (visible sur l'interface web) :
~~~
# su - aegir
$ drush @hostmaster hosting-task 42 --debug
~~~
Parfois, lancer une vérification en ligne de commande peut débloquer :
~~~
# su - aegir
$ drush @FQDN1 provision-verify --debug
~~~
On peut aussi modifier le Cron et ajouter l'option `--debug`.
Ou alors vider le cache Drush :
~~~
# su - aegir
$ drush cache-clear drush
~~~
Par l'interface web on peut accéder à la liste des Tasks via <http://aegir.example.com/admin/content/node/overview> et supprimer une Task (à utiliser avec précaution).
Pour d'autres infos, voir <https://community.aegirproject.org/content/administrator/troubleshooting-aegir/>
## Multi-serveurs
<https://docs.aegirproject.org/usage/servers/clustering/>
Activer le module "Web Cluster" :
Nous préconisons d'utiliser la méthode "Web Cluster".
Il faut activer le module Aegir "Web Cluster" :
~~~
Enabling Web clusters feature.
@ -43,12 +161,77 @@ The configuration options have been saved.
Sur les « noeuds » web :
Pré-requis :
* Debian 11 avec PHP 7.4 (par défaut sous Debian 11)
* créer un utilisateur "aegir" ainsi : `adduser --home /var/aegir --uid 113 --gid 120 --disabled-password aegir` (même UID/GID que sur le serveur Aegir)
*
Puis il faut installer le paquet `aegir3-cluster-slave` :
~~~
# echo "deb https://debian.aegirproject.org stable main" > /etc/apt/sources.list.d/aegir.list
# wget http://debian.aegirproject.org/key.asc -O /etc/apt/trusted.gpg.d/aegir.asc
# wget http://pub.evolix.net/bullseye/mysql-client_8.0.30-1_all.deb
# dpkg -i mysql-client_8.0.30-1_all.deb
# apt update && apt install aegir3-cluster-slave
~~~
L'installation du paquet `aegir3-cluster-slave` va :
* valider la connexion SSH entre l'utilisateur "aegir" depuis le serveur Aegir vers l'utilisateur "aegir" du noeud (avec une clé SSH sans mot de passe)
* /etc/sudoers.d/aegir
* Installer Apache / PHP
* a priori partager en NFS `/var/aegir/plateforms` du serveur Aegir vers le noeud
On peut ensuite ajouter des "serveurs" pour chacun des noeuds, puis ajouter un serveur "Web cluster" qui rassemble les noeuds.
Il faut ensuite ajouter une plateforme associée à ce noeud. Puis l'on devrait pouvoir créer des sites sur cette plateforme « clusterisée ».
## FAQ
### Troubleshooting
En cas de soucis, on peut tester différentes astuces.
Vider le cache Drush :
~~~
# su - aegir
$ drush cache-clear drush
~~~
Vérifier que les configurations dans `/var/aegir/.drush/` sont conformes à ce que l'on a mis via l'interface web (cela semble parfois boguer).
Lancer des commandes à la main, cf [Ligne de commande](HowtoAegir#ligne-de-commande)
Voir <https://community.aegirproject.org/content/administrator/troubleshooting-aegir/>
### Skipping unset context property: git_repository_path
Cela signifie qu'il manque cette option dans le fichier associé `/var/aegir/.drush/XXX.drushrc.php`.
Un contournement est d'ajouter cette option à la main :
~~~
./platform_PREPROD42.alias.drushrc.php: 'git_repository_path' => NULL,
./platform_PREPROD43.alias.drushrc.php: 'git_repository_path' => '/var/aegir/platforms/platform_PREPROD43',
~~~
Si cette option est manquante, vous aurez peut-être l'erreur :
~~~
Cloning `GIT_REPO:REPO.git` to ``
Running `git clone --recursive --depth 1 --no-progress --quiet --branch 'dev' 'GIT_REPO:REPO.git' ''`
Command failed. The specific errors follow:
fatal: could not create work tree dir '': No such file or directory
~~~
### Données non présentes dans `/var/aegir/plateforms/PREPROD/`
Vérifier que les chemins sont corrects dans le fichier associé `/var/aegir/.drush/XXX.drushrc.php`
### Erreurs composer
Supprimer les fichiers `composer.lock` et `composer.json` dans `/var/aegir/plateforms/PREPROD/`

View file

@ -84,6 +84,8 @@ $ crontab -l
### Installation
Pour installer la dernière version :
~~~
$ composer require drush/drush
$ composer require symfony/http-kernel
@ -94,6 +96,15 @@ $ drush version
Drush Commandline Tool 11.1.1
~~~
Pour installer une ancienne version :
~~~
$ composer global require drush/drush:8.4.8
$ ./.composer/vendor/bin/drush version
Drush Version : 8.4.8
~~~
## Optimisation
* Drupal 7 : <https://www.drupal.org/docs/7/managing-site-performance-and-scalability/optimizing-drupal-to-load-faster-server-mysql>