My name is Michael Bastos and I’m a Polyglot Software Engineer out of San Diego and I help run the Advanced WordPress Group (AWP) on Facebook at over 1300+ members, a Google Plus at over 70+ members and Meetup.com at over 120+ members.
My day job is writing software for the military while I work on my own startup in my free time, but I’ve been involved with the WordPress community since 2009 and am still in love with the people and the friends I’ve made along the way so I’ve wanted to help push the development envelope for WP thus why I created AWP almost two years ago.
Recently I had the pleasure of releasing my open source Chef deployment tool for WordPress called WP-Chef. For those who aren’t familiar with Chef, it’s essentially a DevOps or automated deployment framework built in Ruby that consists of a number of scripts called Recipes that allow you to very quickly and efficiently build an entire server installation in a matter of minutes. I’ve included detailed instructions on how to install Vagrant and use WP-Chef as it stands so far.
As a long time Linux Only Developer I’ve always had a habit of building automated Bash scripts to prevent me from having to do repetitive work (A vestige of my Perl development days). A few years ago as my personal client base began to grow I started moving away from hosted and VPS solutions and decided to do everything in the cloud, in this case I now work almost exclusively with Amazon Web Services (AWS) but still do some work on RackSpace Cloud from time to time.
When I made the full transition I realized that I needed to speed up my server automation process so I started researching DevOps frameworks like Chef and Capistrano and decided on Chef because of my heavy Ruby background. I’ve done talks at WordCamp NYC as well as WordCamp Las Vegas on getting familiar with AWS but never had the time to release any of my personal Chef Scripts until now.
Please keep in mind that WP-Chef is still Beta software, migrating scripts that I built for personalized use and getting it to work on a variety of systems takes time and I’ve integrated Vagrant to handle both the deployment of local builds as well as remotely building a server on Amazon. I’ve also started adding code for RackSpace deployment and will role that out soon.
So what works? Well right now if you clone the WP-Chef code base you’ll have the option between setting up an Apache or Nginx configuration, the Apache option works great and can be used to test deploy right now if you wish. The Nginx configuration is still a work in progress, I have Nginx, PHP-FPM/APC and MySQL installing and running perfectly in the script, the only thing that’s missing at this point is the WordPress installation and setup itself. Once the Nginx option is done I’ll start working on a combination configuration that allows you to run Nginx on port 80 and Apache on port 8080, for those of you who run servers, you’ll understand how valuable this is for implementing .htaccess rules with Nginx.
The real secret sauce will be the final piece of WP-Chef, remote S3 and RDS deployments, this is the version that I’m excited to release but I have to get a stable Nginx and combination version working first. The distributed deployment will allow you to assign a remote database service like RDS and a remote upload service like S3 allowing you to deploy multiple servers for the same website and a single private git repository, in terms of being able to scale up or down a single site, you can understand the benefits of creating an unlimited number of servers within minutes for a single installation of WordPress.
Why am I writing this article then? Other projects exist like WP-Stack which uses Capistrano and I want to see more of these kind of ease of deployment tools. My hope is that other people out there are as interested in the success of WP-Chef as I am and would be willing to jump in and help, this is all open source software anyhow and my personal Start-up has nothing to do with WordPress so I see this project as more giving back to a community that’s given me so much already. The more people I can have looking at the code or just testing the deployments and telling me where the bugs are the better the software gets. If all of this seems exciting to you then message me on twitter @bastosmichael or you can follow me on github. In the end when you combine WordPress, Vagrant and Chef, professionally deploying your websites really does start to feel like magic…