Prerequisites
Ensure the client has the pre-launch expectations sheet
Have Increasing a Site’s Speed on hand for advanced plans.
Checklist - ensure we have the following
Google analytics ID
FB tracking pixel ID
Favicon active
Dev domain for ssh:
Dev ssh password
Dev ssh username
Destination Domain:
Destination hosting provider: cloudways/sbs
Destination domain registrar: godaddy
Destination domain host: godaddy
Has child theme?
Has plugin wooCommerce?
Using Cloudflare (Y/N)?
Creating site files git repo?
WPDB Sync link (intra)
MainWP Destination Child Key (intra-launch):
No Login Captcha Keys (intra-launch)
AUTOMATION PREP - NOT TO BE USED FOR DEPLOYMENT
New app creation CLI to follow Pre-Launch SOP |
Pre-Launch
Review the load times of all major pages using the network response tool in-browser
GTMetrix
Google Pagespeed Insights
Ensure that CPU usage on destination server is consistently above 60% and proper disk space is available.
Disable and remove the following plugins if they are installed:
NOTE: Do note which plugins were installed; you will reinstall them post-launch.
Wp plugin remove | parse / format --force
Breeze (should not be installed)
W3 Total Cache (should not be installed)
Sucuri (should not be installed)
Wordfence (should not be installed)
No Captcha Login Recaptcha wp plugin deactive login-recaptcha
Disable any unnecessary plugins
Ssl insecure context fixer
Wordpress importer
Wp crontrol
Set cloudflare to be in development mode before launch.
Optimization
Smush images
Install smush
Smush all
If there is an existing site back up the prod site - files + db
if you can do a server-side zip + download do that as well
Wp theme remove Delete all inactive themes EXCEPT the parent theme
Remove sample posts/pages/products
Launch
Migration
If client is using WPEngine or Cloudways, please migrate using the appropriate migration plugin now; all other steps will be more effective from there.
For Cloudways
If we're using a staging site or both sites are on production, simply use the "copy production/staging" button, and uncheck
"wp_users" and "wp_usermeta" database tables
Create a new Application on a specific server.
Name the application the domain name
In Domain Management, set the primary domain to the non-www version of the domain.
Ensure that no other applications have this domain name as the secondary domain
Add the www version of the domain to the additional domains section.
Use the Cloudways Wordpress migrator in the plugin, and use the server’s credentials as the sftp password/username.
Once migrated, change the folder to the application name.
Clear production varnish cache.
If not Using Cloudways...
install all-in-one wp migration
replace the text with the old site/new site
click export to> file
wait for the file to be ready
On the new server
Create a wp installation
Install wp all import
Import the file that was exported in the steps above on the new install
Validation
Open the new site on mobile and desktop.
Make a list of all issues post-launch. Anything from styles to missing images to speed.
Do any stop revenue or most common use of the site? Stop launch if so.
Add all issues that have arisen from launch to help desk.
DNS
wait
If the production/staging environment is set up, this step can be skipped.
If we're launchign a new site, re configure dns A records for www and root if it's a new server
If using WPEngine
see https://fewerthanthree.com/tutorial/set-dns-website-hosted-wpengine/ and https://wpengine.com/support/wordpress-best-practice-configuring-dns-for-wp-engine/
Set the customer’s domain as the primary
Change the domain settings within wpengine
Add the root domain
Add the www domain with NO redirect
Change the wordpress install to use the apex domain (root domain) (with no www)
If the client is hosting email with us
ensure that the SPF record includes emailsrvr.com
Set up domain-level email forwarders for admin@ to go to admin@simplebusinesssolutions.org
Set up doman-level email forwarders for the client to go to their existing email address
Gitium
Perform the following steps only if a user has an extended development plan.
manual
Create a new repo for the site’s files
Merge the new repo with the existing site
Verify that Gitium is still connected, remove it if there are any git errors (Note that gitium does not work on WPEngine or GoDaddy or many shared plans)
To remove it:
Delete the plugin
Remove the .git folder from the public_html root
Try again
Add this step all the time
If there is an SBS Child Theme (Divi theme), add the FTP credentials for the production server to the git master deployment workflow of the child theme.
Post-Launch
General
Activate the following plugins
- breeze
- clear cache for me
- css cache buster
- pixel your site
- really simple ssl
- wordfence
- cloudflare
Re-Activate MainWP by
Disabling the plugin wp plugin disable mainwp-child
Re-enabling the plugin wp plugin enable mainwp-child
Adding the secret key to the mainwp settings get the secret key
Add the production site to mainwp. ssh mainwp, [ add production site via WP CLI ]
Ensure backup plugin is installed and configured
Add the site to uptimerobot via mainwp add uptimerobot ]
Ensure that slack notifications are enabled
PixelYourSite
Configure PixelYourSite with Facebook Pixel ID
Configure PixelYourSite with Google Analytics ID
Install the FB Tracking pixel ID wp option set ______ _____
Wordfence
If using cloudflare (high end hosting package), enable passthrough to prevent cloudflare’s ips from being blocked
Install Wordfence wp plugin install/update ; enable
Import options using the string: 3a4ee9654926816412e9e6a60c48d138c65467de355c4d361c59a244ab11a35262c3fc7daba57bc09c5f8d83982a1fcb38872df4bec533252a0d7ab967f575ca
Ensure that the firewall is put in “learning” mode and comes off learning mode in 3 months
If using cloudflare, whitelist the cloudflare ips and re-enable proxy
WooCommerce
manual
If the site does not have Woocommerce, these do not apply
Ensure all payment gateways are set to live mode
Ensure all shipping gateways are set to live mode.
Ensure that checkout process is set to HTTPS (if and only if https is working)
Contact Form 7
manual
If CF7 is installed on the site, check all email integrations to ensure the correct email is being used. CF7 has restrictions on pre-deployment email configurations
No Captcha Login Recaptcha
Install and activate the plugin wp plugin install/update ; enable
Create a site key and add it to the settings page
WP DB Sync - ONLY ON PREMIUM PLANS
Configure wp db sync on the production site to be able to accept pull requests only. Wp option set
Save the connection string to the development site.
Configure a preset on the development site to connect to the development site and pull the database easily.
Configure a preset in the config.simplebusinesssolutions.org application for the local development one-click VV setup using the connection string entry that has been saved to the db in the step above. You will need the db key wpsdb_settings in the database
Other
Run GTMetrix and Pagespeed insights - perhaps we can get additional work out of having to maintain these sites
- test each payment gateway with a coupon
- run GTMetrix
- adjust images that are scaled by css
- scale any large images
- disable any plugins with js > 200k
Cachins
If the site uses wooCommerce, add the following cookies to the exclusion rules:
- wpam
- wordpress_
- wc_
- woocommerce_
Ensure that the most updated version of this block list is in htaccess
Wp option set
Uncheck “discourage search engines from indexing this site”
Wp option set
Reset permalinks
Wp option set
Set the Time Zone to UTC-5
Cloudways api
Disable the development site temporarily
The rest of this section is manual
Run Velvet Blues Update URLS
NEW SITE ONLY: Ensure a page name and description is set
If using the avada theme
check the links in all pages - avada encodes as BASE64
disable opengraph tags in Settings>Advanced>Theme features
If the client is premium
(choosing a dev-> prod lifecycle environment)
keep the dev site
Add this site to dmarcian: https://us.dmarcian.com
Decommission the dev site
Verify that the favicon is updated
Check OpenGraph Tags for target pages
Run and review a broken link report
SSL - new site only
Activate SSL certificate
Use a wildcard certificate if possible
Enable “Really Simple SSL”
if already enabled, disable and re-enable
As an alternative, try https-redirection
Test all alternatives of urls - http, https, www, no-www and all variants thereof.
Cloudflare
Set up Cloudflare nameservers
Configure https redirect via instructions here
Install the Cloudflare wordpress plugin
Optimize for wordpress
SSL redirects
Auto-clear cache
NEW SITE ONLY - Google Analytics
Create a new property in Google Analytics
Wp option set
Update the PixelYourSite plugin
Lower CPU Usage - Cloudways only
wp plugin install/update ; enable
Install W3 Total Cache and follow the guide here: https://support.cloudways.com/wordpress-w3-total-cache-configuration-for-optimal-performance/
If not already installed, Install Redis cache by going to server settings, settings and packages, packages, and instal redis Follow the guide here: https://www.cloudways.com/blog/install-redis-cache-wordpress/
https://crunchify.com/how-to-speed-up-wordpress-leveraging-browser-caching-via-htaccess/
Wp option set?
Disk: Enhanced for Page Cache
Minification off
Opcode - Zend Opcache
Db Cache - Memcached
Object Cache - Redis
Browser Cache on
Reverse proxy = the cloudways cname and port 8080
Others - only for advanced dev package
Configure GIT to automatically update the staging site with changes to production (child theme)
NOTE: This step ONLY applies if we have a continuous development contract.
Ensure that FTP access is possible to the staging site.
FTP For Staging:
Ensure that FTP access is possible to the production site.
FTP For Production:
Ensure master branch of wp files repo is up to date (note that this will not be possible for WPE)
Add the bitbucket-pipelines.yml file to the master branch of the wp files repo as created in SOP - Creating a New GIT Repository
Add the environment variables to connect to FTP
Add the environment variables to that connect to FTP
Perform initial push to master to initialize the ftp change
Change script line to “init” rather than “push” for master
Fast forward develop
Perform initial push to dev to initialize the ftp change
Change script line to “init” rather than “push” for develop branch
Verify that any themes/plugins that depends on the Google Maps API have been changed. (NOTE: Divi, Avada, and The Core all depend on the maps api).
Search GIT Source code repository for any hard-coded instances of the dev site
Configure GIT to automatically pull wordpress changes from the production site to the QA site
Configure the repository post-commit hook on the master branch to trigger a pull on the QA site using the URL provided in Gitium - ensure that the child theme directory is excluded.
Configure the wp db sync plugin to be able to pull from the production site only
Cleanup
Looping script ; wp plugin remove
Remove all inactive plugins
Remove all inactive themes
Update the site (use mainwp script)
If advanced package Create a staging site and use “qa.[domain].com” as the primary url.
Notify all developers to remove the staging site url from the repository if the site is being decommissioned.
Add the site to our portfolio list
Email log
Email client
Confirm email setup to client spec