wiki/HowtoDrupal.md
2019-01-11 15:25:17 +01:00

3.2 KiB

categories title
web CMS Howto Drupal

Drupal est un CMS libre écrit en PHP.

Pré-requis

  • Un serveur web (Apache/Nginx/...)
  • PHP 5.5+
  • Une base de donnée (MySQL/Mariadb 5.5+, PostgreSQL 9.1+)

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

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

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.

$ composer create-project drupal-composer/drupal-project:8.x-dev foo_project --stability dev --no-interaction

On peut en suite, aller directement à l'addresse du site pour obtenir l'interface d'installation du site.

Cron

$ crontab -l 

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

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.