- Make sure server configuration is the same. Install missing php extensions and modules. (A good way of comparing is by diffing the output of phpinfo() between the two servers.)
- Check the mail configuration on the new server. (Is it Sendmail, Postfix or something else? Is any configuration required to get the mail() function working?)
- Move files (Best ways are either to pack them in an archive (.tar.gz) or moving the files via sshfs.
- Set file permissions (files should typically be owned by the web server unless you run some sort of suexec config.)
- Move databases and create database users on the new server.
- Move CRON jobs (Crontab, etc)
- Update DNS records (Don’t forget the MX records for mail, and any SPF records you may have.)
- Disable caching plugins (If you figure this out too late, just comment out define(‘WP_CACHE’, true); from wp-config.php and then Disable -> Enable -> Activate your caching plugin through wp-admin.
- Run CacheCheck to see if your DNS has propagated
- Monitor site via Pingdom or similar service for errors after the move. (And not only timeout, make sure you check for non-200 HTTP code errors too!)
Anything missing? Post a comment!