wiki/HowtoDrupal.md
2022-10-04 14:43:51 +02:00

4.5 KiB

categories title
web CMS Howto Drupal

Drupal est un CMS libre écrit en PHP.

Pré-requis

  • Un serveur web (Apache/Nginx/...)
  • Une base de données MySQL/Mariadb ou PostgreSQL
  • PHP 8.1 (Drupal 10), PHP 8.0/8.1 (Drupal 9), PHP 7.3/7.4 (Drupal 7 et 8)

Pour plus de détails, voir la documentation de Drupal notamment :

Apache

Drupal est livré avec des fichiers .htaccess qui utilisent un nombre varié de directives. La configuration Apache doit donc contenir au minimum :

AllowOverride AuthConfig Limit FileInfo Indexes Options=Indexes,MultiViews,ExecCGI,Includes

Le DocumentRoot d'Apache doit correspondre au dossier web qui se trouve à la racine du dossier du projet

Nginx

Un exemple complet de vhost Nginx pour Drupal est accessible sur dans la documentation de Nginx

PHP

Certains ajustements sont nécessaires

Web ( FPM / libapache2-mod-php )

TODO?

CLI

C'est surtout pour composer et drush qui nécessitent :

  • (composer) Le non blocage de la fonction putenv()
  • (composer) Autoriser l'ouverture d'url (allow_url_fopen
  • (drush) Aucune fonction désactivée (ie: disable_functions vide) sinon drush refuse de fonctionner....

Installation

Il existe plusieurs méthodes pour installer Drupal. Mais la méthode d'amorcer un nouveau site/projet avec composer.

Ainsi, une installation par défaut va se faire avec la commande suivante va créer une nouvelle installation et récupérer toutes les dépendances avec composer.

$ mkdir www/
$ composer create-project create-project drupal/recommended-project www
$ composer show | grep ^drupal
drupal/core                    9.4.5
drupal/core-composer-scaffold  9.4.5
drupal/core-project-message    9.4.5
drupal/core-recommended        9.4.5

On peut en suite, aller directement à l'addresse du site pour obtenir l'interface d'installation du site. On aura notamment besoin d'avoir des identifiants pour accéder à une base de données.

Cron

$ crontab -l 

42 * * * * php /home/foo/www/vendor/bin/drush cron --root /home/foo/www/ 2&>1 >/dev/null

drush

Drush est un outil en ligne de commande pour installer/gérer des sites Drupal.

Installation

Pour installer la dernière version :

$ composer require drush/drush
$ composer require symfony/http-kernel
$ composer show drush/drush | grep ^version
versions : * 11.1.1

$ 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 

Utilisation

Au sein d'un site Drupal, on peut vérifier/collecter différentes informations :

$ cd $ROOT
$ drush sql-connect
$ drush status

Optimisation

watchdog

Désactiver le logging non nécessaire en prod... surtout dans la base de données : https://www.karelbemelmans.com/2015/05/drupal-watchdog-logging-dblog-vs-syslog/

Sécurité

Annonces de sécurité

Nous recommandons aux développeurs de garder un oeuil sur les annonces de sécurité faites par l'équipe Drupal.

CVE-2018-7600 // SA-CORE-2018-002

Règle mod_security de protection (théorique)

SecRule ARGS_GET_NAMES|ARGS_POST_NAMES|REQUEST_COOKIES_NAMES "^#" "t:none,log,deny,msg:'CVE-2018-7600/Drupal-SA-CORE-2018-002 -- Deny # in (cookie|query|post) names',id:300000001"

Plomberie

An automated attempt to create the directory ../config/sync failed, possibly due to a permissions problem.

Ça arrive quand on a initialisé un projet Drupal depuis composer. Il semble que ce soit un vieux bug non corrigé

La solution est de créer un dossier config/sync a la racine du projet, avec des droits d'écritures pour le serveur web.