Website Content

  • Remove dummy content from site
  • Remove unused plugins and extensions
  • Unpublish or trash pages that shouldn’t be indexed
  • Check all links and urls on the site (href & src)
  • Update plugins, extensions, parent themes and core CMS (if applicable)
  • Set a 404 page
  • Set up legal pages (Privacy Policy / Terms)
  • Set up 301 redirects from the old site to the new
  • Optimise images
  • Check alt tags on images
  • Check favicon
  • Add grand backlink to footer

Cross-browser Testing

  • Preview site in Chrome
  • Preview site in Firefox
  • Preview site in Safari
  • Preview site in Internet Explorer
  • Preview site in any legacy browsers requested by client

Device testing – actual device / google dev tools emulator

  • Preview site on at least two of the most recent mobile devices
  • Preview site on tablet, landscape and portrait

Run website past audit tools

  • Run an audit on Google Page insights:
  • Run an audit on Pingdom:

Website Forms

  • Check if forms are submitting data correctly
  • Check form notifications, use the following syntax for the email subject line: Website | Form Name
  • Check form confirmation/s

WordPress Specific

  • Turn on Site Visibility in Settings > Reading
  • Reassign page authorship to client account

Install and configure the following plugins

  • Pre-Launch / On Launch
  • Yoast SEO – handles the SEO for the site
  • White Label CMS – rebrands the WP admin
  • WP Super Cache – creates cached copies of pages on the site, improves page load
  • BWP Minify – minifies and optimises javascript and css files on the site
  • Hide My WP – secures the site and its assets

Magento Specific


  • Update title and meta descriptions for the site. Sys > Config > General > Design
  • Set placeholder image. Sys > Config > General > Contacts
  • Update Store information. Sys > Config > General > Contacts
  • Update Store copyright. Sys > Config > General > Design > Footer > Copyright
  • Update Store header. Sys > Config > Design > Header
  • Update Store email addresses. Sys > Config > General > Store Email Addresses
  • Check transactional emails
  • Configure newsletter emails if being used
  • Double check tax on the site. Sys > Config > Sales > Tax
  • Test Shipping methods
  • Test Payment methods
  • Add google analytics. Sys > Config > Sales > Google API > Google Analytics
  • Generate google sitemap. Catalog > Google Sitemap > Add new sitemap

On Launch

  • Change base url via PHPmyadmin
  • Setup CRON script on live site:
    */5 * * * * wget -O /dev/null -q > /dev/null
  • Reindex site. Sys > Index Management
  • Flush site cache. Sys > Cache Management
  • Turn System Compilation, to improve site speed. Sys > Tools > Compilation
  • Configure and clean site logs. Sys > Config > Advanced > Sys > Log Cleaning
  • Minify JS and CSS. Sys > Config > Advanced > Developer


  • Check robots.txt
  • Check .htaccess
  • Build sitemap
  • Connect Google Analytics
  • Connect Google Webmaster Tools
  • Check social media sharing (Facebook and Open Graph)

Server and Security

  • If setting up a site on FastCGI, no need to change the ownership, just the file and dir permissions
  • If setting up a site on Apache:
  • chown www-data:www-data -R *          # Let apache be owner
  • Execute the following shell scripts
    find . -type d -exec chmod 755 {} \;  # Change directory permissions rwxr-xr-x
    find . -type f -exec chmod 644 {} \;  # Change file permissions rw-r–r–
  • Setup no-password SSH by adding the grand_developer public key to the ~/.ssh/authorized_keys file.
    scp -P 30022 ~/.ssh/


  • Update admin password and supply login details to client
  • Test client account access
  • Save hosting, CMS and any other relevant accounts to the passwords document
  • Clean Up Server: Delete Old Dev Site, Subdomain, Database and User
  • Download a backup of the site and store it on the design server

Install xDebug
To enable the module, add the following to /home/

The profiler needs to be enabled as well by adding the following to the end of the php.ini.
Since most of the sites I develop sit on a single site and exist as subdomains, I add the following lines on a subdomain php level, eg. /home/


