WPBeginner

Beginner's Guide for WordPress

  • Blog
    • Beginners Guide
    • News
    • Opinion
    • Showcase
    • Themes
    • Tutorials
    • WordPress Plugins
  • Start Here
    • How to Start a Blog
    • Create a Website
    • Start an Online Store
    • Best Website Builder
    • Email Marketing
    • WordPress Hosting
    • Business Name Ideas
  • Deals
    • Bluehost Coupon
    • SiteGround Coupon
    • WP Engine Coupon
    • HostGator Coupon
    • Domain.com Coupon
    • Constant Contact
    • View All Deals »
  • Glossary
  • Videos
  • Products
X
☰
Beginner's Guide for WordPress / Start your WordPress Blog in minutes
Choosing the Best
WordPress Hosting
How to Easily
Install WordPress
Recommended
WordPress Plugins
View all Guides

WPBeginner» Blog» Tutorials» How to Easily Create a Staging Site for WordPress (Step by Step)

How to Easily Create a Staging Site for WordPress (Step by Step)

Last updated on April 29th, 2019 by Editorial Staff
1k Shares
Share
Tweet
Share
Pin
Free WordPress Video Tutorials on YouTube by WPBeginner
How to Easily Create a Staging Site for WordPress (Step by Step)

Are you looking to create a staging site for WordPress but not sure where to start?

A WordPress staging site is a test site that you can use to “safely” make plugin updates and other changes before going live.

In the past, it used to be very difficult to setup a WordPress staging site, but now that has changed so even a non-technical person can do it.

In this step by step guide, we will show you how to easily create a staging environment for your WordPress site. We will cover several different methods and most of them only require a few clicks.

How to create a staging site for WordPress

What is a Staging Site?

A staging site is a clone of your live website that is used for testing changes before making them live. Staging sites help you catch errors, so you don’t end up breaking your live website.

A lot of users install WordPress locally on their Windows or Mac computers to test changes. Once they’re done with the updates, they simply upload those changes from localhost to live server

The biggest problem with this approach is what if something that worked on your localhost does not work on the live server?

Often localhost and live WordPress hosting servers are not running the same environment.

Since the staging site lives on your web hosting server, you can easily prevent all those errors because it runs the same server configuration as your live site.

With that said, let’s take a look at how to setup a staging site for WordPress.

How to Easily Create a WordPress Staging Site

There are multiple ways to create a staging site for WordPress. The easiest of them is to use your hosting provider’s built-in staging site feature.

Some of the best WordPress hosting companies already offer 1-click staging websites. If your website is hosted with one of them, then you can easily create a staging site without any hassle.

If you’re not with one of these popular hosting solutions, then we also have a solution to help you create a WordPress staging site using a plugin (and even manually).

For faster browsing, you can use the navigation below to jump to the section that’s most applicable to you:

  • Creating a staging site on Bluehost
  • Creating a staging site on SiteGround
  • Creating a staging site on WP Engine
  • Creating a staging site using a plugin
  • Creating a staging site manually

Creating A Staging Site on Bluehost

Bluehost is one of the best WordPress hosting companies. They offer a quick 1-click staging site solution which comes with all their plans.

First, you need to login to your WordPress site’s admin area and go to Bluehost » Staging page.

Staging site option on Bluehost

This will bring you to the Bluehost’s staging site wizard. Next, you need to click on the ‘Create Staging Site’ button to continue.

Create staging site on Bluehost

Bluehost will now prepare the staging environment for your website. Once finished, you will see a success message with a link to visit your staging site.

Go to your staging site

Now, you can click on the ‘Go to staging site’ button to continue.

You will reach the admin area of your staging WordPress site. You will see a red button on top of the admin bar to indicate that you are working in the staging environment.

You can go ahead and work on your website without worrying about it affecting your live site.

Deploying changes from staging to live site on Bluehost

Once you are ready to push changes from staging to the live site, simply go to Bluehost » Staging page.

Deploy staging to live website on Bluehost

Scroll to the Deployment Options section. You will see three options for deployment. You can deploy only the files, only the database, or both files and database.

If you’re not sure, then click on the Deploy Files and Database button to deploy all changes from the staging environment.

This will bring up a popup where you will be asked to confirm that you want to deploy the staging site to the production site. Click on ‘Yes, Let’s Deploy’ button to continue.

Confirm deploy

Bluehost will now start deploying your staging site to the live site. Depending on the size of your website, this may take a while.

The pop up will automatically disappear when deployment is over. You can now visit your live website to see the changes applied to your production site.

Creating a Staging Site on SiteGround

SiteGround is another top WordPress hosting company offering 1-click staging feature with their GrowBig and GoGeek plans. If your website is hosted with SiteGround, then this is how you would set up a staging website.

First, you need to login to your SiteGround cPanel dashboard. Next, scroll down to the ‘WordPress Tools’ section and then click on the Staging icon.

Staging icon in SiteGround cPanel

This will bring you to the staging sites page. From here, you need to add your website to the staging site manager. Once you’re done, click on the ‘Add WordPress’ button to continue.

Add site to staging manager

On the next screen, you need to select the URL where your website is installed. If your WordPress site is installed in a sub-directory, then you can add that in the field next to it and click on the Add URL button to move forward.

Select URL

The staging site manager will detect your website and add it to the page. You can now click on the ‘Create Staging Copy’ button to continue.

Create staging site copy

You will see a popup that allows you to password protect your staging site. This is a good idea because it prevents others from accessing your site. It also prevents Google from indexing duplicate content.

Go ahead and provide a username / password and then click ‘Continue’.

Password protect staging site

SiteGround will now create the staging environment for your WordPress website.

Once it’s done, you will see the staging site manager with links to the admin area of your staging site. Go ahead and start working on your WordPress staging site.

After you are done making changes to your website, you can push it live by going to the staging page in cPanel. You need to click on the ‘Manage Staging Copies’ button next to your website.

Manage staging copies

