3.5 KiB
categories | title |
---|---|
web CMS | Howto Drupal |
- Documentation : https://www.drupal.org/documentation
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 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.
$ 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
- Drupal 7 : https://www.drupal.org/docs/7/managing-site-performance-and-scalability/optimizing-drupal-to-load-faster-server-mysql
- Drupal 8 : https://www.valuebound.com/resources/blog/a-beginners-guide-to-performance-optimization-drupal-8
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.