Install Homebrew
ruby -e “$(curl -fsSL”

Install qcachegrind and graphviz

Remove MacPorts if installed

Don’t forget to fetch the origin!!!

Let’s check if there are any updates, and run the nifty doctor command to see if we have any other issues with Brew

Then finally, we install qcachegrind and graphviz

Example log of brewing qcachegrind

I have my SSHFS volumes under /Users/me/SSHFS/../xdebug, so I cd into the directory, find the xcdebug folder where the cachegrind files are stored and executre the following command

Sublime Text Happiness

Debugging with Xdebug and Sublime Text 3

SSH Unprotected Key File Error

SSH Unprotected Key File Error

You will need to reset the permissions on your .ssh and ssh key files to fix this. Read and write permissions should only be set for the user who will use the key file to connect via ssh. It’s very important that these files are not writeable just by anybody. Attempting to connect via ssh with an unprotected private key file or improper permissions will cause the terminal to spit out ssh connection error messages.

Incorrect permissions on private key file in client’s ~/.ssh directory.

For this, we’ll be setting a SSH private key file’s permissions to 600. Depending on who the ~/.ssh folder belongs to, you may or may not need to execute the following as root. Remember that we are only setting the permissions for the client’s ssh. The server will have its own set of permissions.


Incorrect permissions on known_hosts folder

Steps to recreate the issue:

To fix this, we will need to change the permissions on the known_hosts file. Since we are on the client computer, we’ll need to allow read and write access to the user, so that they can add in other hosts to the known_hosts file. Others and groups will be given read access, just so they can use an existing known_hosts file if they need to.


Permission denied on ~/.ssh folder

You will need to change the permissions on the directory. A good base for ~/.ssh permissions is 755, allowing everything for users as well as read and execute permissions for others and groups.


Thanks to the following articles

Last updated: 12 December, 2016.
This article has been updated to use the latest known versions/forks of Win-SSHFS and DOKANY(Dokan). Don’t forget to thank and for their ongoing work!

SSHFS for Windows.
When I started doing Linux SSH command line tutorials, I found out about SSHFS which allows developers to remotely work on a website hosting server. Nowadays, I tell people that I can’t live without it. This tutorial will list the steps to set up an SSHFS environment for Windows.

Windows SSHFS Manager - Mount your website drive!

Windows SSHFS Manager – Mount your website drive!

Quick List of SSH requirements for Windows

I’ll be including the latest versions that work for me. Generally, you should install the latest versions for WinSSHFS and Dokan.

  • Dokan Library (dokan | v1.0.1)
  • A Windows machine (Windows 10 64-bit)
  • Microsoft .NET Framework 4 (Pre-bundled with Windows 8+)
  • Win-SSHFS (dimov-cz fork,
  • Sublime Text (For awesome editing)
  • An SSH-enabled server and user

If you’re not on Windows 10 just yet, head off to purchase a legit OEM version for $25 USD.

Instructions for those in a hurry

  • Dependency: Pre Windows-8 Users: install .NET framework 4. Windows 10 and 8 ship with the .NET framework. Refer to the table below to see full list.
  • Install Dokany SSHFS
  • Install Win-SSHFS
  • Open Win-SSHFS and add a new drive. Do not launch as admin. Enter your server’s connection details, either using password or key-based authentication
  • Optional: Set up your SSH keys for passwordless connections.

Full instructions for setting up Windows SSHFS

These instructions are for setting up SSHFS on Windows 10 but should be the same for earlier versions, down to Windows XP SP3.

Install Dokany by grabbing the setup.exe file from the latest release from the official repo.

The post 1.0 Dokan installer (post 1.0) also installs the Redistributable Packages for Visual Studio 2015  it so you won’t need to worry about installing other dependencies now.

After installing Dokan, you can proceed with installing Dimov-CV’s fork of win-sshfs, a convenient Dokan-bound GUI tool for mounting SSHFS drives. Grab the latest MSI installer from the official Windows SSHFS repo.

The WinSSHFS installer doesn’t show an installation progress window for me when doing an install. After you run the WinSSHFS msi installer, it’ll ask for installation permissions and once done, you’ll see the WinSSHFS shortcut on your Desktop. Double click on the icon to run it.

Important note: Don’t run it as admin, it shouldn’t be required and can cause another possible difficulties. If you think it it’s required for some situation, you can submit an issue on the official Win SSHFS github repo.

WinSSHFS ends up going to your taskbar after running the application. You may have to show your hidden icons to see it. Once you find the WinSSHFS icon, click on it to open the application window.

Windows 10 SSHFS

After launching, enter the details for your SSH server. I suggest to have a play around with the different authentication methods available for SSHFS mounting.

SSHFS Windows 10

Remember to save the new sshfs image first before mounting it. I personally use no-password ssh-keys for authentication when on a shell. It’s a lot easier than entering the password every time I connect. If you do decide to use SSH password authentication, that’s fine. Win-SSHFS will save your password for next time.

Extra Tip for Those Who Use Sublime Text

If you have sublime text, you can open whichever folder you want by dragging it to your workspace! Don’t forget to unmount the drive from the SSHFS Manager once you are done.

What is SSHFS?

Secure Shell (SSH) is a secure protocol for securely getting access to a remote server. SSHFS is a tool that uses SSH to enable mounting of a remote filesystem on a local machine. SSHFS allows the use of password or key-based authentications and server connections are encrypted. Both the server and client (your computer) agree on a temporary session key to use for decrypting and encrypting data while they’re being transferred. Algorithms such as AES or RC4 are used for SSH decryption or encryption.


The Dokan Library allows you to create file systems without writing device driver. It is similar to FUSE(Linux user mode file system) but it has been designed specifically for Windows.

What is Dokany

Dokany is a fork of Dokan 0.6.0 with bug fixes, clean change history and updated to build with latest tools.


SSH(SFTP) filesystem made using Dokan and SSH.NET library. It allows you to mount remote computers via SFTP protocol like windows network drives.

.NET Frameworks

Taken from Wikipedia’s official article, for reference. To run dokan previously, I had it in my instructions to install .NET 4. This is already included in Windows 10 and Windows 8. I’m still leaving the table just in case people need to refer back to it.

.NET Framework 4 releases
VersionRelease dateIncluded inReplaces
Development toolWindowsWindows Server
4.02010-04-12Visual Studio 2010N/AN/AN/A
4.52012-08-15Visual Studio 2012820124.0
4.5.12013-10-17Visual Studio 20138.12012 R24.0, 4.5
4.5.22014-05-05N/AN/AN/A4.0, 4.5, 4.5.1

The author would like to thank the following authors/developers/articles:

Dokan Official Website
Ubuntu’s Article on SSHFS
Enable SSH for a user in Parallels Plesk SSHFS in Windows – Linhost Article
I have taken a few images from the site for academic purposes.
Win SSHFS on Google Code


  • 4 December 2016 – Retested on 10, using the latest versions for win-sshfs and dokany.
  • 23 June, 2015 – Retested on 8.1, using the latest versions for win-sshfs and dokany.

Liked the article? Tweet back to igi!