A virtual web server installed on your computer (or local server) allows you to build and customize a WordPress website with ease and speed. Since every edit requires saving and refreshing, developing a WordPress site on a live server can easily turn into a nightmare given the limitations of bandwidth and Internet traffic.
For this reason, most developers rightly choose to do all the nitty-gritty of WordPress development on a local server and later upload the finished website to the live server. Similarly, future updates to the website are done and tested locally before being uploaded to the live environment.
In this post, I’ll be going through the process of moving a WordPress website from a local server to a live server. This process allows you to safely move all of your site’s content (images, posts, and pages) as well as themes and plugins from a directory on your computer to your host’s production server. Obviously, there are a couple of handy plugins that can make this process a breeze, but it’s always advantageous to learn the manual process.
In this tutorial, I’ll assume that you already have met a few prerequisites. These are just a few simple requirements that you’ll need before you can get started.
1. Local WordPress Installation
You should have a WordPress website running on your computer. To learn more about setting up your own localhost environment checkout our guides on how to install WordPress locally, or checkout Local by Flywheel.
2. Hosting Plan
You’ll also need an active hosting plan that offers PHP and MySQL support. Fortunately, most hosting providers support PHP and MySQL. Better yet, many providers offer one-click install scripts for WordPress so you don’t have to go through the manual setup.
We of course recommend WP Engine managed WordPress hosting – it’s how we power all of our websites and live theme demos. Plus, WP Engine makes managing your sites easy thanks to their intuitive admin panel. Plans start at $29 per month for one installation (but you can get 2 months free on annual plans when you use our link). If you’re not ready for that price tag, you can find a great starter shared hosting plan for around $3 per month from companies such as Bluehost or SiteGround.
3. SFTP Access
And finally, you should have SFTP access to your hosting account along with a client program such as FileZilla. You’ll be using it to upload the files to your host. Alternatively, you can use the File Manager option in cPanel but unlike SFTP, cPanel doesn’t provide a view of your local directory structure. Okay, with all of that in place, we should be ready to go.
Method 1: Export & Import Content Using Core WordPress Features
A quick and easy way to move a WordPress site from local server to a production environment is by using the built-in export tool in WordPress. This method assumes that WordPress is already installed and setup on your live hosting account and that there is no content on your live website. This is very important as the WordPress import feature will not override existing content, it will simply add to it. If you do have old content you can always use our guide to reset your WordPress website so you have a clean installation to work with.
Okay – to get started moving your website go to your locally installed WordPress dashboard and scroll down to Tools. Select Export and check the “All content” radial button.
This will download an XML file to your computer. The file will contain all the details about your site’s content (unless you selected a singular content download option, such as only your posts, pages, a custom post type or your media).
Now login to your live WordPress site, then activate the theme and plugins you used on the local server. Once that’s done navigate to Tools > Import.
If you’re prompted to install the WordPress import plugin, do so and then activate it. Finally, use the plugin to import the .xml file you exported from your localhost. To do this first click on the Run Importer options under the WordPress heading (Note: you can also use the importer feature to move content from other sources such as Blogger, Tumblr, etc).
Next use the Choose File option to select your XML file then click to upload and import. Now just wait for your content to import. How long you wait will depend on how much content you import and your hosting plan.
This method will move your posts, pages, media and menus to your live site. You will of course have to set your menu locations and re-add your widgets, but considering that everything else is moved over for you, this is a great option if you don’t want to install any extra plugins or process the move manually.
Method 2: Use a Plugin to Move Your WordPress Website
If you want a seamless transfer of your website it might be best to consider a plugin. A quick Google search will turn up tons o free and premium options, but here are our three favorites (plus a quick explanation on how to use them to migrate your website).
Local is a free software your can use to install WordPress locally on your computer. It makes it easy to setup a local host, duplicate test sites, create a local multi-site, archive sites and more. But one of the best features of Local is that you can easily migrate your local site to your live server with their “Local Connect” integration for Flywheel and WP Engine.
Duplicator is an awesome freemium plugin your can utilize to manage your own site backups and migrations (and one of the most popular options). With the Duplicator free plugin your can easily create your own on demand backups, design site bundles (a package of content, theme and plugins to reuse on client sites) and easily move your website from local to live (just install the plugin locally to package it, then install on your live site using the same plugin).
Alternatively, if you spring for Duplicator Pro you can utilize premium features for scheduled backups, synced storage (Amazon, Dropbox, Google Drive etc), multisite compatibility, cPanel API, email notification, pro support and more. One year costs less than a pair of Nike trainers, and knowing your website is safe and secure is more than worth it.
Another fantastic solution is BackupBuddy by iThemes. This lovely plugin is the premier solution to manage your own website backups. With it you can create full website backups (databases and all), schedule regular backups, store your own copies (locally or via BackupBuddy Stash) and even restore your website with ImportBuddy.
But did you know that you can also utilize BackupBuddy to move your local site to your live one? You can use BackupBuddy’s built-in migration features to move your website from computer to internet (or from host to host). The plugin handles domain changes, automatically replaces your URLs and more all to seamlessly transition your website for your big debut.
Lastly, another solid free option is Transferito. This easy site transfer plugin supports server-to-server as well as local-to-server (and visa versa) transfers. So whether you want to move a copy of your site offline for testing, or move design changes back to your live site you can.
Method 3: Manually Transfer Files From Local to Live Server
Your last option is to manually move your website files. This will require server access. Essentially, the process entails downloading the database file from the local installation, editing it for the correct paths before importing it to a new database on the server, and finally uploading all contents of the local WordPress installation.
Export Your Database File
To start, fire up your local server and navigate to phpMyAdmin – just type localhost/phpmyadmin into your web browser. In this example I’m using XAMPP and here is what my phpMyAdmin interface looks like:
The panel on the left is where all databases are listed. Select the database for your local WordPress site and click on Export at the top of the phpMyAdmin window. The “Quick” export method is selected by default. Leave it intact and click Go.
A SQL file (such as my_test.sql) will be exported to the downloads folder on your computer.
Modify File Paths
When you build your WordPress website locally from the ground up, keep in mind that all your URLs will be absolute paths. In other words, all links to your content files (posts, images, post types) will start with https://localhost/. You have to modify this link structure for your live installation or your content will not display properly after uploading the database file.
To do that, use a code editor to perform a “find and replace” on the database file you just exported. I’m using Notepad++ to search and replace for “https://localhost/my_test” and replace it with my live URL. I simply created a “my_test” folder at the root folder for my domain. If you are going to install directly at the root, you don’t need to create any folder, so your replacement URL should simply be https://www.yourdomainname.com. You will be uploading your local WordPress folders to public_html (the root of your hosting account).
Once you’re done replacing the URLs, save and close.
Create New Database on Your Hosting Account
Now you’re done with the main part on the local server. It’s time to setup the live environment and finally get the files uploaded so that your website can go live. How you setup a new database for your WordPress site will depend on your hosting.,
When you select MySQL Databases, you will be prompted to enter a username and password. This is the new user account that will be associated with the new database for your website. Note the personal details like your username and password because you’ll need them when configuring the database file in WordPress. The newly created database will have the same name as the username you chose.
If you’re using a managed hosting account you may not have cPanel. For example, with WP Engine you can create a new installation on your plan simply by logging into your account and clicking the Add Install link.
Next fill out the required information (which by the way, you can set this up as a staging site if you don’t have a domain ready just yet).
That’s it! Your new site (and database) is ready.
Upload Database File into New Database
Now that you have a new (empty) database on the live server, it’s time to upload your database file saved on your computer. Browse to the phpMyAdmin interface of your host and select Import. Browse and choose the SQL database file you exported from your website on the local server.
If your host doesn’t have phpMyAdmin, use the Database Restore option in MySQL Databases. It does the same thing—allows you to browse and select a SQL file.
I used the restore option to import my database file. Remember, this is a crucial step because it allows you to restore your website exactly as it was on the local installation. Now all that is left is to edit the wp-config.php file, upload website files, and fix the permalinks and we’ll be up and running.
Fix wp-config.php File
Open the wp-config.php file in your code editor (browse to your local WordPress installation folder). Here are the only details you need to change:
- define(‘DB_NAME’, ‘your_database_name’);
- define(‘DB_USER’, ‘your_database_user’);
- define(‘DB_PASSWORD’, ‘your_database_password’);
- define(‘DB_HOST’, ‘localhost’);
Just fill in the settings you defined while creating the database on your live server in Step 3. For the host name, fill in the server IP address or leave it as localhost if your host explicitly says so. I’ll leave mine as localhost as it’s clearly stated here: “To connect to this database in a script running on your web server you should use “localhost” as the hostname.” When you’re done editing the settings, save and close the file. Don’t change anything else.
Note: Make sure to save a copy of your old values, just in case anything goes wrong you can always revert back.
Uploading Website Files
It’s now time to move the actual WordPress website files as we’ve setup everything on the live server. Fire up your SFTP client and connect to your hosting account using your SFTP connection details. You can get them from your host if you don’t have them already. For some hosting providers, the SFTP logins are the same as the cPanel details.
Once you’re connected, browse to the public_html or www folder (or a folder at the root where you want to install your WordPress website) and copy all files from your WordPress installation folder on the local server to this directory on the live server.
The final step is to modify the permalink structure of your new website to match that of your old site on the local server. To do this, go to the admin dashboard of your new website and browse to Settings > Permalinks. Select the structure you used for your local installation and save. Your WordPress website should now be live.
By now you should have proper insight on what happens when moving a local WordPress installation to a live server. WordPress allows for a lot of flexibility and ease of use. Developing on localhost allows for unlimited tweaks and customizations because you can afford to make mistakes there that you cannot afford to make in a live, production environment.
What’s your best method for uploading a WordPress website from local host to live server? If you’ve gone through this process before, what was your experience like? Please share your thoughts in the comments!