Vagrant is an open source tool that makes it easy to configure and distribute virtual development environments. The project was started in 2010 by Mitchell Hashimoto and John Bender who wanted to create a way to standardize development environments for teams. Vagrant was designed to put an end to the “works on my machine” frustration that often surfaces when teams develop on different environments.
Because it’s so lightweight and portable, many WordPress developers have adopted Vagrant for development, which has resulted in different tools and configurations for various project needs. We’ve collected a few WordPress-related Vagrant resources here that will help you get started.
Varying Vagrant Vagrants
Varying Vagrant Vagrants is one of the most widely used and best-supported Vagrant configurations for WordPress development. Originally created by the folks at 10up, the open source VVV project became a community organization earlier this year. The company still contributes to its development and maintenance, helping to make it one of the most stable options for setting up a Vagrant-based WordPress development environment. VVV provides a comprehensive configuration for developing themes and plugins as well as for contributing to WordPress core.
VVV Site Wizard
If you’re a VVV user who is often creating and removing sites, then the VVV Site Wizard may be able to save you some time. It completely automates the creation of new sites as well as the teardown of old ones.
WordPress Theme Review VVV
If you’re a VVV user who spends quite a bit of time developing WordPress themes, this is a quick Vagrant setup that adds all the necessary tools for reviewing themes. WordPress Theme Review VVV creates a fresh WordPress site, installs and activates the Developer and Theme-Check plugins, and imports the Theme Unit Test data. Check out our tutorial for a quick walkthrough on setting it set up.
Primary Vagrant is a configuration created by Chris Wiegman. It’s similar to VVV but with a few important differences: it uses Apache instead of NGINX and Puppet instead of Bash. Wiegman used VVV and Puppet as a base for a new Vagrant configuration for WordPress plugin or theme development. Primary Vagrant supports Apache and MySQL on Ubuntu and allows for use of different major PHP versions (currently 5.3 – 5.5), which can be easily changed with one line of code.
VagrantPress is a simple configuration that sets up a WordPress development environment using Apache with Vagrant/Puppet. It’s geared toward developing themes and plugins. VagrantPress currently does not allow for multiple installations but Chat Thompson, the project’s creator, plans to add more features related to automating the provisioning and maintenance of multiple WordPress installations.
Chassis uses Vagrant and Puppet to create a development environment running Ubuntu, Ngnix, PHP 5.4, Imagick, MySQL, Xdebug, WP-CLI, and WordPress, a setup which more closely matches many managed WP hosting environments. Chassis makes it easy to add additional testing domains via a YAML configuration file. It also has support for WordPress multisite, which can be enabled in config.local.yaml or the project configuration file.
WordPress and Vagrant Google Group
WordPress and Vagrant is a public Google group that you can join to post basic or advanced questions about using Vagrant for development. This can be a helpful resource for troubleshooting some unique issues concerning Vagrant-based WordPress development environments. Most of the threads seem to be about working with VVV, but the group isn’t specifically limited.
WordPress Vagrant Boxes
WordPress Vagrant Boxes is a Vagrant configuration that uses Apache. Although the web server is preconfigured to look for WordPress in a specific location, WordPress Vagrant Boxes is unique in that it doesn’t checkout or install WordPress at all. It’s up to you to unpack and install a WordPress ZIP, checkout from SVN, or clone from git.
VCCW (Vagrant + Chef + CentOS + WordPress) was configured for those developing WordPress plugins, themes or websites. It includes 17 customizable constants for setting the WordPress version (or beta release), language, hostname, subdirectory, admin credentials, default plugins, default theme, multisite, SSL and other options. These constants give you a lot of flexibility in tailoring your development environment to your specific needs.
Throwaway WordPress VMs with Vagrant and Ansible
Throwaway WordPress VMs uses Vagrant and Ansible to automate the process of creating and provisioning local virtual machines for WordPress development. The scripts were designed for use with Ubuntu, but you can select any version of Ubuntu you wish to use, or a base box from vagrantbox.es.
WordPress Machine sets up WordPress on a LAMP stack. It also includes Composer, WP-CLI, and Forge for WordPress theme setup and asset compilation (SCSS, CoffeeScript). This configuration runs WordPress as a submodule using WordPress Boilerplate, which means that themes, plugins and uploads are separated from the WordPress installation so that WP can be easily updated as a git submodule.
The developer who created Monkey Rocket used much of the code from VVV, which he found installed more things than he needed for a simple development environment. This Vagrant configuration is basically a stripped down version of VVV that will set you up with the latest stable version of WordPress at local.wordpress.dev on your machine.
WordPress Kickstart is a Vagrant development environment provisioned by Puppet. It was created for use with production stacks that are hosted on DigitalOcean. Once you enter your DigitalOcean API credentials into the vagrantfile, you’ll have a command available for working on production deployment and provisioning. This command allows you to create a new droplet, setup your SSH key for authentication, create a new user account, and run the provisioners configured. You can easily switch back and forth from production to development by removing .vagrant/ from your project’s root folder.