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.
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.
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
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
~$ composer create-project drupal/recommended-project public_html
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
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).
Sources :
Chaque site/projet Drupal est donc muni de sa propre version indépendante de drush.
~$ cd public_html/ ~/public_html$ composer require --dev drush/drush ~/public_html$ ./vendor/bin/drush --version Drush Commandline Tool 12.4.3.0
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.
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.