For those who don’t know, a website migration is when you move a website from one hosting environment to another.
This could be moving a website from a staging server to production server (from development to the live site). It could also mean moving the site from a sub-domain to another domain on the same server.
Site migration is one of the last steps in launching a new or redesigned website. Because there are many moving parts to keep track of when moving a WordPress site, organization makes the migration process much easier.
This article covers the checklist for a manual site migration of one WordPress website to another.
The Site Migration Checklist
If you own or manage any website, you should be backing up your database regularly.
There are a plethora of plugins that can help you do backups, but for a site migration, you’ll need the database of the site you are moving.
The best way to export your database is in a SQL zip file. If you are migrating one WordPress site to another, such as staging site to a live site, you can import the database from one site into another.
The easiest way to do this is with WP Migrate DB Pro. (This is a premium plugin).
WP Migrate DB Pro lets you do a find and replace on all the instances of your staging URL, replacing it with the destination URL. This feature alone is worth the price.
Small WordPress sites may also be done with the WordPress Importer, but getting the actual SQL database is safer, especially with larger sites.
What the WordPress Importer is really useful for is migrating the data from another platform to WordPress.
If you are moving your website from another platform into WordPress, be sure to consult the Importing Content page on the WordPress Codex for specific instructions.
For outside platforms, I recommend moving your site to a WordPress staging site first, to work out content formatting and layout, and then moving it to a live WordPress site.
Another thing I advise is keeping your original site live until you are ready to launch the new WordPress version of your website. This way, you can double check and make sure you’ve collected all the information, and you can compare and make changes to your development site.
Once you pull the plug on your original site, there’s no way to go back and get files you may have missed. Sites like Archive.org take “snapshots” of web pages and cache them, but it is not 100% comprehensive.
Check Your Original Hosting
No matter how you are exporting the original database, be sure that you get the complete database.
One of the main reasons people want to move a website from one web host to another is slow hosting. Good hosting is always a great investment. But shared hosting or outdated servers often time out before files can be properly exported.
This is another good reason to migrate a site from poor hosting to a staging server on good hosting, and finally to your production server.
A side Note On Databases
Make sure your current database is clean, and free of infections or compromises before moving it to a new server.
Many managed WordPress hosts scan for malware. But some site infections or hidden users that are already in your database, plugins, or theme files may not be detected if you move them over.
These are not always easy to spot. Just keep your eyes open for anything that seems out of the ordinary before you move your existing database to your new hosting environment.
Your WordPress database store the options for your plugins, your menus, your posts and pages. It doesn’t store image files, PDFs, theme files or plugins.
You will need to download these separately.
Basically, anything in the wp-content folder is what you’ll need to save from the staging site. These include WordPress theme folders, plugins, and the uploads folder — which contains all your images, PDFs and audio files.
Before final migration, make sure these are uploaded to the server you are moving your site to. You can use a FTP tool like Filezilla or CyberDuck to download or upload files directly to the server. For very large sites this might take a while, so plan ahead.
Changing Name Servers
In cases where you are moving an existing site from one server to another, the last step is changing the name servers of the domain name.
Name servers tell the domain name what server they should point towards. If you have a staging site ready to become a production (live) site, then all you need to do is point the name servers that direction.
The domain name may take anywhere from a few hours to a few days to point towards the new server. This period is called domain propagation.
The reason it takes varying amounts of time is that the various Internet Service Providers (ISPs) have different lengths of time they hold the domain name records before refreshing them. So you might see the domain name pointing towards the new server right away, but your friend on the other side of the country may still see the site on the original server.
Other Ways To Migrate
There are free plugins out there that can help you help migrate the database, like Duplicator or WP Move. These usually don’t work if the server you are moving from is running out of date software or is low on resources. These plugins work best when the site is average sized, and both hosting environments are running the most current software.
As previously mentioned, you can use WP Migrate DB Pro invaluable for migrating WordPress sites, and replace the old domain with the new one throughout the database.
You can also import the SQL database from the staging site directly into the production site using phpAdmin. This isn’t my first choice, as you still have to find all the instances of the staging domain name and replace them with the live site domain name.
Some hosting companies will help you move sites for a fee. Media Temple will move individual sites with their own cPanel from another host for $150 a site.
Flywheel, a managed WordPress host, actually helps you migrate your WordPress sites for free.
There’s a lot to think about when moving a WordPress site. My preferred plan of attack is to move the files, then move the database, then (if applicable) move the domain name/name servers.