On the next page, you can click on the ‘Push to live’ button to push changes from staging to your live website.

Deploy staging to live

Creating a Staging Site on WP Engine

WP Engine is the best WordPress managed hosting company in the world. Managed WordPress hosting is a concierge service for your WordPress site where the hosting provider takes care of updates, backups, security and performance.

WP Engine offers one-click staging solution with all their plans. If you are using WP Engine to host your website, then this is how you would set up a staging environment for your site.

First, you need to login to your WP Engine dashboard. Next, go to the Sites page and select your website by clicking on it.

Sites WP Engine

This will bring you to your website dashboard. Now, you need to click on the Add Staging link from the left column.

Add staging site in WP Engine

On the next screen, you need to enter a name for your staging site under the ‘Create New’ tab. This name will also be the subdomain of your staging site.

Create new staging site

Click on the Create Environment button to continue.

WP Engine will now create a staging site for you. However, this staging environment is just an empty WordPress site that does not have any content of your live website.

Let’s change this.

Switch to your production environment by clicking on production from the left column. On the next screen, click on the Copy to button at the top right corner of the screen.

Copy to staging

Next, you will be asked to select the backup point you want to use for your staging site. If unsure, select the most recent back up of your website.

Select back up point

Click on the preview copy button to continue.

You will see a warning popup informing you that you are copying the source website to the staging environment. Click on the Copy Environment button to proceed.

Copy website warning

WP Engine will now copy your live website to the staging environment. You will recieve an email notification when it is done.

After that, you can login to your staging website using the same admin username and password as your live website.

Deploying Staging to Live Website on WP Engine

When you are ready to push the changes from your WordPress staging site to live site, first you will need to create a backup point for your staging site.

A backup point is just like saving your progress in a game. You need to create one before deploying your staging site’s changes to the live site.

Simply head over to WP Engine dashboard and click on Staging » Backup Points menu from the left column.

Create a backup point for your staging website

Next, provide a description for your backup so you can remember the changes later, and then click on ‘Create staging backup’ button.

Create backup of your staging site

WP Engine will now create a backup point for your website. You will receive an email notification when your backup is complete.

You are now ready to deploy your staging site.

Simply click on the ‘Copy to’ button at the top right corner of the screen and select ‘Production’.

Copy to production

Next, you will be asked to select a backup point. This time select the backup you created earlier and click on the preview button.

Select back up point

You will see a warning message, but go ahead and click on the ‘Copy Environment’ button to proceed.

Copying environment

WP Engine will now copy your staging environment to your live website. You will recieve an email notification when it is complete.

After that, you can log in to your live website to ensure everything is working fine, and it should because you tested all your changes on staging.

Creating A Staging Site using WordPress Plugin

If your WordPress hosting company does not provide a staging site feature, then you can still create a staging website using a WordPress plugin.

There are some disadvantages to using this method.

First, a plugin would have limited control on your hosting server. This is why it may not always give the best results.

Secondly, the plugin we will be using will store your staging site on their own servers. If you are concerned about privacy and data protection, then this may not be the ideal situation for you.

That being said, let’s see how to create a staging WordPress site using a WordPress plugin.

The first thing that you need to do is install and activate the WP Stagecoach plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, the plugin will add a new menu item labeled WP Stagecoach to your admin bar. Clicking on it will take you to plugin’s settings page.

WP Stagecoach settings

You will need to enter your WP Stagecoach username and the API key which you can find under your account on the plugin website.

After that, you will be able to create your staging website.

You need to provide a name for your staging site. This name will also be used as the subdomain of your WordPress staging website.

Don’t forget to check the box next to ‘Password protect the staging site’ option. It will protect your staging website from public view and search engines.

Create staging site using WP Stagecoach

Next, click on the ‘Ride The Stagecoach’ button to continue.

The plugin will now create a backup of your WordPress files and database to export them for your staging site. Once finished, you will see the link to your staging site, and its admin area.

You can click the link to visit your staging site and start working on it.

Deploying Staging Site to Live Using WP Stagecoach

Once you are ready to import changes to your live site, head over to WP Stagecoach » Import Changes page and click on the check for changes button.

The plugin will now check for changes on your staging site and then show you options to import them.

Impoting changes from staging

You can select to import only file changes, only database changes, or all changes. Next, click on the import button to continue.

The plugin will show you the progress of the import and will notify you when it is done. You can now test your live site to see if all changes were successfully imported.

Create a Staging Site for WordPress Manually

This method requires you to manually create a staging site for your WordPress install. It is for advanced users and requires more work than other methods described above.

Another disadvantage of this method is that your website will be temporarily unavailable when deploying changes back from staging to live server.

That being said, let’s see how to manually create a staging environment for your WordPress site.

First, you need to create a subdomain for your staging website. Go to your hosting account’s dashboard and click on the Subdomains link located under the domains section.

Create subdomain for your staging site

Note: We’re using Bluehost in our example screenshot, so your screen may look different.

Provide a name for your subdomain (for example, staging) and then click on the create button.

Your hosting control panel will now add your subdomain, which you can use to import your live WordPress site.

Next, you need to install and activate the Duplicator plugin on your live site.

Upon activation, you need to click on the Duplicator menu in your WordPress admin sidebar and click on the create new button.

Create Duplicator package

After that, you will be asked to click on the Next button to continue.

Duplicator will now run the website duplicator wizard. First, it will run some tests to see if everything is in order. If all items are marked ‘Good’, then click on the ‘Build’ button.

Build package

The plugin will now start creating a duplicator package of your WordPress site. This process may take a few minutes depending on the size of your website.

Once finished, you’ll see download options for Installer and the Archive package. You need to click on the ‘One click download’ link to download both files on your computer.

Download and package and installer files

Your new staging WordPress site will need a new database. Let’s create one.

Head over to your WordPress hosting account’s control panel and click on MySQL Databases icon located under the Databases section.

MySQL Database

On the next screen, provide a name for your database and then click on the create database button.

