Drupal

Production deployment checklist for a Drupal site

Published on 29 July 2020
Photo of a code review at the agency bluedrop.fr
Let’s share our procedures! Why keep them hidden? Each deployment is a delicate moment. Here is our checklist, our control points before allowing the deployment of our Drupal projects.

As Huggy likes to say to anyone who will listen... "Production releases are not to be played, they are to be won :)"... And he’s right. The production release is the culmination of significant work, involving several teams: it’s a moment of reward and realization.

But a production release needs to be prepared...

Even when scheduling the deployment at the beginning of the week, we always allow for a few days’ buffer to check a series of details that could degrade the experience or undermine the work done. So, we’re sharing our little checklist with you, which isn’t exhaustive, but should apply, at the very least, regardless of the project’s scope. 

Share your own lists, let’s pool them together, so we can all benefit!

Production Preparation Checklist

Configuration synchronization and general configuration checks

  • The configuration must be versioned in git and must be exportable from one environment to another via yaml files;
  • The sync directory must be placed outside the project root;
  • The sync directory is versioned in Git;
  • Check correct installation of composer;
  • Check third-party installations (SolR, PHP extensions, libraries);
  • Anonymous site – Protect  https://www.domain.com/user/register if required for the project.

Drupal modules and instance checks

  • Correct configuration of the Honeypot module for spam;
  • Correct configuration of the Recaptcha module for spam (optional);
  • CSS and JS aggregation enabled;
  • Javascript – console clean-up;
  • Check the Robots.txt file;
  • Check the configuration of the Analytics or Matomo stats service;
  • Check the favicon;

Modules to be disabled in production 

Functional tests

  • Test email sending;
  • Test image generation (file configs);
  • Search / Solr / Indexing (configuration);
  • Update – Site should be tested at least in both logged-in and logged-out modes;
  • Check the dashboard, review errors and warnings.

Content and backend convenience

  • No test content;
  • No test users;
  • Check the site slogan;
  • Check the admin email address;
  • Remove unused content types;
  • Check for comments on content types for contributor guidance;
  • Remove unused taxonomy vocabularies;
  • Check for comments on vocabularies for contributor guidance;
  • Review descriptions of paragraphs for contributors;
  • Review descriptions of media for contributors;
  • Review descriptions of views for contributors;
  • Review descriptions of blocks for contributors.

Theme

  • Disable "theme registry rebuilding" in the theme configuration;
  • Disable the Twig debug module in production; 
  • Integrate external SVGs;
  • Refine javascript handling.

Performance

  • Check use of the latest versions of core and modules;
  • Use CDN to serve resources from different locations (CSS/JS) – Module: Adv Aggregation CDN or CDN module ;
  • Use Drupal cache and page caching (Admin / config / development / performance);
  • Drupal 8 – BigPipe module (core module);
  • Views caching – Response and query cache depending on timing;
  • Use panel caching if using panels on the site;
  • Image optimization: All images should use the image style;
  • Use “Image Lazy Loader” so images only load when seen;
  • Check GZIP compression;
  • Configure Expire headers;
  • Fast 404 module – reduces 404 response times;
  • Disable PHP filter;
  • Disable error reporting;
  • Performance (CSS / JS) aggregation and configure the advanced aggregation module for more aggregation and compression options.

SEO

  • Check URL quality;
  • Check consistency between URLs and tags;</li> <li>Check the site map. </li> </ul> <h3><strong>Miscellaneous</strong></h3> <ul> <li>Test accessibility and best practices at <a href="https://web.dev/measure/" target="_blank">https://web.dev/measure/</a></li> <li>Install and configure the SSL Certificate.</li> </ul> <p>... It should go smoothly...<br><a href="/content/contact">Feel free to send us anything to add to the list!!</a></p>

Read more articles on Drupal