You'd like to think that moving your WordPress site from one host to another is really easy, but it can truly get frustrating. We were literally helping a client last night that decided to move from one host to another and it quickly turned into a troubleshooting session. They did what folks would normally do – they zipped up the entire installation, exported the database, moved it to the new server and imported the database. And then it happened… blank page.
The problem is that all hosts aren't created equally. Many have different versions of Apache with different modules running. Some have really funky permission issues that cause problems with uploading files, making them read-only, and causing image upload issues. Others have different versions of PHP and MySQL – a terrible problem in the hosting industry. Some backups include hidden files that wreak havoc on a different host because of proprietary caching and redirection on the servers.
And of course, this doesn't even include file upload limitations. That's typically the first issue if you have a sizable WordPress installation… the database file is simply too large to upload and import via a MySQL admin.
There are some great tools out there to help, like CMS to CMS. You can also utilize Automattic's own VaultPress service – just backup the site, install WordPress fresh on the new host, reinstall VaultPress, and recover the site. These folks have done a good job at working around many of the issues you'll run into when you try to migrate a website.
However, we tend to go it alone on these things and, painfully, often do them ourselves. I like the fresh installation factor when moving to a new host rather than dragging any problems with us. So here's the steps we use:
- We backup the entire installation and site and download it locally for safe keeping.
- We export the database (not always included with backups) and download it locally for safe keeping.
- We install WordPress fresh on the new server and get it up and running.
- We add plugins one at a time to ensure they're all compatible and working. Some plugin developers have done a nice job in including their settings in the export tool or providing their own settings export and import.
- We export the content from the existing site using the WordPress Export tool built right into WordPress.
- We import that content to the new site using the WordPress Import tool built right into WordPress. This requires you to add the users… a bit laborious but worth the effort.
- We FTP the wp-content/uploads folders where all of our uploaded file assets are to the new server, ensuring file permissions are properly set.
- We set the permalinks settings.
- We zip up the theme and install it using the WordPress theme installer.
- We put the theme live and rebuild the menus.
- We redo the widgets and copy/paste the contents as necessary from old to new server.
- We crawl the site to look for any issues with missing files.
- We manually review all the pages of the site to ensure everything is looking good.
- If everything looks good, we'll update our DNS settings to point to the new host and go live.
- We'll make sure that the Block Search setting in the Reading Settings is disabled.
- We add any CDN or caching mechanisms allowed on the new host to get the site to speed up. Sometimes this is a plugin, other times it's part of the host's tools.
- We'll recrawl the site with Webmasters' Tools to see if there are any problems that Google is seeing.
We will keep the old host around for a week or so… just in case there's some catastrophic issue. After a week or so of running well, we'll disable the old host and close the account.