Installing VVV

Overview Overview

Varying Vagrant Vagrants is an open source Vagrant configuration focused on WordPress development. VVV is MIT Licensed.

VVV is ideal for developing themes and plugins as well as for contributing to WordPress core.

This article will walk you through the steps to install VVV on your Mac, PC, or Linux computer.

Top ↑

Installing VVV Installing VVV

VVV requires recent versions of both Vagrant and VirtualBox (or similar) to be installed.

Vagrant is a “tool for building and distributing development environments”. It works with virtualization software such as VirtualBox to provide a virtual machine sandboxed from your local environment.

1. Downloading Vagrant 1. Downloading Vagrant

Navigate to the Downloads page on the Vagrant site. There are a variety of download packages available depending on your operating system, whether that is Mac OS X or Windows. If you’re running Linux, packages are available for 32- and 64-bit Debian and CentOS distributions. Choose the one that’s right for you to download

Depending on which one you download, the installer package will be anywhere from 65mb to 150mb, so it will take a few minutes for the download to complete. When it’s done, run the installer.

Top ↑

2. Downloading VirtualBox 2. Downloading VirtualBox

Navigate to the Downloads page on the VirtualBox site. Just like with Vagrant, there are several different download packages available depending on your operating system. Choose the one that’s right for you.

Depending on your operating system, the installer package will be anywhere from 60mb to upward of 120mb, so again, it might take a few minutes to download. Once the download is completed, run the installer.

Top ↑

The First Vagrant Up The First Vagrant Up

Once you’ve installed Vagrant and VirtualBox (or similar), there are a few further steps you’ll need to take to get VVV up and running.

Top ↑

1. Install the vagrant-hostsupdater plugin 1. Install the vagrant-hostsupdater plugin

Note: While this step is not a requirement, it does make the process of starting up a virtual machine nicer by automating the entries needed in your local machine’s hosts file to access the provisioned VVV domains in your browser.

If you choose not to install this plugin, a manual entry should be added to your local hosts file that looks like this: 192.168.50.4 vvv.dev local.wordpress.dev local.wordpress-trunk.dev src.wordpress-develop.dev build.wordpress-develop.dev

To install the vagrant-hostupdator plugin, run the following from your command-line tool (such as Terminal, CYGWIN, or similar):
vagrant plugin install vagrant-hostsupdater

Top ↑

2. Install the vagrant-triggers plugin 2. Install the vagrant-triggers plugin

Note: This step is also not a requirement. When installed, vagrant-triggers allows for various scripts to fire when issuing commands such as vagrant halt and vagrant destroy. If vagrant-triggers is not installed, VVV will not provide automated database backups.

By default, if vagrant-triggers is installed, a db_backup script will run on halt, suspend, and destroy that backs up each database to a dbname.sql file in the {vvv}/database/backups/ directory. These will then be imported automatically if starting from scratch. Custom scripts can be added to override this default behavior.

To install the vagrant-triggers plugin, run the following from your command-line tool:
vagrant plugin install vagrant-triggers

Top ↑

3. Clone or extract the Varying Vagrant Vagrants project into a local directory 3. Clone or extract the Varying Vagrant Vagrants project into a local directory

  • git clone git://github.com/Varying-Vagrant-Vagrants/VVV.git vagrant-local
  • OR download and extract the repository master zip file to a vagrant-local directory on your computer.
  • OR download and extract a stable release zip file if you’d like some extra comfort.

Top ↑

4. Start up VVV 4. Start up VVV

  • In a command prompt, change into the new directory with cd vagrant-local
  • Start the Vagrant environment with vagrant up
  • Be patient as the magic happens. This could take a while on the first run as your local machine downloads the required files.
  • Watch as the script ends, as an administrator or su password may be required to properly modify the hosts file on your local machine.

Once the provisioning script has run its course, visit http://vvv.dev in your browser. You should see a listing of all the default sites VVV created, as well as links to other administration-related tools:

Top ↑

5. Create GitHub Repo (optional) 5. Create GitHub Repo (optional)

Pull requests on GitHub provide a convenient way to receive feedback and also to share the patch for your contributions. You can add “.diff” to any pull request URL and GitHub will return a diff file which you can then attach to a Trac ticket. You can also just add a link to the pull request in a Trac ticket comment. There is currently no Git repo clone for develop.git.wordpress.org located on GitHub, so you have to set this up yourself:

  1. Have VVV set up (above).
  2. Swap out your SVN repo with a Git one in VVV via: vagrant ssh -c /srv/config/homebin/develop_git (or if you have SSH’ed into Vagrant already, just run develop_git)
  3. Create an empty “wordpress-develop” on GitHub (you can name this however you like).
  4. Run these commands to set this new repo as your origin remote: cd ...vvv/www/wordpress-develop && git remote set-url origin https://github.com/YOURNAME/wordpress-develop.git && git remote add upstream git://develop.git.wordpress.org/
  5. Create a feature branch based on the Trac ticket (e.g. 12345) you want to work on: git checkout -b trac-12345
  6. Add commits for your fixes and git push (see also Caching your GitHub password in Git to prevent having to re-enter your GitHub password each time).
  7. Go to GitHub and open a pull request to your master branch.
  8. With the newly-created pull request in hand, copy the URL and paste it into a new comment on WordPress Trac and solicit for feedback. Ideally you should also attach a diff of your patch, and again you can do this just by adding “.diff” to any pull request URL, for example: https://github.com/xwp/wordpress-develop/pull/61.diff