Écriture doc !
This commit is contained in:
parent
c307da72a1
commit
624b87d960
195
HowtoAegir.md
195
HowtoAegir.md
|
@ -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/`
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue