Prerequisites

Ensure the client has the pre-launch expectations sheet

Have Increasing a Site’s Speed on hand for advanced plans.

Source document located here.  



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
Use cloud ways importer to import from site template
Once imported,
set the primary domain name
Set the secondary domain name (www)
Install letscrypt
    Log in to wp cli and follow 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


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)

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

Email log 

Email client

Confirm email setup to client spec