How to Migrate WordPress:
Today we will look at the process to migrate WordPress website from WPEngine to a new host (in this case, SiteGround). SiteGround does offer a free migration service, but if your site is over 1GB, you will have to pay their $50 fee. Instead, we will migrate the site over ourselves.
WPEngine makes it harder than most other hosts to migrate a site out of their system because they block backup plugins. Normally, I would use BackupBuddy to migrate a site because it takes care of importing the database to the new host and switching URL’s to match the new domain. Instead, we will do a manual migration of the site.
Let’s get started!
Step 1: Move all files over via FTP
The first step, and also the most time consuming for large sites, is moving the website files to the new hosting account. Log into your WPEngine account via FTP. Our favorite FTP program is Transmit, but you can also use a free program like FileZilla. After accessing your server, you will be at the root folder of your WPEngine account. You will want to download every file and folder in this directory to your computer.
Once downloaded, you will then want to login to your SiteGround server via FTP. When you login, click on the folder: public_html. This is the folder where you want to upload all of the files that you just downloaded from WPEngine. See the screenshot below of the files and folders that should now be in your SiteGround FTP (don’t worry about the Apple touch icons or favicon, your site may not use those). This step took a few hours with a 2GB website and an internet connection of 25MB Down/5MB Up. Be patient and let everything transfer over.
Step 2: Create an Empty Database at SiteGround
WordPress is made up of two parts, the files (which we moved in the last step) and the database (which holds your content and settings). We will need to create a new database at SiteGround so we can import the one from WPEngine. This new database will be empty so we can do the import in the next step.
Login to your SiteGround account and click “Go to cPanel”
Once in the cPanel, scroll down to the database section and click on “MySQL Database Wizard”.
Give your database a name and click next step. Keep a record of this and the database username and password for later steps.
Give your database a username and password, which will be used when we update the wp-config.php file later on.
Make sure the user has all privileges, which is required to connect things with WordPress.
Step 4: Download Original Database from WPEngine
Before we can import the database into the new empty database at SiteGround, we need to download the old database from WPEngine. The best way to do this is to login to your WPEngine account and click on “Backup Points” in the far left menu. There, click the most recent checkpoint and then download the zip.
Unzip this file then click into the “wp-content” folder. There, your database can be found. It is the file titled: mysql.sql:
Step 5: Import Database to SiteGround
No that we have the database file from WPEngine, we need to import it into our blank database we created in Step 2. In your SiteGround cPanel, go back down to the database section and click phpMyAdmin.
Once loaded, click on your empty database name in the left column. Then click “Upload” at the top, which will brig you here:
Browse your computer to upload your .sql file that was downloaded from WPEngine. Once selected, click “Go”.
Step 6: Update wp-config.php
The files you moved over in step one will include a wp-config.php. The one made by WPEngine is highly modified, so you will want to edit the wp-config-sample.php file and then rename it to wp-config.php to replace the one from WPEngine. In wp-config-sample.php, enter your database settings in the section below. Your database name and username will also include your SiteGround username (sitegroundname_databasename). Hostname will be “localhost”
The last step in wp-config-sample.php is adding Unique keys, which can be found at the link seen below:
Once these changes have been made, save the file as wp-config.php to replace the one from WPEngine. Now you are ready to point your domain to the new SiteGround account.
Step 7: Point DNS to SiteGround
You have now made every step necessary to point your domain over and ensure that your site will have a seamless transition. This site happens to be registered at Network Solutions, but you may be registered somewhere else like GoDaddy. Go to your DNS record section where you will want to change your A Records. Update your www and @ A Records to point to your SiteGround account IP. This IP can be found in your SiteGround cPanel. Once this is saved, wait 24-48 hours for the change to take effect. A lot of times, an A Record change only takes 20-30 minutes, but it can take longer to propagate.
You are all done! Wait for the domain name to switch over to SiteGround and you are fully migrated.
If you are moving from a different domain name, you will need to update the domain in a few different places. You can use a plugin like Search and Replace to update your domain name in the database, although make sure you make a backup before doing so!
Feel free to ask any questions in the comments below!
Great,
Cloudways offer Free WordPress Migration Service to their User. here is details: http://www.cloudways.com/en/free-website-migration-service.php
Hi Fahad,
I have not heard of Cloudways before,but it’s nice they offer a free migration service. Thanks for letting us know.
Why would anyone want to move off of WP Engine? Please make a guide how to move to WP Engine from other hosts, that’s what my agency needs most!
Hi Ronnie,
WPEngine is a great host and I have been happy with them for a few clients, but sometimes it is not the best fit. They are quite a bit more expensive than other shared hosts for the same performance and security. I will make a guide on migrating to WPEngine next time I have a client move there. Thanks!
Personally, I moved because it was too expensive, and the features of SiteGround are great. WPEngine has a few other features, but not worth the extra cost for me.
Nice article. Did you notice all those X_input_.phpX files in your screenshot?
Those are infected (created) files. Make sure you clean this install when going live :)
Thanks for pointing that out, they were removed :)