Deploying WordPress

Deploying WordPress: What’s your Workflow?

I recently posted some general tips and tricks for WordPress beginners on how to edit WordPress files. The discussion came up in the comments about workflow when it comes to setting up a fresh WordPress install or deploying to a site live.

Below I’ll share the tools and workflow I use.

Please note there are affiliate links in this post for products I use and love. You can read my full disclosure here (if you care). 🙂

Situations for Deploying WordPress

Here are some situations where you need to set up WordPress, clone or migrate a site:

  1. Totally new project (local install)
  2. Deploy local to live
  3. Migrate/clone live site to development site.
  4. Migrate/clone development site to brand new live site.
  5. Push changes from development site to an existing live site.

I’ll break out each of these below and which tools I use for which job

Totally New Project

For a local development environment, I used to use MAMP and a single WordPress install. Before you scream at me for just a single install, I’ll explain why: I could drop my entire library of themes and plugins into that install without replicating them a million times.

But then I screamed at myself and how terrible one install was. About this time I met Gregg Franklin at WordCamp Las Vegas and he ran me through a demo of Desktop Server. I fell in love with it.

The beauty of it is that I can set up my Perfect (or “Blueprint”) Install (i.e. already have my basic settings , favorite plugins, etc.) and copy it all over the place. So, when I need to start a new project, I fire up Desktop Server, click a button, and voila! It gives me a fresh local install of WP based off my Blueprint. In all of two minutes I’m up and running with a local development site.

You can use the free version of Desktop Server for this.

Deploy Local to Live

Desktop Server is still my choice here, but you’ll need to upgrade to their premium license ($99.95) to use the direct deploy to live server feature.

The process is ridiculously easy (unless you’re pushing to a WPEngine server, in which case there are extra hoops to jump through). Desktop Server deploys both your database and your files and updates all instances of your site URL along the way. The premium version also supports MultiSite, if that’s something you need.

Now, Migrate DB Pro (which I’ll talk more on shortly) has the ability to push a local database up to a staging or production database. I discovered Migrate DB Pro after Desktop Server, so I haven’t tried out that feature yet.

Migrate Live Site to Development Site

Migrate DB Pro
I like Migrate DB Pro so much that I’m an affiliate for them. Use coupon code SUPER20 to save 20%.

Depending on the nature of a project, I might never do a local install and just develop on a designated development site. In this case, I want to take an existing site in its entirety and pull it over to a development site where I can tinker.

Enter Migrate DB Pro, which is easily the best $199 I’ve spent all year. An important distinction to note for this software… it’s Migrate DB Pro – not Migrate All Site Files Pro.  This tool is best for moving databases from one spot to another, although they recently added a Media Files add-on that pulls over a site’s media gallery (super handy!). You’ll need to manually upload any themes or plugins you want.

So, my workflow looks like this: On the development server, I install WP, activate the same theme and plugins being used on the live site, and lastly do a database pull using Migrate DB Pro. Working in that order means that when the data comes in, it’ll automatically put widgets where they belong and restore any plugins or settings from the live site. If you work in the reverse order and bring over your data and then install theme/plugins, you’ll miss out.

Migrate Development Site to a Brand New Live Site

A year or so ago I started using ManageWP‘s site clone feature to copy a site (files + database) from one spot to another. While I loved the idea of the clone feature, it turned out a little clunky. For instance, the automated search/replace for dev URL to live URL was incomplete (URLs in widgets needed to be manually updated). Also, the clone feature seemed to only work on small sites. Larger sites timed out or just crapped out. I still like ManageWP for general site management tasks and scheduled backups, but I no longer use it for cloning sites.

I make the distinction of a “brand new live site” here because I want to emphasize that I’m doing a full clone of the development site to the new site – any existing data on the live site be damned and overwritten!

Migrate DB Pro is the winner here. Note that I do need a WP install plus theme and plugin files already set up on the live server, but once that’s done I can pull in the dev database and 1 minute later have my entire dev site replicated perfectly on my live server.

Push changes from development site to an existing live site

It’s confession time. This is the weakest area as far as a deployment routine. Let’s say I’m building a new theme for a client. The end deliverable is an installed theme on their server with their data. Doing a database overwrite isn’t ideal, but neither is waiting until the theme is live on the client’s site to go through all the settings and options ideal either.