Create database

Next, you need to create a MySQL user for your database. Scroll down to the MySQL Users section and provide a username and password for your new database user.

Create MySQL user

Now you need to give this user permissions to access and modify the database you created earlier. Simply scroll down to the ‘Add user to database’ section and select your database and the user you just created.

Add user to database

After that, click on the ‘Add’ button to continue.

You will be asked to select privileges for the user. Go ahead and select ‘All Privileges’ checkbox and then click on the ‘Make changes’ button.

Grant privileges

Now your database is ready to be used for your staging website.

Next, you need to open a new browser tab and visit enter the subdomain of your staging site like this:

https://yoursubdomain.example.com/installer.php

Don’t forget to replace yoursubdomain with the actual subdomain and example.com with your own domain name.

This will launch the Duplicator installer wizard.

Duplicator installer wizard

The installer will look for the archive file. You need to check the terms and conditions checkbox and click on the next button to continue.

Now, the installer will ask you to enter your WordPress database information.

Your host will likely be localhost. After that, you will enter the details of the database you created for your new domain name in the earlier step.

Connect database

Once done, click on the next button to continue.

Duplicator will now unpack your WordPress database backup from the archive into your new database.

Next, it will ask you to update the site URL or Path. You shouldn’t have to change anything since it automatically detects the URL of your new subdomain and its path.

If it doesn’t, then you can change the URL to your new subdomain. After that, click on the next button to continue.

Update URLs if needed

Duplicator will now finish the migration.

You can click on the ‘Admin Login’ button to enter the WordPress admin area of your website on the new staging site.

Now you have your staging site set up. Let’s protect it by adding password protection to your subdomain.

Head over to your hosting account’s cPanel dashboard and click on the directory privacy icon.

Directory privacy

Next, you need to select your subdomain folder and then select the option to ‘password protect this directory’ checkbox. You will be asked to provide a name for this setting, and then enter a username and password.

Password protect your staging site

Click on the save button to store your settings. Your staging site will now be hidden behind the password protection.

You can now work on your staging site and make any changes you want.

Manually Deploy Staging Site to Live

After you are ready to deploy changes from your staging site to the live server, you will follow the same steps described above.

Simply create a new Duplicator package on your staging site and download the Installer and Archive files to your computer.

Next, you need to head over to your live site and create a complete WordPress backup (you can use Duplicator to create a complete backup as well).

Once you are done, you will need to delete all WordPress files and folders from your live website. This means your WordPress site will be down for a while.

Finally, follow the instructions above to run the Duplicator installer wizard to import staging site to live server.

As you can see, the last method is not the best method at all. You should avoid this at all costs. We recommend using a reliable hosting provider like Bluehost, SiteGround, or WP Engine that offers built-in staging site features.

We hope this article helped you learn how to easily create a staging environment for your WordPress site. If you run into any issues, check out our ultimate guide to fixing the most common WordPress errors.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

1k Shares
Share
Tweet
Share
Pin
Popular on WPBeginner Right Now!
  • How to Start Your Own Podcast (Step by Step)

    How to Start Your Own Podcast (Step by Step)

  • How to Fix the Error Establishing a Database Connection in WordPress

    How to Fix the Error Establishing a Database Connection in WordPress

  • Checklist

    Checklist: 15 Things You MUST DO Before Changing WordPress Themes

  • Revealed: Why Building an Email List is so Important Today (6 Reasons)

    Revealed: Why Building an Email List is so Important Today (6 Reasons)

About the Editorial Staff

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi. Trusted by over 1.3 million readers worldwide.

The Ultimate WordPress Toolkit

186 Comments

