About the Speaker• Originally from Cape Town South Africa been living and working in London for 6 years.• Developing with PHP on the lamp stack since 2002.• Currently work at Comic Relief on their scalable fundraising platform.• Follow me on twitter @jeremyquinton
Red Nose Day is back 15th March 2013 so look out for it http://www.rednoseday.com
How does a newbie install php?http://www.php.net/manual/en/install.php
Some solutions HomebrewPackage Manager onLinux APT, YUM ETC
EcoSystem around the Lamp Stack has changed drastically Linux/Windows/Mac OSX Apache MySQL PHP PHP has over 150 extensions Cassandra Varnish Memcache Redis Nginx ZeroMQ CouchDB RabbitMQ MongoDB Gearman This is not a exhaustive list
The concept of a production snowflake in many ways can be applied to ourdevelopment environments - http://martinfowler.com/bliki/SnowflakeServer.html
Spot the difference is similar to Dev/Prod Parity Concept“Keep development, staging, and production as similar as possible” - http://12factor.net/
Summary of Past and Present problems Setting up the modern dev environment, which has many moving, parts isnt straightforward Uniqueness Switching between projects with different dependancies is difficult Local dev environments differ significantly from production
The Present: A solution to these problems $ vagrant up @mitchellh creator and maintainer of vagrant http://www.vagrantup.com/
What is the Vagrant Idea/Concept?“A tool to transparently manage all the complex parts of modern developmentwithin a virtual environment without affecting the everyday workflow of thedeveloper too much.” - http:/.vagrantup.com Provider - Vagrant Provisioner virtualisation
Basic Vagrant Workflow How vagrant worksOnce Configured one command to bring up your development environment. $ vagrant upTo access the virtual machine via ssh $ vagrant sshWhen you finished work for the day $ vagrant haltWhen you done with the dev environment $ vagrant destroy [vn-name]Provision the virtual environment $ vagrant provision
Vagrant command line optionsOpen source project written in Ruby, a command line tool. Supported on most majoroperating systems.
How vagrant worksVagrant instance is managed with Vagrantfile which is Ruby syntax.28 configuration options.
Three methods to create a box ﬁle Three methods create a box fileDownload a box file from http://www.vagrant.esUsing the instructions off http://vagrantup.comVeeWee https://github.com/jedi4ever/veewee
Visualisation of a vagrant workflow Windows Developer VCS Mac Osx Developer VagrantFile Linux Developer Chef Solo Scripts 1. vagrant add box box_name package.box 2. vagrant up 3. vagrant provision Deployment tool Staging Production
Multi VM Environments Accurately modeling a separate web and database server within the same development environment. Modeling a cluster of machines, and how they behave together. Testing a load balancer configuration, or the effects of “unplugging” a machine.
Vagrant 1.1plugin system is completely re-written
DemoDownload Virtualbox 4.1.22http://download.virtualbox.org/virtualbox/4.1.22/Download vagrant package or install via ruby gemshttp://downloads.vagrantup.com/tags/v1.0.5Add 188.8.131.52 vagrantdemo.com to /etc/hostsGet the projectgit clone http://www.github.com/jeremyquinton/vagrant_democd vagrant_demovagrant up --no-provisionvagrant provisionBrowse to vagrantdemo.com