In this tutorial you will learn how to quickly use Vagrant for PHP development.
Vagrant is a wrapper around the virtualization software such as VirtualBox for configuring and creating virtual development environments. Perfect for PHP development. You can have a development environment that is identical to your production environment. So far you’ve probably used setups like Xampp, Wampserver or similar all-in-one package that contained PHP, MySQL and Apache on your development machine. That is all fine but with Vagrant you will become more flexible and you can share your development environment with your teammates.
Before installing Vagrant, you must install a virtualization software such as VirtualBox. Installation of Vagrant is very simple and works on all popular operating systems - Windows, Mac and Linux. Download Vagrant or install it with package manager for your Linux distribution.
All the commands in this tutorial must be typed in your terminal:
$ mkdir vagrant-project
$ cd vagrant-project
Boxes in Vagrant are base images of virtual machines.
With command vagrant init
you get a Vagrant configuration file called Vagrantfile
with instructions for Vagrant to set up your development environment and a so called base
box.
Next step after creating Vagrantfile
is adding a box. In this tutorial we’ll use Puphpet’s Debian box. Don’t let the name confuse you - it is the latest Debian box.
$ vagrant box add puphpet/debian75-x64
This downloads the base image you can use in your development environment.
To ssh into your newly added box, use the following commands:
vagrant up
starts your vagrant box. It’s equivalent to hitting the “Power ON” button on your physical machine.$ vagrant up
$ vagrant ssh
PuPHPet is a simple GUI to set up virtual machines for Web development.
When you make some changes on the box you’ve downloaded in previous steps, you will lose them when you make:
$ vagrant destroy
In order to save the entire box you can make a new box based on the current running virtual machine. This creates a package named package.box
:
$ vagrant package --output package.box
You can than add this package to your base boxes:
$ vagrant box add your_name/distribution package.box
And use it like before:
$ vagrant init your_name/distribution