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 assume that you already have a WordPress website running on your computer. I set up and customized a starter theme specifically for this tutorial. The customized site I’ll be migrating is called ‘MYTEST’ based on the NAKED starter theme by Joshua Beckham.
I also assume that you have paid hosting with 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.
And finally, you should have FTP access to your hosting account along with a client program such as FileZilla FTP. You’ll be using it to upload the files to your host. Alternatively, you can use the File Manager option in cPanel but unlike FTP, 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 Content Using Built-in WordPress Tools
The easiest 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 hosting account.
To start, go to your website’s dashboard and scroll down to Tools. Select Export and check the “All content” radial button.
WordPress will download a file to your computer. This is an XML file that contains all details about your site’s content. Now move to the live location, login to the WordPress site, and activate the theme you developed/customized on the local server. Head to the dashboard again and select 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 and saved to your computer.
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 quick and easy option.
Method 2: Move Everything From Local Server To Live
This is the most recommended method if you’ve built everything on the local server from the ground up. 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.
Step 1: Export Database File
To start, fire up your local server and navigate to phpMyAdmin—just type http://localhost/phpmyadmin into the address bar. 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.
Step 2: 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 http://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++ and I’m going to search and replace for “http://localhost/my_test” and replace it with “http://www.designboxug.com/my_test”. I simply created a “my_test” folder at the root folder of designboxug.com. If you are going to install directly at the root, you don’t need to create any folder, so your replacement URL should be http://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. Don’t alter anything else.
Step 3: 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. To setup a new database for your WordPress site, login to cPanel and browse to MySQL Databases.
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.
Step 4: 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.
Step 5: 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.
Step 6: 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 FTP client and connect to your hosting account using your FTP connection details. You can get them from your host if you don’t have them already. For some hosting providers, the FTP 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.
Step 7: Modify Permalinks
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!