#language fr
HowTo de mise à jour Drupal
Avec Drush
- Verifier s'il y a des changements au modules, core, ou autre fichiers, surtout .htaccess
- eg, ave le module hacked:
Télécharger hacked (si nécessaire):
drush dl hacked
activer hacked:
drush en -y hacked
Faire le report
drush hacked-list-projects # (ou drush hlp)
Output example:
Title Nom Version Status Modifié Supprimé Drupal core drupal 8.4.4 Modifié 4 0 Libraries API libraries 8.x-3.x-dev Modifié 3 0 Packery packery 8.x-1.0+6-dev Modifié 3 0 Admin Toolbar admin_toolbar 8.x-1.22 Unchanged 0 0
Voir les détails:
$ drush hd drupal Details for project: Drupal core Total files: 13636, files changed: 4, deleted files: 0 Detailed results: Status File Modifié vendor/zendframework/zend-stdlib/doc/book/index.md Modifié vendor/zendframework/zend-escaper/doc/book/index.md Modifié core/lib/Drupal/Core/DrupalKernel.php Modifié vendor/zendframework/zend-feed/doc/book/index.md
Voir les diffs:
$ drush hacked-diff drupal Only in /var/aegir/platforms/drupal_8.4.4/: 1 Only in /var/aegir/platforms/drupal_8.4.4/: 1.orig diff -uprb a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php --- core/lib/Drupal/Core/DrupalKernel.php 2018-01-03 14:27:53.000000000 -0500 +++ core/lib/Drupal/Core/DrupalKernel.php 2018-03-28 16:40:38.227577385 -0400 @@ -20,6 +20,7 @@ use Drupal\Core\File\MimeType\MimeTypeGu use Drupal\Core\Http\TrustedHostsRequestFactory; use Drupal\Core\Installer\InstallerRedirectTrait; use Drupal\Core\Language\Language; +use Drupal\Core\Security\RequestSanitizer; use Drupal\Core\Site\Settings; use Drupal\Core\Test\TestDatabase; use Symfony\Cmf\Component\Routing\RouteObjectInterface; @@ -542,6 +543,12 @@ class DrupalKernel implements DrupalKern * {@inheritdoc} */ public function preHandle(Request $request) { + // Sanitize the request. + $request = RequestSanitizer::sanitize( + $request, + (array) Settings::get(RequestSanitizer::SANITIZE_WHITELIST, []), + (bool) Settings::get(RequestSanitizer::SANITIZE_LOG, FALSE) + ); $this->loadLegacyIncludes(); Only in /var/aegir/platforms/drupal_8.4.4/core/lib/Drupal/Core: DrupalKernel.php.orig ...
Désactive le module hacked (recommandé pour les sites en production):
# Drupal 7 drush dis hacked -y # Drupal 8 drush pmu hacked -y
- eg, ave le module hacked:
Prend un backup:
drush archive-dump site.xyz
Mettre le site en mode maintenance:
# Drupal 7 drush vset maintenance_mode 1 drush cc all # Drupal 8 drush sset system.maintenance_mode TRUE drush cr
- Checker que le backup a bien les fichiers et la base de données
Rouler les mises à jour:
drush upc
Checker s'il y a des mises à jour à la base de données:
drush updb
Note: On peut rouler aussi la commande drush up qui est la même chose que drush upc + drush updb
- Re-placer les patchs nécessaires au besoin (eg. s'il y a eu des modifs à la .htaccess)
- Tester le site
Enlever le site de mode maintenance et désactiver hacked (trop exigeant pour un site en production):
# Drupal 7 drush vset maintenance_mode 0 drush dis hacked -y drush cc all # Drupal 8 drush sset system.maintenance_mode FALSE drush pmu hacked drush cr
Voir la version du site
Drupal 7
- Regarder le fichier CHANGELOG.txt à la racine du site soit via le terminal ou l'interface web du site.
Drupal 8
Allez à la racine de l'installation dans ce répertoire: /core/lib
On va grepper le fichier Drupal.php pour trouver la version:
$ grep -i version Drupal.php * The current system version. const VERSION = '8.6.13'; * Core minimum schema version. const CORE_MINIMUM_SCHEMA_VERSION = 8000;
Sans Drush
Mise à jour du core
Procédure
- Faire un backup de la base de données et du site
Pour la bd: mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql
- Déplacer les fichiers du site dans un folder backup
- Se connecter en tant qu'admin sur le site
- drush uli (or interface)
- Mettre le site en mode maintenance
- # Drupal 7 CLI
drush vset maintenance_mode 1
- # Drupal 8 CLI
drush sset system.maintenance_mode TRUE
- Interface D7/D8: admin/config/development/maintenance
- # Drupal 7 CLI
- Enlever les fichiers core sauf le dossier "sites" et les fichiers custom (PDF, etc.)
Modifier cette commande avec les fichiers et dossiers pertinents pour le site: rm -rf authorize.php CHANGELOG.txt COPYRIGHT.txt cron.php includes/ index.php INSTALL.* install.php LICENSE.txt MAINTAINERS.txt misc modules/ profiles/ README.txt robots.txt scripts/ update.php UPGRADE.txt web.config xmlrpc.php
Attention avec rm -rf de ne pas détruire plus qu'on ne veuille.
- Télécharger les nouveaux fichiers core
- CLI: wget "URL DRUPAL"
- Interface: télécharger le tarball, déplacer vers le serveur
- Copier les nouveaux fichiers core
- cp -r -t . ~/drupal-7.NUMÉRO-DE-VERSION/* ET ~/drupal-7.NUMÉRO-DE-VERSION/.htaccess
- Rouler drush updb
- Une fois que la mise à jour est complétée correctement, désactiver le mode maintenance (voir étape 3)
Troubleshooting
Trucs de base à essayer s'il y a des erreurs:
- drush rr (rebuild registry) - Drupal 7
- drush cc all (clear cache)) - Drupal 7
- drush cr - Drupal 8
Mise à jour de modules
TODO