Leave a Reply
  1. Lynda Joy says:
    Mar 11, 2016 at 7:05 am

    Hi,

    I just did the first five or so steps of this, and then got lost at “upload your WordPress content to. So now I have completely messed up my site and I would like to know how to undo what I have done.

    Thanks.
    – Lynda

    Reply
  2. Rachel says:
    Jan 13, 2016 at 6:33 am

    Thanks so much for this – I am very much a beginner but trying to figure out how to do these things myself so I can launch a new design by first using a test site in order to get it right. I have managed to follow your instructions perfectly until this part:

    “After copying your database, you need to copy your WordPress files, plugins, themes, and uploads. First download a fresh copy of WordPress from WordPress.org. Upload the contents of WordPress to your staging site. Note, do not run the WordPress install yet”

    Can you please advise as to how this is done or direct me to another instruction article? I can’t seem to find out how to do it otherwise. Many many thanks in advance

    Reply
  3. Sanket D. says:
    Dec 10, 2015 at 12:41 pm

    So I’ve managed to create my staging environment successfully — I’ve all my media, themes, plugins, everything else properly transferred. However, I’d made some changes to my theme (not through any codes, but through the theme’s inbuilt settings — basic stuff like a custom logo (which I can see in my media library), theme color, homepage layout, etc. These changes are the only thing that for some reason are missing from my staging site. Anybody knows why this might be?

    Reply
    • byberkan says:
      Jan 13, 2016 at 5:27 pm

      I’m hoping you can find the solution. Same problem exists for me.

      Reply
  4. Joe says:
    Dec 6, 2015 at 1:02 pm

    It seems we have to do the steps in here after we have our theme, plugin etc.

    Reply
  5. Mark Park says:
    Nov 10, 2015 at 4:25 am

    Great article! Just one thing that isn’t clear to me.

    If I have the current non-wordpress website on a domain name example.com and I want to build a new website using WordPress and develop it on a staging environment on a sub-domain dev.example.com – is this possible?
    Can I make a sub-domain dev.example.com and install WP on the same server used by the current non-WP website?
    Later when the website is finished I want to connect my WP developed site with the domain name example.com.

    Thank you for your help.

    Reply
    • WPBeginner Support says:
      Nov 10, 2015 at 10:58 am

      Yes this is possible. Make sure you block search engines on your development subdomain.

      Reply
      • Maria says:
        Jan 9, 2016 at 2:23 am

        Thanks for a Very helpful article! I am in a similar situation as Mark, however my current website is a WordPress site. Can I still develop the redesigned website on a staging site within a sub domain? And if so do I have to create a new database?

        Reply
        • byberkan says:
          Jan 13, 2016 at 2:50 pm

          You really didn’t read the article, do you?

  6. Benito says:
    Oct 30, 2015 at 7:05 am

    Hello, great article, but what if I don’t want to use XAMPP, and I just want to use a subdomain as a staging site and then push changes to live? What would be the best way to deploy the changes?

    Reply
  7. Raj says:
    Oct 3, 2015 at 12:08 pm

    Will this process create a Database User and add it to the database we created while copying giving it all privileges by itself? or do we need to create a database user at some point?

    Reply
    • Raj says:
      Oct 4, 2015 at 8:13 am

      Okay I tried it.. both ways.
      Once I created the database user before installing wordpress on the staging site and it worked. The other time around, I didn’t and got the issue “We were able to connect to the database server (which means your username and password is okay) but not able to select the a*******_ata_d2db database.”

      That to me means that one has to create a user manually, only copying database won’t do. Right?

      Reply
      • Sanny says:
        Feb 2, 2016 at 1:47 am

        Raj, I see the same error (“Can’t select database”). How did you fix it ?

        Reply
      • Scott says:
        Jan 16, 2017 at 2:00 am

        Hopefully you guys figured this out, but just to leave this here for others to find, you do indeed need to create a database user (which is not clear in this article). While using Bluehost, I had to do about three steps. First step is to use the MySQL Database cPanel to get access to the list of MySQL databases. Once there, I could see that the new staging database that I had copied using phpMyAdmin per the article, did not have a privileged user assigned to it. So, I created a user, but then discovered that the user I created had too many characters (16 is the max). Once I got that straightened out, I then had to Add this user to a database using the same MySQL page. As part of this assignment step, I was able to select “ALL PRIVILEGES” to make this user a privileged user for this new staging database. Once that was all setup, I was able to configure WordPress to connect up to the staging database.

        Reply
  8. Gayle says:
    Aug 19, 2015 at 1:05 pm

    Terrific resource! Reached a WP staging breaking point and then found this. Lifesaver! Thank you! Only things I’d add would be some meta information for newbies like me. : )

    Reply
  9. LizP says:
    Aug 18, 2015 at 8:03 am

    Yikes, too hard for me!

    Reply
  10. Deborah says:
    Aug 10, 2015 at 1:48 pm

    Thanks for the tutorial. I seem to be stuck on one of the very first steps. When clicking go after changing the URL’s in SQL, I get a message of ‘# MySQL returned an empty result set (i.e. zero rows)’
    This is how I’ve entered the data:

    UPDATE wp_options SET option_value = REPLACE(option_value, ‘http://www.example.co.za/wp’, ‘http://staging.example.co.za’);
    UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, ‘http://www.example.co.za/wp’, ‘http://staging.example.co.za’);
    UPDATE wp_posts SET guid = REPLACE(guid, ‘http://www.example.co.za/wp’, ‘http://staging.example.co.za’);
    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘http://www.example.co.za/wp’, ‘http://staging.example.co.za’);

    Can anyone please help me with this?

    Thanks

    Reply
  11. Andreas Kofoed says:
    Jul 9, 2015 at 5:35 am

    Hi,

    First of all thanks for an amazing tut on this.

    I’ve encountered one problem so far and that is when I try to enter my subdomain through www.staging.example.com. I get this message: err_connection_timed_out ???

    Reply
    • Andreas Kofoed says:
      Jul 9, 2015 at 8:46 am

      Hi,

      I figured this out as I was due to some table prefix.

      Now my staging.mysite.com is up and running, but the styling and layout is totally different.
      How do I do, so my files in my child theme applies to the current theme???

      It seems like it is missing a lot of pictures, css and some basic settings?…

      Reply
  12. Patrick says:
    Jul 3, 2015 at 8:50 pm

    Thanks for this great tutorial!

    I’m finding that after setting everything up, comments on the live blog are now going to the sub-domain staging blog. I can’t find anything in the settings that explains this behavior. Do subdomains perhaps take precedence for some reason?

    Any ideas?

    Reply
    • Jennifer Filgate says:
      Feb 16, 2017 at 1:14 pm

      Perhaps when you ran the operation to update the URLs in your database you performed it on your live site’s database instead of the new staging site’s database? You have to select the staging site’s database after you create it before you run the operation. Maybe you missed that selecting step.

      Reply
  13. Arjun Singhal says:
    May 11, 2015 at 4:48 am

    I got errors regarding SSL certificates. I am a newbie when it comes to using Git and the command prompt on my Mac. So I couldn’t get to syncing everything like I wanted.

    Also, how it appears is that the steps are good to sync the local disks files to the server – changes in the theme folder etc.

    However, there is no syncing mechanism highlighted for the MySQL server changes in the case of WordPress.

    Reply
  14. Evan says:
    May 8, 2015 at 4:56 pm

    I don’t know. This just seems really confusing.

    So, a Git Bucket is like an intermediary between your local computer and the hosted dev server? For example, if I have website.com then I create dev.website.com then I create an account and empty repository in Git Bucket then I create an empty folder on my local computer, and I edit files locally and sync them to the Git Bucket repository and then how do I commit to the live site? Is there any connection and control to the live site? It seems like from here, you sync your Git Bucket repository to the dev.website.com

    Then what? I wish this article had a diagram to understand how this all works. It might make sense to you guys because you do it all day, but for the first time, this is a dizzying experience. Especially since multiple points in this setup failed and I had to go about custom fixing each one. At this point, I have created dev.website.com, copied all files from the live site to it, copied the database, connected it in, logged into the dev.website.com wordpress site, made sure all is cool, but now … I am lost as to what I do next.

    In your article, you ask us to INIT a local directory on our computer. Well, I’m trying out Git Bucket’s SOURCE TREE, which by the way looks great. But now what? Any help on what is the procedure from here? What’s the logic to all this?

    I create a folder on my local drive, it syncs to a Git Bucket Repository so that people can develop collaboratively. But who uploads the changes to the dev.website.com server? Don’t users need to be able to do that to see live changes on the server? So how does that all connect?

    And how do you update the final changes to the live website once you’re ready? Man I’m confused. I spent 3 days getting this setup and I can’t figure out this next step, because I don’t understand how that all works.

    Any help?

    Reply
    • Oscar says:
      Nov 17, 2015 at 11:00 pm

      Hi Evan, although I am sure you figured it out by now as its months later, I figured it may help others with the same question. After you have committed your code to version control, you would move your changes over to the server of your choice (dev/staging/production) using the deploy feature. This is described in the section above titled, “Deploying Changes From BitBucket to Staging Site”. Hope this helps clarify!

      Reply
  15. vjohnson says:
    Apr 25, 2015 at 12:40 pm

    I am truly a beginner at this, and I have read the article a couple of times. I think my environment is almost set up, the piece that appears to be missing is in the install step. The directions say copy the files but do not install “yet”, when in this process do I run an install of wp? I am unsure if some of the issues that i ran into are due to my host which is hostgator or something that I’ve done wrong. Any input would be great.

    What is happening at this point is no errors but nothing is rendered on at the url for my staging area.

    Reply
  16. Martin says:
    Apr 21, 2015 at 6:50 pm

    Nice article. Although, the whole way, you’re talking about setting up a development site on the server as a subdomain. But at the end your using a local Xammp server.

    How would you setup a test environment on the server where the doomain is hosted? Do you use bitbucket for it as well?

    Thanks, cheers.

    Reply
  17. Alberto Serrano says:
    Apr 20, 2015 at 2:46 pm

    Hello , I made a staging site successfully but my live site already had a little problem with a plug in , I contacted the developer and he asked for my admin credentials , following your advice on other article I gave him log in credentials to my staging site and he fixed the issue , to make the changes on the live site he told me to import the database from the staging site to the live site , my concern is the sql changes I made to the staging database , if I copy the database isn’t my live site going to redirect to the staging site now ? I can’t find the SQL queries to delete them
    Thanks

    Reply
    • WPBeginner Support says:
      Apr 21, 2015 at 9:00 pm

      See our tutorial on how to update URLS when moving WordPress site.

      Reply
  18. isagani says:
    Apr 16, 2015 at 11:53 pm

    hey,

    nice article, i followed all instructions and gave me a clean view process on using git and staging environment. hope all experienced people do what you did so many can step forward from beginner to advance.

    Thanks a lot.

    Isagani

    Reply
  19. Kristof Bernaert says:
    Mar 30, 2015 at 4:01 pm

    Just a perfect article that helped me to setup the whole thing.

    My staging environment is on the same shared linux hosting, just in another directory.
    I used this also as the repo for git.

    With Coda, I’m working online in that staging. As I save changed files (mainly css), I see instantly the updates.
    So I don’t need the local files on my laptop.

    But how to checkout those remote files under the staging folder, without fetching a local copy?

    Thx!
    Kristof

    Reply
  20. bcall says:
    Feb 9, 2015 at 3:40 pm

    Thanks for the article!

    I have one problem, though: I have two databases and am not sure which one (or maybe both) is connected to my live site. I checked the wp-config.php file and it’s linking to a database with a different name, one that does not appear in my database list (in phpMyAdmin). Is it possible that the database was renamed?

    Reply
    • Nick Jubrey says:
      Apr 6, 2015 at 7:48 pm

      Look in your wp-config.php file that’s where wp is directed to that particular database, the db your using will be listed there.

      Reply
  21. Tiffany Johnson says:
    Jan 5, 2015 at 10:06 pm

    I’m having some issues with the dev site recognizing my theme and content. I copied over the following files prior to running my installation of wordpress, however the pages and content are still not being recognized. I checked the files and my media is in the uploads file, my themes are present, as are my plugins, but none of them are recognized in the actual wordpress site.

    /wp-content/uploads
    /wp-content/themes
    /wp-content/plugins

    Any suggestions on what else I can try? Thanks!

    Reply
    • Nicole says:
      Feb 24, 2016 at 11:35 am

      I’m having this same problem. Any suggestions of what to try? I followed the instructions to copy those files from one folder to the other, and it is in the right place.

      Reply
  22. Brad Scott says:
    Dec 25, 2014 at 4:17 am

    @WPBeginner,

    For my case.

    Create subdomain: staging.example.com
    Create Document Root: public_html/staging

    Need to run the following SQL queries:
    The NEW_URL should be http://example.com/staging not http://staging.example.com

    Login: http://example.com/staging/wp-login.php

    Cheers & Thanks

    Reply
    • byberkan says:
      Jan 13, 2016 at 5:26 pm

      Brad, so that means you are not using the subdomain. You are just using it as a subdirectory which you didn’t have to create a subdomain to use that..

      Reply
  23. Paula Lay says:
    Nov 23, 2014 at 12:01 am

    Thank you so much for this tutorial! The step-by-step instructions are perfect for someone who hasn’t done this before. I encountered a snag where I was getting an error message after creating a subdomain (something like a problem configuring the DNS). For anyone that encounters this problem – clear your browser cache and cookies, and then you will see the correct screen. Took me days to figure this out (I gave it a few days because I thought it would take 24hrs or so for the domain to propogate).

    Reply
  24. Random Dev says:
    Nov 11, 2014 at 8:03 pm

    Whoa. Wouldn’t it be simpler, cutting down on quite a few steps and reducing the technical nature of this process, to just use a backup plugin with a migrator (search/replace the database) function… instead of copying the databases manually, *and* instead of using Git/Bitbucket? Or am I not understanding something?

    Reply
    • Cannonpult says:
      Mar 13, 2015 at 3:24 pm

      For smaller sites, maybe. But plugins like Duplicator start to fail or have significant diminishing returns on larger sites. For example, if you were working on a site with a lot of media, Duplicator will never be able to transfer everything. You will get warning messages and have to leave media behind in the transfer.

      Yes, this tutorial would be overkill for a small blog. But it’s absolutely the way you should go for say, a woocommerce site with 3,000 products (including images and custom data).

      The other big consideration is frequency of changes. Some sites are fairly hands-off after they go live. Maybe you just update core + plugins and perform a few minor changes per year. Other sites might require weekly or even more frequent changes. If this were the case, it would become a pain to wait for backups and then drop a backup on the new site (crossing your fingers that it works each time). By using the method described in the tutorial, you can commit smaller changes at a time right after testing them.

      Reply
  25. mgiulio says:
    Oct 9, 2014 at 6:03 am

    Excellent article.I was looking for info about best practices for wordpress staging sites. The additional section on the git-bitbucket workflow is very much appreciated.

    Reply
  26. nwesource says:
    Aug 12, 2014 at 5:13 pm

    Fantastic tutorial, thank you! I know WPEngine.com has a staging site built into their hosting options which seems fantastic although I haven’t tried it just yet. Are there any other easier options you know of to setup and operate a staging site, with more of a plugin functionality like WPEngine? They literally have a clone to staging button and a clone to live button that makes this seem like a process from the 80’s LOL… :-)

    Amazing tutorial, thank you for enterprise level content!

    Reply
  27. WPBeginner Staff says:
    Jul 10, 2014 at 8:54 pm

    No you first need to extract the zip folder and then upload the contents of wordpress directory to your staging site.

    Reply
  28. Tony Leary says:
    Jul 10, 2014 at 6:54 am

    Can someone elaborate on this one step:

    “First download a fresh copy of WordPress from WordPress.org. Upload the contents of WordPress to your staging site. Note, do not run the WordPress install yet.”

    I read that as “1) download WordPress zip file from WordPress.org and 2) upload .zip file to /staging folder via File Manager.” However, I don’t think that’s correct.

    Reply
    • bcall says:
      Feb 9, 2015 at 4:49 pm

      You can upload the .zip file and then extract the contents within file manager.

      Reply
  29. WPBeginner Staff says:
    Jun 21, 2014 at 2:41 am

    Most probably your subdomain is not configured correctly.

    Reply
    • Julius says:
      Jun 26, 2014 at 12:23 pm

      I actually found out the problem..and it’s been resolved…however, I am unable to add images to my library….anyone else experienced this challenge.

      Reply
      • Hans Lindgren says:
        Aug 4, 2014 at 9:47 am

        Is the wordpress install running on Windows?
        (If so, you need to grant Modify NTFS permissions to IUSR on C:WindowsTemp)

        Reply
  30. Julius says:
    Jun 18, 2014 at 3:32 pm

    Awesome tutorial…however, after I attempt to log into the staging site I am taking to the “Opps! Google Chrome could not find http”. What am I doing wrong?

    Reply
  31. Julius says:
    Jun 18, 2014 at 1:43 pm

    This is really a great tutorial and something I been wanting to do for quite sometime. My problem is that when I visit the WP login screen it appears that the styling from my theme isn’t applied. Is this normal? Also, when I enter my credentials from the live site into the fields for the staging site, it doesn’t log me in. It’s taking me to the “Oops! Google Chrome could not find http”. Am I doing something wrong?

    Reply
  32. Sloan Stewart says:
    Jun 13, 2014 at 3:29 pm

    Very helpful article. Only issue I have is that when it begins discussing version control, it switches from focusing on the alternate wordpress installation on the server to a local installation on one’s machine.

    I am assuming one would build your site locally (I am using WAMP) and then use Git/Bitbucket & Ftploy to update your dev/staging wordpress install? That would mean one would have three versions of the wordpress site at all times [Production, Dev/Staging, Local].

    How does one ensure your local wordpress install remains compatible with the database and other configuration on the server? Or is there a way to utilize Git/Bitbucket/Ftploy on the server without having to involve a local copy of your wordpress site.

    Reply
  33. Karlis says:
    Jun 2, 2014 at 4:27 am

    Do you need to create user for your freshly created phpmyadmin database?

    Reply
  34. WPBeginner Staff says:
    Jun 1, 2014 at 9:59 pm

    No this tutorial is not written for WordPress multisite.

    Reply
  35. Aathi says:
    Jun 1, 2014 at 1:40 am

    Hi,
    Will the above process works for wordpress multisite ?

    Reply
  36. Cheryl S. says:
    May 26, 2014 at 11:19 pm

    Because I typically develop in a staging area on my server and then move it to the clients server to go live, rolling back to previous versions is nearly impossible. This article has made me seriously consider implementing version control with Git and Bitbucket. Thank you so much for this tutorial.

    Reply
  37. WPBeginner Staff says:
    May 25, 2014 at 3:32 pm

    Yes this would be a better approach.

    Reply
    • Mimi Bondi says:
      May 25, 2014 at 5:28 pm

      Thank you. Is it safe to simply copy all the files from the ”test” site and paste them over the current ”live” files via FTP? Or is there more to it?

      Reply
  38. Mimi Bondi says:
    May 24, 2014 at 8:56 pm

    Would this be the best way to duplicate a website, set it up with a new theme/content then copy it over to the current live website?
    I want to change theme but it’s quite a big job so instead of activating it then frantically trying to fix things for days, I’m looking for a way to copy my current site, change it all ”in the background” then make the new one live. Please let me know if it’s even possible?

    Reply
  39. Mimi Bondi says:
    May 24, 2014 at 8:26 am

    Once i have my site exacty how i want it in the staging environment,
    is there a safeway to copy those files to the real live site?

    My goal is to change themes but because this would involve quite a bit of
    setting up, i am looking for a way to do this safely and only replace my
    current content with the new content when it’s ready (without changing
    permalinks and SEO hopefully). Is that possible?

    Reply
  40. Larry says:
    May 12, 2014 at 8:38 pm

    Excellent article….I was able to follow the instructions step-by-step and complete the creation of development site on my hosting server. Kudos to the writter.

    Reply
  41. Mike says:
    Apr 2, 2014 at 7:05 pm

    I’m having some issues when I try to run the SQL queries to change the references to the staging site. I am receiving the following error:

    ”
    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘1
    UPDATE wp_options SET option_value = REPLACE(option_value, ‘http://example’ at line 1
    ”

    My SQL query is as follows:

    ”
    1
    UPDATE wp_options SET option_value = REPLACE(option_value, ‘http://example.com’, ‘http://dev.example.com’);
    2
    UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, ‘http://example.com’, ‘http://dev.example.com’);
    3
    UPDATE wp_posts SET guid = REPLACE(guid, ‘http://example.com’, ‘http://dev.example.com’);
    4
    UPDATE wp_posts SET post_content = REPLACE(post_content, ‘http://example.com’, ‘http://dev.example.com’);
    ”

    As I missing a step or do I have something incorrect in query? Thanks for your help.

    Reply
    • Mike says:
      Apr 2, 2014 at 7:22 pm

      Never mind, I figured out my issue. Feel free to delete this comment.

      Reply
      • djramc says:
        Mar 6, 2016 at 4:35 am

        i have the same problem. could i ask how did you solve this issue?
        thanks by advance

        #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘)’ at line 1

        Reply
    • WPBeginner Support says:
      Apr 3, 2014 at 2:49 pm

      You need to remove numbers from lines, replace example.com with your live site url and dev.example.com with your development or staging site URL.

      Reply
  42. Bevis Larsen says:
    Apr 1, 2014 at 6:53 am

    This article is most useful for the user who want to make advance wordpress application

    Reply
  43. Brad E says:
    Mar 27, 2014 at 8:56 pm

    I followed the directions and am able to get the staging site to work. However, every link, page and even login revert to the live site not the staging site. How do I fix this?

    Reply
    • WPBeginner Support says:
      Mar 28, 2014 at 6:58 pm

      you need to change site address and wordpress address. To do that you need to run this SQL query in phpmyadmin for the database of your staging site:

      UPDATE wp_options SET option_value = REPLACE(option_value, ‘ORIGINAL_URL’, ‘NEW_URL’);
      UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, ‘ORIGINAL_URL’, ‘NEW_URL’);
      UPDATE wp_posts SET guid = REPLACE(guid, ‘ORIGINAL_URL’, ‘NEW_URL’);
      UPDATE wp_posts SET post_content = REPLACE(post_content, ‘ORIGINAL_URL’, ‘NEW_URL’);

      Don’t forget to replace the original url with the url of your live site and new url with the URL of your staging site.

      Reply
      • Brad E says:
        Mar 28, 2014 at 7:08 pm

        OK – it works now. I had to run the query several times, but got it to work. The problem I am having now, is that all of the theme settings are missing. The header, widgets, background, etc. are set to the theme’s defaults. I am not sure how to update the settings to what the live site has. I copied the 3 files from the wp-content directory. Thanks for the outstanding article and support.

        Reply
  44. ROHIT says:
    Mar 1, 2014 at 5:05 am

    Hi,

    As usual, just read you well written article on staging. I’ve got only question in mind right now and is that if there is any changes made in database while working on any project then do I need to upload it seperately on server from local environment whereas files would automatically get deployed via ftploy.

    Cheers and Thanks.
    Keep your good work up.

    Reply
  45. Clive says:
    Feb 23, 2014 at 1:07 pm

    If I make changes on my local WP project, I understand files in my theme are changed, and those are uploaded to staging via BitBucket/Ftploy. What about the database/tables from my local project? I don’t understand why those aren’t also included? Or would the database/tables in staging be updated based on theme changes that are uploaded? Thanks!!

    Reply
    • WPBeginner Support says:
      Feb 23, 2014 at 5:30 pm

      Clive, in your BitBucket repository you can only store your WordPress files. FTPloy simply syncs those files to your staging site.

      Reply
      • Paul Sweany says:
        Jul 16, 2015 at 3:10 pm

        What do you recommend for when database changes are made? Let’s say I create a new page; should I just re-import the database on the dev server after I make changes to it on my local copy? Also, moving it from dev to live, any recommendations other than manually importing it and running a search and replace to fix the URL?

        Reply
  46. Glen Clay says:
    Feb 23, 2014 at 1:04 pm

    As usual, great article and right when I need it. Keep up the great work! On another note, I am on my iPhone and that annoying floating black ‘Trending’ bar keeps getting in the way of me commenting. This article benefited me so much that I went through the several tries it took for me to comment.

    Reply
    • WPBeginner Support says:
      Feb 23, 2014 at 5:36 pm

      Glen, thanks for your feedback. We will look into it.

      Reply
  47. Eben says:
    Feb 22, 2014 at 8:45 am

    I wasn’t really mentioned on what to do with the staging database and how to transfer the changes to the live database, especially if your client has been making changes to the live site while you’ve been making changes to the staging site and there are changes in both databases.

    This is one area of staging environments with wordpress that I haven’t been able to get my head around.

    Reply
    • WPBeginner Support says:
      Feb 25, 2014 at 4:47 pm

      Staging is basically for development, when working on themes or plugins. We imported the database only so that we have actual data to test with. It is not supposed to be a synchronized mirror of your live site.

      Reply
      • Juliana Maggioli says:
        Aug 5, 2014 at 5:23 pm

        I don’t know if is the same as Eben’s question, but everything is going fine till…: upload/transfer the staging content to the live site. supposing everything is perfect in the staging, how do i make all this perfect structure/content be the live site, without risks?

        Reply
  48. Damien Carbery says:
    Feb 21, 2014 at 12:44 pm

    I have started using WP Migrate DB (http://wordpress.org/plugins/wp-migrate-db/) to convert urls and paths in the DB. It will also convert urls and paths that are in serialised data.

    So I copy the files to the staging server and create a database and then export the live db via WP Migrate DB and import it to the new database via phpMyAdmin.

    The biggest issue is when the live site is updated before I bring the staging server db back.

    Reply
  49. Zimbrul says:
    Feb 21, 2014 at 9:32 am

    If you have Softaculous is even easier to deploy a staging site to the live site: you can clone the site to a location within the same server.
    It’s what I’m doing: I create the staging environment and when done I just go the the list of my WordPress installs in Softaculous control panel and “clone” the site to the live location. The live location must be empty by other files for this to work.

    Reply
    • WPBeginner Support says:
      Feb 21, 2014 at 3:33 pm

      Thats another way to do it.

      Reply
    • Giacomo Ardesi says:
      Jan 24, 2016 at 10:55 am

      Hey Zimbrul, can you give some more details about Softaculous and how you used it please?

      Reply
    • Giacomo Ardesi says:
      Jan 24, 2016 at 5:00 pm

      Hey Zimbrul, could you please give some more details on how you use Softaculous to clone your WP staging site? Thank you!

      Reply
  50. M Asif Rahman says:
    Feb 21, 2014 at 7:48 am

    Thanks Syed & The Team, that’s one of the most complete and understandable for normal readers Staging Guide for WP. Nicely done.

    Reply
1 2 3 »

Leave a Reply Cancel reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

Over 1,320,000+ Readers

Get fresh content from WPBeginner

Featured WordPress Plugin
RafflePress - WordPress Giveaway and Contest Plugin
RafflePress
Giveaway and Contest Plugin for WordPress. Learn More »
How to Start a Blog How to Start a Blog
I need help with ...
Starting a
Blog
WordPress
Performance
WordPress
Security
WordPress
SEO
WordPress
Errors
Building an
Online Store
Useful WordPress Guides
    • 7 Best WordPress Backup Plugins Compared (Pros and Cons)
    • How to Fix the Error Establishing a Database Connection in WordPress
    • Why You Need a CDN for your WordPress Blog? [Infographic]
    • 30 Legit Ways to Make Money Online Blogging with WordPress
    • Self Hosted WordPress.org vs. Free WordPress.com [Infograph]
    • Free Recording: WordPress Workshop for Beginners
    • 24 Must Have WordPress Plugins for Business Websites
    • How to Properly Move Your Blog from WordPress.com to WordPress.org
    • 5 Best Contact Form Plugins for WordPress Compared
    • Which is the Best WordPress Popup Plugin? (Comparison)
    • Best WooCommerce Hosting in 2020 (Comparison)
    • How to Fix the Internal Server Error in WordPress
    • How to Install WordPress - Complete WordPress Installation Tutorial
    • Why You Should Start Building an Email List Right Away
    • How to Properly Move WordPress to a New Domain Without Losing SEO
    • How to Choose the Best WordPress Hosting for Your Website
    • How to Choose the Best Blogging Platform (Comparison)
    • WordPress Tutorials - 200+ Step by Step WordPress Tutorials
    • 5 Best WordPress Ecommerce Plugins Compared
    • 5 Best WordPress Membership Plugins (Compared)
    • 7 Best Email Marketing Services for Small Business (2020)
    • How to Choose the Best Domain Registrar (Compared)
    • The Truth About Shared WordPress Web Hosting
    • When Do You Really Need Managed WordPress Hosting?
    • 5 Best Drag and Drop WordPress Page Builders Compared
    • How to Switch from Blogger to WordPress without Losing Google Rankings
    • How to Properly Switch From Wix to WordPress (Step by Step)
    • How to Properly Move from Weebly to WordPress (Step by Step)
    • Do You Really Need a VPS? Best WordPress VPS Hosting Compared
    • How to Properly Move from Squarespace to WordPress
    • How to Register a Domain Name (+ tip to get it for FREE)
    • HostGator Review - An Honest Look at Speed & Uptime (2020)
    • SiteGround Reviews from 4196 Users & Our Experts (2020)
    • Bluehost Review from Real Users + Performance Stats (2020)
    • How Much Does It Really Cost to Build a WordPress Website?
    • How to Create an Email Newsletter the RIGHT WAY (Step by Step)
    • Free Business Name Generator (A.I Powered)
    • How to Create a Free Business Email Address in 5 Minutes (Step by Step)
    • How to Install Google Analytics in WordPress for Beginners
    • How to Move WordPress to a New Host or Server With No Downtime
    • Why is WordPress Free? What are the Costs? What is the Catch?
    • How to Make a Website in 2020 – Step by Step Guide
Deals & Coupons (view all)
Photocrati Coupon
Get 20% off on Photocrati premium photography theme for WordPress.
Helpie WP
Helpie WP Coupon
Get 20% OFF on Helpie WP premium WordPress knowledgebase wiki plugin.
Featured In
About WPBeginner®

WPBeginner is a free WordPress resource site for Beginners. WPBeginner was founded in July 2009 by Syed Balkhi. The main goal of this site is to provide quality tips, tricks, hacks, and other WordPress resources that allows WordPress beginners to improve their site(s).
Join our team: We are Hiring!

Site Links
  • About Us
  • Contact Us
  • FTC Disclosure
  • Privacy Policy
  • Terms of Service
  • Free Blog Setup
  • Free Business Tools
Our Sites
  • OptinMonster
  • MonsterInsights
  • WPForms
  • SeedProd
  • Nameboy
  • RafflePress
  • Smash Balloon

Copyright © 2009 - 2021 WPBeginner LLC. All Rights Reserved. WPBeginner® is a registered trademark.

Managed by Awesome Motive | WordPress hosting by SiteGround | WordPress CDN by MaxCDN | WordPress Security by Sucuri.