Table des matières
Drupal 10 sous Virtualmin-Apache-Debian 12
Cas d'utilisation
Je souhaite installer un site web motorisé par Drupal 10 sur un système Debian 12. Le serveur est administré par Virtualmin et utilise Apache pour serveur web. Le site est implanté dans un serveur ou sous-serveur, au sens de Virtualmin, créé à cet effet.
Configuration initiale : Debian 12 Virtualmin GPL Apache fournit par les dépôts Debian 12 Multiples version de PHP
La capacité du serveur à fournir des services web administrés par Virtualmin a été validée, au préalable.
Particularités de Drupal 10
Drupal 10 peut être installé manuellement1) comme une application web quelconque. C'est jouable pour un test mais vivement déconseillé dès qu'il s'agit d'assurer la sécurité et la disponibilité d'un site web opérationnel.
Cette fiche décrit les adaptations nécessaires permettant d'installer, maintenir et exploiter un site Drupal 10, en suivant les procédures standard recommandées par Drupal.
Composer
Source : Download Composer.
J'ai choisi d'installer composer localement2). Dans le cas d'utilisation considéré, composer est installé dans l'espace de l'utilisatrice propriétaire du serveur3) Virtualmin ayant vocation à héberger le site sous Drupal.
J'installe suivant mes habitudes sous Debian4) :
récupération de composer…
~$ cd tmp ~/tmp$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" ~/tmp$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" ~/tmp$ php composer-setup.php ~/tmp$ php -r "unlink('composer-setup.php');"
mise en place et configuration…
~/tmp$ cd ~$ mkdir .local ~$ mkdir .local/bin ~$ touch .bash_profile ~$ nano .bash_profile insertion de : if [ -f ~/.bashrc ]; then . ~/.bashrc fi PATH=$PATH:~/.local/bin export PATH unset USERNAME ~$ mv tmp/composer.phar .local/bin/composer ~$ source ~/.bash_profile ~$ composer --version
Optimisation
Sans l'imposer, Composer réclame l'installation de PHP-cURL afin d'améliorer sa vitesse de traitement. Sous Debian, la fonctionnalité est apportée sous la forme d'un paquetage additionnel. Après s'être assurée qu'il n'est pas déjà installé, on l'installe avec les précautions d'usage concernant la version :
# php --version PHP 8.2.13 (cli) (built: Nov 24 2023 13:10:42) (NTS) # php8.2 -m | grep curl # apt install php8.2-curl
Installation d'un site test
Chargement et implantation
~$ composer create-project drupal/recommended-project public_html
Racine du site web
- la racine du projet, au sens de composer
- la racine du site web, au sens usuel, c'est-à-dire du serveur web5).
La documentation utilisera souvent le seul terme “racine”. Il revient à la lectrice de l'interpréter comme l'une ou l'autre, suivant le contexte6).
Dans l'arborescence standard de Virtualmin, la racine du site web est censée être le répertoire public_html situé dans le répertoire principal du serveur ou sous-serveur.
Par soucis de régularité et de lisibilité des arborescences gérées par Virtualmin, le répertoire ~/public_html a été utilisé comme cible de l'installation via composer. Cela fait de public_html la racine du projet, au sens de composer. Suivant cette procédure, la racine du site web se trouve alors dans le sous-répertoire “web” (~/public_html/web) créé lors de l'installation7).
La configuration standard8) du serveur virtuel Apache mise en place par Virtualmin doit donc être adaptée en conséquence :
Virtualmin > my_server > Web Configuration > Website Options > Website documents sub-directory = public_html/web
Configuration et lancement
Au préalable, on aura créé une base de donnée et une utilisatrice disposant des droits sur cette base.
Il n'y a plus qu'à pointer un navigateur web sur l'url de base du site :
http://mon-site.org/
On remplit le formulaire. On laisse en l'état les valeurs par défaut des “Advanced options”.
Pour accéder à cette valeur et la modifier : Virtualmin > my_server >Web Configuration > PHP Options > Maximum PHP script run time
Une fois l'installation effectuée, Drupal signale un risque de sécurité découlant d'une configuration incomplète dans settings.php10). Se rendre dans la section “trusted_host_patterns” de ce fichier pour compléter la configuration (L'auto-documentation du fichier est parlante).
Drush
Sources :
- [Drush - Install](https://www.drush.org/12.x/install/)
- [Drupal Compatibility](https://www.drush.org/12.x/install/#drupal-compatibility)
Chaque site/projet Drupal est donc muni de sa propre version indépendante de drush.
Chargement et installation
~$ cd public_html/ ~/public_html$ composer require --dev drush/drush ~/public_html$ ./vendor/bin/drush --version Drush Commandline Tool 12.4.3.0
Configuration de l'environnement
Le but est de pouvoir lancer la commande “drush” depuis la racine du projet, sans devoir indiquer le chemin.
~$ cd
~$ nano .bash_profile
ajout du chemin relatif "./vendor/bin" à la ligne PATH : PATH=$PATH:~/.local/bin:./vendor/bin
~$ source .bash_profile
drush peut désormais être appelé depuis la racine du projet
~$ cd public_html/
~/public_html$ drush --version
Drush Commandline Tool 12.4.3.0
~/public_html$ drush pm-list --status=enabled
…
À ce stade, drush est opérationnel sur le site installé précédemment.
Versions de PHP
Drush utilise la version par défaut de PHP, telle que définie au niveau du système13). Or, Virtualmin permet de choisir la version de PHP utilisée par chaque serveur ou sous-serveur.
Il faut donc être attentive aux écarts de version. Faute de quoi, le code PHP de Drupal peut être exécuté avec des versions différentes de PHP selon qu'il est sollicité par le serveur web ou par drush, sans qu'on en ait conscience. Il peut en résulter des écarts de comportement incompréhensibles… Faute de solution universelle, chacune adaptera sa manière de faire à ses besoins et contraintes.
Dans Virtualmin, la version de PHP utilisée par le site web est directement accessible via le lien symbolique “bin/php”. En suivant les principes d'organisation utilisés jusqu'ici, la version de PHP que l'on souhaite utiliser se trouve systématiquement dans “../bin”, relativement à la racine du projet.