For simple sites, there’s no true deployment. I just upload new theme files, activate a maintenance plugin, and work as fast as I can to bring the site back online (typically an hour or less). Can’t believe I just confessed that out loud.

For complex sites, I again go with Migrate DB Pro, but I ended up pulling the latest db files over to development, completing the site setup, and then pushing everything back over to live (so, overwriting the database). That means minimal downtime for the live site (typically 10 minutes or less). But, something in my gut doesn’t feel right about this and a database syncing option would be better.

Keep Learning & Evolving…

Interested in seeing the full development cycle of a WordPress site from setting up a local development environment to pushing the code live and then making changes and doing it all over again?

Check out my WP Development Workflow course.

* Featured image photo credit to U.S. Army

63 thoughts on “Deploying WordPress: What’s your Workflow?”

  1. So I did some more research last night and came across a product called WampDeveloperPro (www.devside.net). According to its specs and features list, it supports SSL (self-signed) and somehow allows you to install SSL certificates. Of course the problem here is, this is really “stretching” what I know how to do… not that that is a bad thing, but it’s hard to evaluate when learning the technology at the same time…

    So is ANYONE familiar with using this product?

  2. Hey Everyone,

    With regard to DesktopServer and its ability to do SSL, while you are correct that the current iteration dust not support it, Version 4.0 will make it possible. We are at the tail end of alpha testing right now and are just weeks away from the beta testing which we feel will be a short period (but as with all software, may be subject to change).

    I realize that does not solve your immediate need but it might help to know that it’s coming down the pike. 🙂

  3. Well Marc that was all of the “nudge” I needed – just purchased the premium version. I would be happy to help beta test the SSL feature if you’d like when the time comes.

  4. MigraDB Pro ? I mean, it takes 1 minutes to dump and move the DB from one server to another.

    The problem is not the DB but the Media Files,etc. Those things generated dynamically on the live site.

  5. Pingback: Eliot Berriot | Blog | Fabpress : développer en local avec Wordpress

  6. I’m looking for a solution to push changes form dev to prod also. Seems to not existing yet. Thanks for your post!

    1. Hey Mathieu,

      DesktopServer is great for pushing local to production. Beanstalk is another deployment tool I’ve started using that let’s you push a git (or svn) repository to a live server.

      Cheers,
      Carrie

  7. Hi Carrie, I just discovered WP Stagecoach (https://wpstagecoach.com/) which handles that last piece of the puzzle: merging changes from staging to live. They’re currently in beta and free at the moment so I’ve signed up to give it a whirl this month.

    If you have a chance to check it out, I’d be interested in getting your thoughts on WP Stagecoach.

  8. Hi Carrie,

    There certainly is a lot of love going around for Desktop Server! A lot of people I have been talking with at WordCamp London this weekend like it to. I think you’ve pushed me into giving it a spin. Here is what I do:

    I use MAMP Pro which makes it reasonably fast to set up local sites, with ‘proper’ urls: i.e. mynewsite.dev or whatever. I do have to create a database manually using the built in phpMyAdmin but this all takes less than 5 minutes. Add on the 5 minutes for the world famous WordPress install process and I am good to go in about 10 minutes all in. Not exactly light speed, but fast enough.

    I always start a new entry in 1Password for any new site too.

    I create a ‘one-size-fits-all’ wp-config file. I configure this to work with my local, staging and live servers. Set this once and I can then forget about it and get on with the ‘fun’ stuff. Here is an example of my wp-config:

    http://ifamily.co.uk/wp-config

    By setting the site url in the config means I don’t need to mess around with a find and replace in the WordPress database. If I add links or images as I develop I just give them relative urls instead of the full URL including domain name. i.e: example.com/my-new-link becomes /my-new-link

    So when it comes to deploying the site. I used good ‘ole sftp and a phpMyAdmin export and import of the database. Not exactly cutting edge, but it’s tried and tested. 😉

Leave a Comment

Your email address will not be published. Required fields are marked *

Carrie Dils uses Accessibility Checker to monitor our website's accessibility.