Announcing WP Stack

My name is Mark Jaquith. I’m one of the lead developers on the WordPress core software, and am a technical consultant to Knewton. The marketing team at Knewton wanted their WordPress-powered site to have a more professional development approach using version control; a real staging and deployment system (with the ability to roll back); and fast, scalable redundancy. I helped create that system for them. They loved it, and after talking to other companies with similar needs for their WordPress-powered sites, they thought it would be useful to turn this system into a generic WordPress deployment system that anyone could use to run a professional WordPress site.

Today, we’re announcing the result of that effort: WP Stack.

What it is

WP Stack is a set of deployment scripts using Capistrano, and a series of drop-in WordPress plugins that work in tandem with this system to perform commonly desired tasks on professional sites, such as rewriting media files to a CDN or serving WordPress multisite uploads directly through Nginx. It supports both production and staging environments, as well as file/database snapshotting from production to staging, so that you can test your code changes on fresh data.

The commands for tasks like deployment, rollback, and database/file syncs, are short one-liners such as cap production deploy or cap staging db:sync. And while code changes (like templates or plugins) require commits and deployments, the regular WordPress workflow is unchanged… so content creators can post, upload media, and edit content to their heart’s content without needing to know what’s going on under the hood.

WP Stack can be used to deploy your existing WordPress site repository, but you’ll get best results if you start with WordPress Skeleton, a complementary project that gives you a nicely laid out starter WordPress Git repository, that not-coincidentally is pre-wired to work well with WP Stack.

Who this is for

This project will have the most benefit for professional WordPress sites, where “doing it live” just isn’t an option. But there’s no reason it can’t be used for personal or small business websites too. Many organizations know that they should be using version control and a deployment system, but they don’t quite know where to start. It is my hope that WP Stack (and WordPress Skeleton) will help lower the barriers and lead to more organizations using professional development and deployment techniques for using the software that powers their public face.

The future

We’re not done! The roadmap for WP Stack includes things like multi-server uploads syncing, Puppet/Chef manifests with full Nginx configs, and a Vagrant config for easier local development. If you’d like to get involved, head on over to GitHub.

I’d also like to thank Knewton for sponsoring the development of WP Stack. It’s great to be able to work with a company that can see the value of open source contribution.

What's this? You're reading N choose K, the Knewton tech blog. We're crafting the Knewton Adaptive Learning Platform that uses data from millions of students to continuously personalize the presentation of educational content according to learners' needs. Sound interesting? We're hiring.

29 thoughts on “Announcing WP Stack

  1. Hola! Good stuff, and makes a ton of sense. We’d love to be included as part of the default rig for this, and provide monitoring, management and instrumentation for folks that use this. email if interested. rockin, Patrick

  2. Can you consider creating a Linux Ubuntu juju charm for this?

  3. This is so exciting I can hardly stand it. I have so many questions though, since I’ve not used capistrano before. Where is the best place to really learn how to do this properly? I’m guessing I won’t be the only WordPress dev that needs to know.

    Could you pretty please come to WordCamp Grand Rapids and show us?

  4. Pingback: WeekPress WordPress week in review. Wordcamp, Securing WordPress, More

  5. Pingback: Dev to Production: How to Deploy WordPress Code via Version Control

  6. Is there an equivalent toolset for mere mortals? Or might there be a stripped-down version of WP Stack in some distant future?

  7. Hi mark, this sounds very cool and just what I have been looking to implement on a couple of client sites that started slow, but have turned into rather large installs that now need, as you say, a more professional staging environment.

    I came to this post after seeing WP Stack mentioned in the comments on this post by Ipstenu:

    I have to second Craig’s comment below and ask if there are plans to continue development on this in a way that people like me (and presumably Craig) who are non-programmer/server admin/version control people, but who are regularly building and managing both standard and Multisite environments with updates, redesigns, etc.

    If this kind of staging environment could be packaged as a plugin or service, I’m guessing there is a definite target market of users like me who would be anxious to put it to use.

    If this is something you’re considering for the future, I would be happy to donate my tutorial and documentation skills as a way to contribute. And of course, I would certainly pay through the nose too;)

    • Hi Adam,

      I’m a marketing lead at Knewton and was the one who pushed for company support in sponsoring Mark’s work to generalize and release WP Stack beyond development of our custom solution.

      I agree with you and Craig that it would be even more awesomer if it were polished down to a plugin-style implementation. (As a marketing guy with my own side projects, I’d certainly love to spin up a more secure site on AWS.) May I interest you in picking up where we’ve left off to sponsor further development with Mark? 🙂


      P.S. Mark’s still working on the roadmap features mentioned above… stay tuned!

  8. Pingback: WP Engine launches seamless integration with git | WPCandy

  9. Pingback: » WP Engine launches seamless integration with git

  10. Pingback: A Free wordpress newsletter » WP Engine launches seamless integration with git

  11. Pingback: WP Engine launches seamless integration with git

  12. Pingback: WP Engine launches seamless integration with git | WP Assistant

  13. Pingback: WP Engine launches seamless integration with git - Dennis Flint High Country

  14. Pingback: WP Engine launches seamless integration with git - Web Design Startup - Free Advice and Great Resources | Web Design Startup - Free Advice and Great Resources

  15. Pingback: WP Engine launches seamless integration with git | Web Designer Bacolod City | Ricky Noel Diancin Jr. Webmaster | Wordpress Expert

  16. Hmm where do we get started? I dabble on the server side/linux but mostly interested if this is doable on shared hosting environments, less sever command line and more plug and playable?

  17. Pingback: Our Blog | WP Engine launches seamless integration with git

  18. Pingback: VT TICs – WP Engine launches seamless integration with git

  19. Is there a good tutorial out there for getting set up with WordPress Skeleton and WP Stack?

  20. Pingback: Speaking at WordCamp Louisville 2012

  21. Hi. I tried installing this, but once I ran cap deploy:setup, it spit out:

    /Library/Ruby/Gems/1.8/gems/capistrano-2.14.2/lib/capistrano/configuration/variables.rb:122:in `method_missing’: undefined method `loadFile’ for # (NoMethodError)

    It doesn’t seem to like the loadFile method in misc.rb. Did anyone else run across this problem? Thanks.

  22. This is awesome guys…I miss rails’ rake db:migrate and always wish wp had it. Your work will be difficult but this is so important for taking wp to the next level. Thanks for converting this to something more people can use.

  23. So it looks like this is a really good way to deploy WP. How is the current version of this? is it still being maintained and is it still the preferred way of deploying WP. Where can I get the best instructions for using WP stack with capistrano? please help thanks!

  24. I just created a gem for Capistrano 3 with WordPress, it makes the following easy with a click of a button..

    * wordpress:db:push – Exports your local database and imports it on remote server

    * wordpress:db:pull – Exports your remote database and imports it on your local

    * wordpress:db:deploy – Uploads the .sql in your version control and imports in on remote

    * wordpress:content:sync – Synchronises your local and remote wp-content/uploads folder so that you have all assets

    Note: It doesn’t do symlinking (easy with Cap3) or install WordPress (easy with Composer).

    Would love some feedback 🙂

Comments are closed.