Ajout de documentation, notamment pour Debian 12

This commit is contained in:
Gregory Colpart 2024-03-11 13:37:06 +01:00
parent 7b014c9ced
commit 1720352403

View file

@ -6,7 +6,7 @@ title: Howto Aegir
* Documentation : <https://docs.aegirproject.org/>
[Aegir](https://www.aegirproject.org/) est un système de gestion et de déploiement de sites web [Drupal](HowtoDrupal) en mode [multisites](https://www.drupal.org/docs/multisite-drupal).
On peut par exemple déployer du Drupal 8 ou 9 en local ou sur des serveurs distants.
On peut par exemple déployer du Drupal 8, 9 ou 10 en local ou sur des serveurs distants.
Code source : <https://github.com/aegir-project>
@ -19,9 +19,10 @@ Aegir est composé des éléménts suivants :
## Installation
Pré-requis : Debian 10 ou Debian 11 avec PHP 8.1 ou 8.2
Pré-requis : Debian 10 ou Debian 11 avec PHP par défaut, on passera en PHP 8.2 dans un second temps (pour Debian 12 voir [installation sous Debian 12](#installation-sous-debian-12))
Préparer un service [MySQL](HowtoMySQL) local avec un identifiant "admin" afin de permettre au paquet Debian `aegir3` de créer une base et des utilisateurs MySQL (il va notamment créer `aegir_root`) :
Préparer un service [MySQL](HowtoMySQL) permettant ainsi au package Debian `aegir3-hostmaster` va notamment créer un utilisateur MySQL `aegir_root`.
Si MySQL n'est pas utilisable sans mot de passe via l'utilisateur Unix `root`, le package `aegir3-hostmaster` va vous demander un identifiant MySQL "admin".
~~~
# echo "deb http://pub.evolix.org/evolix aegir main" > /etc/apt/sources.list.d/aegir.list
@ -68,9 +69,28 @@ On peut ensuite activer différents modules via l'interface web d'Aegir : option
Si l'on utilise pas "Composer" pour déployer, nous conseillons de désactiver le module "Aegir Platform Composer" (sans cela on constate que le code Drupal n'était pas déployé sur les infra multi-serveurs).
### Installation PHP 8.1 (ou 8.2)
### Installation sous Debian 12
Pour la compatibilité avec Drupal 9.5 / 10, nous passons PHP 8.1 (8.2 en cours de test chez nous) via Sury :
Il est intéressant d'installer Aegir sous Debian 12 afin d'avoir un système qui soit [supporté au moins jusqu'en 2026](https://docs.evolix.org/ServeurDedie/versionsOS#debian-12-bookworm).
La procédure d'installation est similaire à ce qui est expliqué au-dessus, sauf que l'installation va échouer ainsi :
~~~
Enabling hosting-queued daemon
Could not find the alias @hostmaster [error]
~~~
En effet, Drush 8.4.8 ne fonctionne pas bien avec PHP 8.2, il faut donc [installer Drush 8.4.12](#installation-drush-8.4.12) et relancer :
~~~
# apt install aegir3
~~~
puis appliquer [les patchs pour PHP 8](#patches-pour-php-8).
### Passer en PHP 8.2 pour Drupal 9.5 / 10
Pour la compatibilité avec Drupal 9.5 / 10, nous passons PHP 8.2 via Sury (PHP 8.1 fonctionne également) :
~~~
# mount -o remount,rw /usr
@ -79,19 +99,19 @@ Pour la compatibilité avec Drupal 9.5 / 10, nous passons PHP 8.1 (8.2 en cours
# echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
# apt update
# apt install php8.1 php8.1-cli php8.1-mysql php8.1-gd php8.1-xml php8.1-mbstring
# apt install php8.2 php8.2-cli php8.2-mysql php8.2-gd php8.2-xml php8.2-mbstring
# php -v
PHP 8.1.27 (cli) (built: Dec 21 2023 20:20:21) (NTS)
PHP 8.2.16 (cli) (built: Feb 16 2024 15:53:11) (NTS)
# a2dismod php7.3
# a2enmod php8.1
# a2dismod php php7.3 php7.4
# a2enmod php8.2
# systemctl restart apache2
~~~
À ce stade, AEgir fonctionne presque bien en PHP 8.
À ce stade, Aegir fonctionne presque bien en PHP 8, il faut appliquer quelques patches.
Il faut de appliquer quelques patches.
### Patches pour PHP 8
Commençons par appliquer le patch de l'[issue Provision 3374479](https://www.drupal.org/project/provision/issues/3374479) pour éviter l'affichage d'erreurs *Deprecated* :
@ -158,7 +178,7 @@ Sinon au moment de la création d'une nouvelle plateforme vous obtiendrez :
'PDOException', '!message' => 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens: SELECT n.title AS name FROM {hosting_platform} AS h INNER JOIN {node} AS n ON n.nid = h.nid WHERE publish_path = !publish_path AND h.status >= !h.status; Array ( [!publish_path] => /var/aegir/platforms/PLATFORM [!h.status] => 0 ) ', '%function' => 'hosting_platform_path_exists()', '%file' => '/var/aegir/hostmaster-7.x-3.192+nmu1/profiles/hostmaster/modules/aegir/hosting/platform/hosting_platform.module', '%line' => 669, 'severity_level' => 3, )
~~~
> Note : patch + gros fourni par BOA (TODO)
> TODO : un patch plus gros est fourni par BOA, à voir l'intérêt
### Installation Drush 8.4.12
@ -187,24 +207,7 @@ $ .config/composer/vendor/bin/drush.php version
# ln -s /var/aegir/.config/composer/vendor/bin/drush.php /usr/local/bin/drush
~~~
On peut ensuite installer des modules Drush supplémentaires :
* provision
* clean_missing_modules
* drupalgeddon
* drush_ecl
* registry_rebuild
* safe_cache_form_clear
* utf8mb4_convert
* provision_boost
* security_review
(TODO: à voir ceux qui sont vraiment nécessaires, a priori aucun...)
~~~
$ drush dl provision_boost
Project provision_boost (7.x-1.2) downloaded to /var/aegir/.drush/provision_boost.
~~~
### Patches pour Drupal 10
Pour gérer du Drupal 10, il faut ajouter les fichiers suivants dans `/usr/share/drush/commands/provision/platform/drupal/` :
@ -215,19 +218,9 @@ Pour gérer du Drupal 10, il faut ajouter les fichiers suivants dans `/usr/share
* install_10.inc
* packages_10.inc
(TODO: fournir la source de ces fichiers, voir notamment l'[issue Provision 3406925](https://www.drupal.org/project/provision/issues/3406925))
> TODO: fournir la source de ces fichiers, voir notamment l'[issue Provision 3406925](https://www.drupal.org/project/provision/issues/3406925)
et potentiellement dans `/usr/share/drush/commands/core/dupal/` :
* batch_10.inc
* cache_10.inc
* environment_10.inc
* site_install_10.inc
* update_10.inc
(a priori, pas nécessaire)
Il faut supprimer le Drush 12 inclus dans les sources (TODO: à confirmer, cf [ici](https://github.com/drush-ops/drush/issues/5741)) :
Il faut supprimer le Drush 12 inclus dans les sources :
~~~
$ rm platforms/DRUPAL10/vendor/bin/drush
@ -286,8 +279,7 @@ Attention, ce patch nécessite alors de patcher aussi le code de Drupal 9.5 pour
# patch /var/aegir/platforms/PLATEFORM/vendor/symfony/console/Input/InputInterface.php < drush-8-symfony-console-compat-drupal95.patch
~~~
Le patch sur `Input/InputInterface.php` nécessite un coup de main (TODO ;)
> Note : le patch sur `Input/InputInterface.php` nécessite un coup de main (TODO ;)
On crée le fichier `Sql10.php` :
@ -315,7 +307,7 @@ ET idem pour DrupalBoot10.php, StatusInfoDrupal10.php, User10.php et UserSingle1
/var/aegir/.config/composer/vendor/drush/drush/lib/Drush/User/User10.php
/var/aegir/.config/composer/vendor/drush/drush/lib/Drush/User/UserSingle10.php
(TODO: fichiers à fournir).
> TODO: fichiers à fournir
Il faut aussi patcher dans le code de Drupal 10 :
@ -374,6 +366,7 @@ Enfin, il faut appliquer le patch suivant sur le fichier
# patch /var/aegir/.config/composer/vendor/drush/drush/lib/Drush/Boot/DrupalBoot.php < DrupalBoot.php.patch
~~~
## 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)).
@ -399,7 +392,13 @@ On peut aussi : choisir un language pour le site, un profil (minimal, standard,
## Plomberie
L'installation initiale d'Aegir se fait via un `drush hostmaster-install`.
L'installation initiale d'Aegir se fait via un `drush hostmaster-install` du type :
~~~
# su - aegir
$ drush hostmaster-install --http_service_type='apache' --backend aegir.example.com
~~~
Lorsque que l'on définit des serveurs, plateformes, sites, cela va créer des fichiers de contexte stockés dans `/var/aegir/.drush/` :
@ -659,7 +658,7 @@ Nous [proposons le patch](https://github.com/aegir-project/provision/issues/41)
### Erreur si présence d'un "/" dans une branche Git
Si vous utilisez une branche Git pour récupérer le code de votre Plateforme, AEGIR plante si il y un "/" dans le nom de la branche, par exemple "foo/bar".
Si vous utilisez une branche Git pour récupérer le code de votre Plateforme, Aegir plante si il y un `/` dans le nom de la branche, par exemple `foo/bar`.
Solution : renommez votre branche… ou faites à la main :
~~~
@ -667,6 +666,60 @@ $ cd platforms
$ git clone --recursive --depth 1 --branch 'foo/bar' 'john@git.example.com:PROJECT/DRUPAL.git' PLATFORM/
~~~
### ERROR 1133 (28000) at line 1: Can't find any matching row in the user table
Lors de l'installation d'Aegir, si vous obtenez cette erreur, c'est probablement que l'utilisateur SQL `aegir_root` est mal désinstallé :
~~~
mysql> DELETE FROM mysql.user where User='aegir_root';
mysql> FLUSH PRIVILEGES;
~~~
### Could not find the alias @hostmaster
Cela veut dire que l'installation du *Drupal hostmaster* n'a pas été au bout, et notamment que le fichier `/var/aegir/.drush/hostmaster.alias.drushrc.php` n'existe pas.
Pour comprendre où l'installation bloque, relancer l'installation en ligne de commande en mode *debug* :
~~~
# su - aegir
$ drush hostmaster-install --http_service_type='apache' --backend aegir.example.com --debug
~~~
### Installation Aegir via BOA
[BOA (Barracuda, Octopus and Aegir)](https://github.com/omega8cc/boa) est un système d'installation et de gestion de sites Drupal.
Il inclut notamment Aegir, et il est intéressant de voir les particularités de son installation.
BOA installe les modules Drush suivants :
* clean_missing_modules
* drupalgeddon
* drush_ecl
* registry_rebuild
* safe_cache_form_clear
* utf8mb4_convert
* provision_boost
* security_review
BOA fournit les fichiers suivants pour Drupal 10 que l'on peut mettre dans `/usr/share/drush/commands/core/dupal/` :
* batch_10.inc
* cache_10.inc
* environment_10.inc
* site_install_10.inc
* update_10.inc
### Drush 12 pour Drupal 10
Cette [issue du projet drush-ops](https://github.com/drush-ops/drush/issues/5741) semble indiquer qu'il est possible de faire tourner Drush 8 et Drush 12 en même temps, même si cela ne semble pas nécessaire.