Ajout de documentation, notamment pour Debian 12
This commit is contained in:
parent
7b014c9ced
commit
1720352403
147
HowtoAegir.md
147
HowtoAegir.md
|
@ -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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue