Homestead (written by Laravel)

Homestead is a pre-built Vagrant environment for PHP development (though it can be used for HTML5 and Javascript only apps as well).  It was made by the team that brought you Laravel, but it’s not limited to Laravel alone.  I’ve used it for Laravel, CakePHP and straight PHP applications.

Vagrant allows you to create lightweight, portable development environments.  It’s very powerful, and can use VirtualBox, VmWare Workstation, Digital Ocean, and AWS as the Virtual Machine (VM) engine.

Homestead comes with (as of this writing):

  • Ubuntu 14.04
  • PHP 5.5
  • Nginx
  • MySQL
  • Postgres
  • Node (With Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Laravel Envoy
  • Fabric + HipChat Extension

The beauty of Vagrant is that you can add any other packages you want through provisioners.  You can use Puppet, Chef and even shell scripts to add/remove/upgrade software.

If you really want to isolate your development environment, this is the way to go.  For example, if you work in teams each developer can develop on a local Homestead box with the same software configuration.  If you’re managing your database changes with a migrations package, then each developer can make their own database changes independent of each other.  When a feature is ready for testing, then the person testing can fire up their Homestead environment and pull the latest changes.  They can run the migrations and begin testing.  Since the testing environment is identical to the development environment, issues found outside of code issues will be minimized.

If you want to demo a feature or software application, using Homestead would be a great way to do it.  Whoever is giving the demo can fire up Homestead, pull the latest production code and run the migrations.  The application will be at the same version as production.

And, you can run multiple applications in one instance of Homestead.  Simply add a new shared folder and Nginx site configuration to the Homestead.yaml file and update your hosts file!

I use Homestead for my own side projects and for small projects at work.  I highly recommend it as it has an extremely low barrier to entry, and is supported by the team that writes Laravel.  It was the easiest Vagrant solution I’ve used, I had no issues and it was up and ready to go in seconds.