Whether you run a small blog or a business based on a WordPress site, making the best WordPress hosting package choice is critical to your success.
Learn why we recommend WPengine operating from their UK datacentre and read our complete guide to migrating your WordPress site over to a new host provider in a few easy steps.
Table of Contents
- Inside WPengine
- Performance Data
- Migration Guide
- Migrate with the WPengine WordPress Plugine
- Migrate with the WordPress XML Importer
- Migrate with the WordPress PHPmyAdmin
- Download and Transfer your Image Content via sFTP
- Cheap WordPress Hosting – “Best of the Rest” Alternatives
Choosing the best, fastest and most secure WordPress hosting is an important move for any business.
If you’re anything like me, you’d probably prefer to spend your time writing blog posts and marketing your site, rather than trying to unpick problems with your website.
When it comes to performance and security, the hosting providers you work with are always completely in control of your service plan, and therefore totally responsible for protecting your future.
This guide is designed to help you migrate to our preferred optimised hosting service, WPengine in a few easy steps.
Don’t Choose Bad Hosting
In the past we’ve had reliability and security problems with previous hosts. Lengthy downtime or unexplained performance issues can be really frustrating and quite harmful to your business.
To me, speed and host security is obviously essential, and really you should be looking out for a company who are transparent about how they deal with basic issues like uptime and should give an indication about their hardware offer. How easy do they make migrating?
They should also be very clear about backups and storage. For example: “unlimited backups” usually means a backup is made every 15 minutes or so, but an ideal storage offer starts at 10gb and great is closer to 100gb. Not 1gb as some do. The host should be quite transparent about their network, too. What do they do in the event of uptime issues with their servers or a DDOS attack? Do they offer malware protection?
Who is hosting Builtvisible?
This website, Builtvisible uses managed WordPress hosting provider WP Engine. Our IP address location is based in the UK on dedicated servers.
Their plans start at around £20 per month – so your hosting costs start pretty cheaply!
My golden rule on managed hosting companies: If you’re working with a good company, you should rarely, if ever notice a problem. My other key issue is customer service, if you do need to ask a question, you should get a helpful, sensible response very quickly.
Let’s take a quick look at the admin panel and continue on with the migration guide:
The main Dashboard (via your WordPress dashboard) – allows control over key features of the platform and gives handy links to your control panel. This particular host is integrated with content delivery service NetDNA. The dashboard also reminds you of useful things like your IP address, FTP account details and includes handy links to cpanel and the CMS.
First of all, they have an incredibly simple set up process – as technically impressive as they are, WP Engine haven’t forgotten that it’s got to be easy to get started.
Caching is managed for you (see screenshot above) – so no annoying plugin configuration! The service automatically distributes your CSS, images and JS files via CDN and they’ll take care of SSL certificate installation for you, too.
There’s a UK data centre in London but obviously the CDN will serve content automatically from their nearest global data centre to your users. basically, it’s fast all over the globe. Very cool.
Take a look at the main control panel:
From here (one link from your WordPress Dashboard) you can set up domain redirects, switch to (and force) SSL, install new sites and most importantly, get help if you need it. WPengine customer service is fast and effective – give it a few hours and your issue is resolved.
WP Engine are probably the most complete service available today, with prices starting at about £20 per month. We use the “professional” level service with SSL and the CDN service.
Performance: Page Load / Site Speed
Here’s a quick page load test: I’m happy with the improvement – this page load time was closer to 2.5 seconds before the migration. I haven’t carried out any real optimisation of the content and the number of requests our site makes has yet to be addressed, so I’m really impressed.
Single page load test:
Overall performance in Google Search Console
How to Migrate your WordPress Installation
WordPress site migration can be a little daunting the first time, but there’s a sequence of steps you can follow to get up and running quickly, and very simply.
I’ve written this guide by taking notes as I’ve migrated our own website to WPEngine. This guide is intended for the beginner who feels much less comfortable finding phpMyAdmin and exporting a copy of the mysql database.
A lot of WordPress users simply don’t have easy access to this feature or don’t feel confident enough to go down that route. There are 2 options to choose from, starting with the simplest, the WPengine WordPress Migration Plugin. The plugin is installed in your old WordPress installation, from where you hand over your sFTP details and the plugin handles the transfer for you. For the more advanced, and confident enough to learn PHPmy admin and you’re keen to learn how to migrate via a SQL file, the instructions are in here to do that too.
Take a look at the process and let me know if you have any questions in the comments.
Getting WP Engine warmed up
Obviously you need to start by signing up for the service! There seems to be a limit on the number of characters you can use in the sign up process for your username. Mine wouldn’t fit in the new username field! So, as soon as I’m logged in, I create a new administrator account with my preferred username, log in to the new account and delete the old admin account.
Do be sure to set your host location correctly. As we’ve found through testing, your hosting location is important for your site’s search engine traffic performance, try to set you host location as close as possible to your intended target audience:
It makes a lot of sense to keep the same username you were using in your previous WordPress installation. I’ve had a fair bit of experience with migrating WordPress sites and on more than one occasion I’ve had to change a username in the mysql database (not trivial, but quite necessary if you’d rather preserve the author URL, as it’s pretty pointless redirecting URLs if you can possibly avoid it). So, do think ahead with seemingly small issues like this to save you hassle later down the line.
Get your access to my.wpengine.com and SFTP set up
Your WP Engine Dashboard can be located here – log in in a new tab and be sure to save your password in Chrome. The login details are the same as the details you provided when you set up the account. We’ll cover the main areas in the dashboard later, but suffice it to say there are some vital settings for later including CDN configuration, SSL and your domain redirects.
All of your image uploads can be found in the wp-content/uploads directory. You’ll also need to transfer your /themes directory, also located on wp-content.
It helps to transfer your wp-content directory contents by FTP. WP Engine only supports “SSH File Transfer Protocol” but that’s only a good thing for security. My weapon of choice for FTP/SFTP server transfer is Filezilla, which you can install here.
Once you have Filezilla installed, add a new site with the button in the top left hand corner. The configuration looks like this:
Export your content from your old WordPress blog
The WordPress export / import process can take some time, so it’s best to make a start and get all of your files together as soon as you can. If you’re not sure where phpMyadmin can be found, or how to export your database, the WordPress export plugin feature is the best optoin. With that said, if you’re a more advanced user, skip to the PHPmyadmin export guide below.
Easily the simplest way to migrate your WordPress site, simply start by installing this plugin from “add new” in Plugins in your old WordPress install:
5 pieces of information are needed for migration:
- Your Email
- Destination URL (eg. richardbaxter.wpengine.com)
- WP Engine SFTP Host
- WP Engine SFTP Username
- WP Engine SFTP Password
Add all the details in this screen:
The process takes just a few minutes, depending on the size of your site.
Log into your cPanel (all hosts have an admin area, you should be able to find cPanel from here) and click on the icon called phpMyAdmin. If you’re stuck, contact your host’s support team and they should be able to point you in the right direction.
Click “phpMyAdmin”. On the left hand side you should see your site’s database. Select your mysql database on the left. All tables should be highlighted (see below). Then, find and click the “Export” button on the top nav bar. Select “Custom” from this screen:
When this screen appears, select custom and follow the steps below:
Select the option “all tables”, scroll down and select “SQL” as the desired format. Here’s the slightly technical part of the export process:
In the Object Creation Options subsection, select the following check boxes:
– Add DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT statement
– CREATE TABLE statement
– CREATE TABLE Options
– IF NOT EXISTS
– Enclose table and field names with back quotes
Which should look like this:
All of the other settings can be left set to default. When you’re done, click “Go” which will save your database as a .sql file.
Now, it’s time to upload your database to your new WordPress installation on WPengine.
Access PHPmyAdmin from your WpEngine dashboard
Log into your “User Portal” and click the black drop down arrow directly to the right of your installation name. Click the “PHPmyAdmin” link:
Select the production default database
Each installation at WP Engine has two databases that are accessible via phpMyAdmin.
The first is labeled snapshot_ and is just for your staging site, the second is labelled “wp_sitename” (e.g. wp_richardbaxter in the screenshot above) and is for your live (“production”) site. This will be the database your replace during the migration.
Click on the database with “wp_” in the name.
Drop the default tables
Before importing your database we want to clear everything ready for the newly imported WordPress database.
First, click on Check All to select all of the database tables. Next, from the drop down menu that appears beside Check All, select Drop. Then click on Go in the bottom right corner.
From here you’ll be presented with a confirmation screen. Click Yes to confirm and then the existing tables will be dropped. This will leave you with the perfect conditions for uploading your database.
Importing your WordPress database
Click on the Import tab at the top of the menu. Next, click on Choose File and select your database export file that you previously saved to your computer.
Finally, click on Go at the bottom of the page.
Download all of your content via FTP
Next, it’s time to download all of your content. Most WordPress installations have their content in the wp-content directory. It’s extremely easy to download the whole thing, clean out the stuff you don’t need (like the plugins folder) and upload what’s left via your SFTP connection to WP Engine. Grab your FTP details from your old host and make a start by downloading the directory.
Here’s mine in action:
This process can take a long, long time – so while we’re downloading your content, let’s get your new home all set up.
Get your basic WordPress settings configured
While your files are downloading I find it’s worth working through WordPress’s basic settings (general, writing, reading, discussion and permalinks). The fastest way to get everything sorted how you like it is to have your old site open in a new tab and switch between the two from tab to tab. Just be careful, I’ve found myself fiddling with settings in the wrong site before!
Don’t forget to deselect the “Discourage search engines from indexing this site” under “Reading”, it’s a default in every WordPress installation that blocks search engines from indexing your content!
Install the plugins you’ll need
Comparing a tab with the plugins you’re using in your old host location to the plugins section in your new host location is a quick and easy way to remember everything.
Here’s a list of some of the handy plugins that make our site possible:
Advanced Custom Fields makes adding custom JS, JSON-LD, CSS to very customised pages like our Google Analytics Beginners Guide. Crayon Syntax Highlighter makes our code snippets pretty, Gravity Forms is absolutely the best forms plugin around and powers our job application and contact pages, Yoast’s WordPress SEO needs little introduction – it’s the only SEO plugin you need, and finally the classic WP-PageNavi powers our paginated links. Apart from Akismet, that’s more or less all we use at Builtvisible.
Obviously there’s a little custom code here and there, but most of the custom stuff can be found around the resources section of our site.
Some plugins, like Gravity Forms, have a really handy export features. You can export/import your forms which saves a lot of time, especially as the form notification settings are kept! The only thing you need to keep an eye out for is that the form ID’s can change – so you will probably need to edit your form shortcodes in each of the posts that use them.
Yoast’s SEO plugin also has a handy import/export feature. It transfers all of your settings, except, perhaps sensibly, whatever was in your .htaccess file. I have hundreds of redirects in mine – but a simple copy/paste takes care of the migration in a jiffy. Checking each plugin configuration is mildly laborious, detailed work but it is really important!
It’s worth pointing out in the screenshot above, domain redirects are handled in the WP Engine dashboard not in Yoast’s SEO extension. The rules you see are removed later!
Upload your uploads and theme
We’re getting quite close to being finished, with the contents of the uploads folder, and of course your theme files requiring an upload via FTP. Assuming your FTP download has finished, connect via SFTP to WP Engine (we set this up earlier) and navigate to your wp-content folder:
You just need to copy your themes and uploads directories. It’s OK to just delete the current theme and uploads directory on the new host. When the directories are deleted, drag and drop each new directory from local to WP Engine’s SFTP location.
The upload process can take quite a while, but we can certainly use that time to move to the next stage of configuring your new WordPress installation.
Fix your navigation and custom fields
If you’re like us, you’ll have experimented with, or may be using custom fields. We use them for easier management of our team and clients pages, using the Repeater Add On. The Advanced Custom Fields plugin will export your custom fields in an XML file. That file is compatible with the WordPress Import plugin, so it should be relatively simple to migrate your field settings:
With that said, the WordPress export file doesn’t migrate your custom field data. This makes for a minor period of labouriousness returning everything manually with copy and paste between your old and new installations. Unless you’re keen to fiddle with the database I don’t think there’s an easy way forward with custom field content migration in a default WordPress installation.
Navigation is obviously very common and doesn’t need a great deal of attention to match it to your previous WordPress installation. The content export process should carry your menu settings along, meaning you need to select the correct menu location and then “save settings”.
Sort out your author pages
WordPress re-creates your authors, but none of the customisations (contact information, biographical information, etc) survives. We’ve got around 10 regular contributors to Builtvisible so this stage also requires a little copy / paste between your old and new installations. It’s not difficult, just slightly tedious!
Harden your WordPress installation security
My site was hacked years and years ago – it’s a frightening experience and can take up days of your time to fix the problem. It’s an experience best avoided and, with some quick, basic changes you can sleep easily at night. Fortunately, there are a few plugins you can install to scan your site and use to make the right changes.
Let’s assume you’re already using a “strong” password and your username isn’t “Admin”. If you’re using “Admin” as a username, create a new admin account with a different username, log out of the old account and remove it.
WP Engine’s dashboard has a “Reset File Permissions” feature. They recommended that you use this, particularly if you’ve uploaded files and folders via SFTP. It does work but the problem with it is that it takes a long time and can hang Chrome while you wait. Don’t be surprised if Chrome thinks the browser session has crashed – just click “wait” if you get this message. The other issue is that WP Engine’s own tool sets folders to 0775 not 0755 and files such as .htaccess to 0664 not 0644 – I’m using the latter, not the former. As a rule of thumb, a good permission setting for PHP files is 644 and a good permission level for directories is 775.
To be absolutely sure everything is set up correctly, install All in One WP Security. Once the plugin is installed, go to “Filesystem Security” and check the file permissions are set correctly. If any are incorrect, the plugin will change them for you:
That’s really all I ever feel is necessary, so I tend to uninstall security plugins once they’ve served their purpose.
Add your domain to the WP Engine dashboard
By default WP Engine uses a URL like this [youraccount].wpengine.com.
It makes sense to add your domain early to me, because we can test the redirects to your domain before we actually change your domain’s DNS to point to WP Engine.
Multiple domains – configure your redirects
If like me, you have more than one domain name, it makes a lot of sense to redirect them to your preferred destination. Before you change your main domain’s DNS A Record, I recommend switching the DNS settings for the redirected domains first.
In SEO speak, we say “301 redirect”. That means “this resource has permanently moved” and SEO’s generally agree that the link equity from one domain is partly transferred to another using this method.
WP Engine will tell you the IP address you need to update your DNS A record with. In my case, the IP is 188.8.131.52.
Head to your DNS settings at your domain registrar, and update the A record to match the IP. This is the configuration for SEOgadget.nl which we will be later redirecting to our site:
Your domain’s DNS settings control panel might look a little different. The general rule is head to “DNS settings” and find the A record for your domain name. You may have a “www” A record too. Make sure that the IP address is updated there, too.
Next head to WP Engine’s dashboard and select “Domains” and “Add Domain Redirect to this Domain”. The domain should redirect as expected
Set live – change your main domain’s DNS A Record
Check that you’re happy with the content of your site. Crawl the [yourname].wpengine.com version of your site as a last check. I use Screaming Frog’s SEO Spider to crawl every page. If you find any errors, identify where they’re originating from and fix them.
When you’re happy, return to your DNS control panel and update your main domain A record to point to the new host IP address. It shouldn’t take long for the change to propagate!
Some final housekeeping
After you’ve switched your site over, you should change your “Website address (URL)” and “Site address” settings in Settings > General in WordPress
I also recommend setting up the [yourname].wpengine.com address to redirect to your correct domain.
I hope this step by step proves useful, and if you have any questions or comments, you know what to do.