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.

This entry was posted in deployment and tagged , , . Bookmark the permalink.

About Mark Jaquith

Hi there! My name is Mark Jaquith (JAKE-with). I’m a Lead Developer on the WordPress web publishing platform, used by tens of millions of people around the world. My personal goal is to bring intuitive, low-cost web publishing to everyone who has anything to say.
  • http://twitter.com/newrelic NewRelic

    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 patrick@newrelic.com if interested. rockin, Patrick

  • Joel Parker Henderson

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

  • Topher

    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?

    http://2012.grandrapids.wordcamp.org/

  • Craig

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

  • http://wpprobusiness.com/ Adam W. Warner

    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:
    http://halfelf.org/2012/forever-alone-no-more/

    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;)

    • http://robbiemitchell.com Robbie Mitchell

      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? :)

      Robbie

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

  • http://www.itarsenal.com/ Rob

    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?

  • Keith Devon

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

  • Manni King

    Hello, this is a good article. Thanks. Google

  • Chris

    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.

    • Chris

      ah nevermind. I solved it.

  • Larry

    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.