vagrant for php - php usergroup berlin...$ vagrant up [default] importing base box...

37
Christoph Lühr @chluehr / @bephpug 2013 "Rags to Riches" Vagrant for PHP

Upload: others

Post on 02-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Christoph Lühr@chluehr / @bephpug 2013

"Rags to Riches"

Vagrant for PHP

Page 2: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

basilicom

Page 3: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously
Page 4: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Image source: http://www.flickr.com/photos/stinajonsson/3932774410 CC BY-NC 2.0

Page 5: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

"Create and configurelightweight, reproducible, and portable

development environments."

Page 6: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

"Infrastructure as Code"

- FTW!

Page 7: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Development

Page 8: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Own Workstation(LAMP, XAMP, MAMP, ...)

Page 9: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Shared System(Linux Dev. Box in LAN)

Page 10: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Virtual Machine(VMware, VirtualBox, ...)

Page 11: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Problems!

● OSX / Windows / Linux● 32 / 64 bit● Conflicts!● Docs / Setup● Versions / Dependencies

● ⇒ "Works on my box!"

Page 12: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Vagrant&& Virtual Box

Page 13: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

apt-get install \vagrant

(Packages for Windows, OSX, too)

Page 14: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Vagrantfile(Ruby)

Page 15: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Vagrant::Config.run do |config|

# Base Box Name config.vm.box = "precise64"

# Base Box URL

config.vm.box_url = ↵ "http://files.vagrantup.com/precise64.box"

# Configure / Install Packages, Application

config.vm.provision :shell, ↵ :path => "setup.sh" end

Page 16: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

setup.sh(bash / shell)

Page 17: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

#!/bin/bash

apt-get update

apt-get install libapache2-mod-php5apt-get install php5-mysql

echo "date.timezone = Europe/Berlin" >> /etc/php5/conf.d/date.ini

service apache2 restart

Page 18: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

vagrant command

Page 19: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Demo

Page 20: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

vagrant up

1. Downloads Base Box Image

2. Creates VM from Base Box

3. Configures VM Guest

4. Boots VM

5. Installs / Configures Packages

.

Page 21: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

$ vagrant up

[default] Importing base box 'precise64'...[default] Matching MAC address for NAT networking...[default] Clearing any previously set forwarded ports...[default] Forwarding ports...[default] -- 22 => 2222 (adapter 1)[default] -- 80 => 8080 (adapter 1)[default] Creating shared folders metadata...[default] Clearing any previously set network interfaces...[default] Running any VM customizations...[default] Booting VM...[default] Waiting for VM to boot. This can take a few minutes.[default] VM booted and ready for use![default] Mounting shared folders...[default] -- v-root: /var/www[default] Running provisioner: Vagrant::Provisioners::Shell...stdin: is not a tty==== BEGIN: Vagrant-setup.sh ====

Page 22: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

vagrant command up halt reload destroy ...

Page 23: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Features!

Image source: http://www.flickr.com/photos/rietje/76566707/ CC BY 2.0

Page 24: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Multiple-VMs(Apache / DB-Master / DB-Slave)

Page 25: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

VMware, AWS EC2, ...(Providers / Platforms)

Page 26: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Puppet / Chef(Different Installers/Provisioners)

Page 27: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Custom Base Boxes(Speed up Setup)

Page 28: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Drawbacks

Page 29: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Slow File System(vboxsf, NFS, CIFS, ... SSD!)

Page 30: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

RAM

Page 31: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

"Rags to Riches"

Success Story!

Page 32: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Documented, RepeatableStable Process, mirrors Live-System

Page 33: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Development Speed++(Setup, new Colleagues, less fiddling)

Page 34: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Open Source ProjectsBenefits: easier evaluation / collaboration

Page 35: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

1. git clone

2. vagrant up

3. ...

4. Profit!

Page 36: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

ContactChristoph LühreMail: [email protected], [email protected] Twitter: @chluehr

Slides licenseAttribution-NonCommercial-ShareAlike 3.0http://creativecommons.org/licenses/by-nc-sa/3.0/

Thanks!

Questions?

Page 37: Vagrant for PHP - PHP UserGroup Berlin...$ vagrant up [default] Importing base box 'precise64'... [default] Matching MAC address for NAT networking... [default] Clearing any previously

Links

● Vagranthttp://www.vagrantup.com/

● Roundcube Fork with Vagrantfilehttps://github.com/chluehr/roundcubemail