Skip to content

Instantly share code, notes, and snippets.

@ezekg
Last active January 23, 2024 03:09
Show Gist options
  • Save ezekg/591bfd33ce427e139ad9 to your computer and use it in GitHub Desktop.
Save ezekg/591bfd33ce427e139ad9 to your computer and use it in GitHub Desktop.
Deployment Checklist

Deployment Checklist

Pre-Development

  • Hosting is set up with full control panel access and we have log in credentials
  • All email addresses are known for each form and all emails has been confirmed active
  • Person responsible for DNS switch knows client's current email management service and understands how to route the DNS

Post-Development

  • Person responsible for deployment has obtained SSH access to server
  • All required system packages have been installed on the server e.g. recent versions of php (greater than v5.4, if at all possible), mysql, git, wp-cli, magerun (if Magento project), openssl (if https), rsync, etc.
  • WordPress core and all plugins are up to date (unless a known conflict is present with a plugin; if that's the case, we should weigh if the plugin should be used in the first place)
  • Site has been deployed to a staging environment hosted on the same server as the production environment
  • Site is working properly on staging environment (final pre-launch testing phase should occur on this environment and not the development environment)
  • robots.txt file is present on staging environment (to disable bot indexing)

Pre-Launch

  • Analytics is installed and is using the correct analytics account per instructions from Project Manager
  • All previous DNS records have been properly configured on new hosting environment (if applicable)
  • All website auto response emails are properly setup with client specific information
  • PPC tracking info is setup (if applicable)
  • Current site's sitemap is saved for 301 redirects post-launch
  • SEO team member has gone through all pages for proper title/meta description tags at a minimum, unless the project calls for greater content scrutiny
  • All files and databases for old site have been archived locally (if applicable)
  • All content has been input and all pages have been audited on staging environment (no dummy content)
  • All forms have been tested with final email addresses and responses the have been received by the client
  • E-commerce transaction's have been fully tested using dummy CC numbers and transactions verified with every payment gateway (if applicable)
  • All required plugins have been installed and confirmed working (caching, analytics, SEO, etc.)
  • All development files (src/, Gruntfile, Juicefile, Gemfile, bower.json, etc.) have been removed from web root
  • Hidden files/directories are not publicly accessible (.git/, .htaccess, .env, etc.)
  • All website traffic is directed to either the www or non-www domain (canonical issue)
  • Old site pages are 301 redirected to new pages
  • Final production stage has been tested and confirmed working before flipping the DNS switch (via /etc/hosts entry)

Post-Launch

  • Site is working properly on production environment on all devices
  • robots.txt file is not present on production environment
  • All website traffic is confirmed to be directed to either the www or non-www domain
  • All forms are again confirmed working and client is receiving all responses
  • All website auto-response emails are confirmed working
  • All 301 redirects are confirmed working
@SnakeO
Copy link

SnakeO commented Nov 5, 2015

Really good list. Here's my notes:

  1. what does the "CP access" acronym stand for?
  2. All required system packages have been installed on the server (can we get a full list of "base" packages that will be required everywhere?)

@ezekg
Copy link
Author

ezekg commented Feb 3, 2016

@SnakeO, I didn't see this comment (you don't receive notifications for comments on gists, I guess). CP access stands for control panel access. As for what packages to install, it's depends on the project, really. I like staying up to date on PHP/MySQL versions when possible, and having wp-cli and git installed is a must for deployment. If it's a Magento install, having magerun installed is nice. Also if the site is using https, then openssl needs to be installed and configured.

I'll edit the list above to clarify those.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment