Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vagrant for WordPress Development
Search
Lew Goettner
October 20, 2012
Technology
7
990
Vagrant for WordPress Development
An overview of Vagrant, virtualization, and how it could be used to ease WordPress development.
Lew Goettner
October 20, 2012
Tweet
Share
More Decks by Lew Goettner
See All by Lew Goettner
Consistent Local Development with Vagrant & Chef
lewg
4
1.1k
Other Decks in Technology
See All in Technology
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
150
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
150
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.6k
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
1
130
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
620
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
420
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.2k
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
4.9k
GitLab Duo Agent Platform × AGENTS.md で実現するSpec-Driven Development / GitLab Duo Agent Platform × AGENTS.md
n11sh1
0
120
Deno・Bunの標準機能やElysiaJSを使ったWebSocketサーバー実装 / ラーメン屋を貸し切ってLT会! IoTLT 2026新年会
you
PRO
0
300
なぜ今、コスト最適化(倹約)が必要なのか? ~AWSでのコスト最適化の進め方「目的編」~
htan
1
110
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6k
Building Adaptive Systems
keathley
44
2.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
270
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
Marketing to machines
jonoalderson
1
4.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
53
Crafting Experiences
bethany
1
48
A designer walks into a library…
pauljervisheath
210
24k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
Transcript
Vagrant for WordPress Development Lew Goettner @lewg #WCPhilly October 20,
2012 Saturday, October 20, 12
about me Saturday, October 20, 12
LEWIS JOSEPH GOETTNER THE @lewg Saturday, October 20, 12
Saturday, October 20, 12
By JSquish (Own work) [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons Saturday,
October 20, 12
By TexasDex at en.wikipedia [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC-BY-SA-3.0 (http://creativecommons.org/ licenses/by-sa/3.0/)],
from Wikimedia Commons Saturday, October 20, 12
Saturday, October 20, 12
Wharton Computing Saturday, October 20, 12
PHP WordPress ColdFusion Windows Ubuntu/Red Hat MSSQL MySQL Ruby Saturday,
October 20, 12
Supporting non-technical users Slower adoption of new technology Legacy systems
There is always room for a better way! When you’re stuck in the middle.. Saturday, October 20, 12
storytime Saturday, October 20, 12
“Here’s a shared dev space.” - Sysadmin the progression... Saturday,
October 20, 12
“I’ll just run it locally.” - Developer the progression... Saturday,
October 20, 12
“I’ll run it in a VM!” - Developer the progression...
Saturday, October 20, 12
“I’ll run it in a chef-configured VM!” - Developer the
progression... Saturday, October 20, 12
“I’ll run it in a chef-configured VM, based on a
post-install snapshot.” - Developer the progression... Saturday, October 20, 12
“Why don’t we all start using this?” - Boss /
Coworker / Intern the progression... Saturday, October 20, 12
“Shit.” - Developer the progression... Saturday, October 20, 12
vagrant Saturday, October 20, 12
“Vagrant uses Oracle’s VirtualBox to build configurable, lightweight, and portable
virtual machines dynamically.” - http://vagrantup.com Saturday, October 20, 12
VirtualBox Saturday, October 20, 12
“VirtualBox is a general-purpose full virtualizer for x86 hardware, targeted
at server, desktop and embedded use.” - virtualbox.org Saturday, October 20, 12
“VirtualBox is a general-purpose full virtualizer for x86 hardware, targeted
at server, desktop and embedded use.” - virtualbox.org FREE! Saturday, October 20, 12
“I love the command line.” - Lew Saturday, October 20,
12
Assumption: You’ve installed both VirtualBox and Vagrant. 3 Lines =
A Running VM Saturday, October 20, 12
% vagrant box add precise32 \ http://files.vagrantup.com/ precise32.box % vagrant
init precise32 % vagrant up 3 Lines = A Running VM Saturday, October 20, 12
% vagrant box add precise32 \ http://files.vagrantup.com/ precise32.box % vagrant
init precise32 % vagrant up Saturday, October 20, 12
Base OS Install Software for access & configuration VirtualBox Guest
Additions Base Box Saturday, October 20, 12
Built in tools for management: % vagrant box -h %
vagrant package -h Base Box Saturday, October 20, 12
VeeWee: tool for building your own https://github.com/jedi4ever/veewee Base Box Saturday,
October 20, 12
% vagrant box add precise32 \ http://files.vagrantup.com/ precise32.box % vagrant
init precise32 % vagrant up Saturday, October 20, 12
% vagrant box add precise32 \ http://files.vagrantup.com/ precise32.box % vagrant
init precise32 % vagrant up Saturday, October 20, 12
Vagrantfile = a Project Project = 1 to many VMs
Vagrantfile Saturday, October 20, 12
Text file Ruby DSL for configuring your VM(s) (no ruby
skills required) Vagrantfile Saturday, October 20, 12
% vagrant box add precise32 \ http://files.vagrantup.com/ precise32.box % vagrant
init precise32 % vagrant up Saturday, October 20, 12
vagrant up http://www.flickr.com/photos/lightningjeff/7505934038/ Saturday, October 20, 12
“There’s potential here.” -Developer Saturday, October 20, 12
“VIM is the bee’s knees!” - Developer A The Holy
Wars Saturday, October 20, 12
“Textmate would throat punch VIM!” - Developer B The Holy
Wars Saturday, October 20, 12
“Let’s fight to the death!!” - Both Developers The Holy
Wars Saturday, October 20, 12
“Let’s talk this thing to death in IRC!!” - Both
Developers The Holy Wars Saturday, October 20, 12
Vagrantfile config.vm.share_folder "web", "/var/www", "~/my-site", :nfs => true Saturday, October
20, 12
Vagrantfile config.vm.share_folder "web", "/var/www", "~/my-site", :nfs => true Identifier Saturday,
October 20, 12
Vagrantfile config.vm.share_folder "web", "/var/www", "~/my-site", :nfs => true Identifier Path
on VM Saturday, October 20, 12
Vagrantfile config.vm.share_folder "web", "/var/www", "~/my-site", :nfs => true Identifier Path
on VM Path on your workstation Saturday, October 20, 12
Vagrantfile config.vm.share_folder "web", "/var/www", "~/my-site", :nfs => true Identifier Path
on VM Path on your workstation NFS for Performace Saturday, October 20, 12
By Julius Schorzman (Own work) [CC-BY-SA-2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons
Saturday, October 20, 12
Saturday, October 20, 12
0 1 2 3 Number of Children Coffee Consuption Sleep
Saturday, October 20, 12
Saturday, October 20, 12
WordPress Convenience Strength: Saturday, October 20, 12
% vagrant box add precise32 \ http://files.vagrantup.com/ precise32.box % vagrant
init precise32 Add our base box, initialize Saturday, October 20, 12
Vagrantfile (add networking) config.vm.network :hostonly, "192.168.33.10" (uncomment that line) Saturday,
October 20, 12
% vagrant up % vagrant ssh Fire it up, SSH
in Saturday, October 20, 12
Inside the VM - Setup a LAMP Stack % sudo
apt-get update % sudo apt-get install apache2 mysql- server php5 php5-mysql % mysqladmin -u root -p create wordpress % exit Saturday, October 20, 12
Saturday, October 20, 12
Package it Up % vagrant halt % vagrant package --output
wplamp.box (spits out a wplamp.box file) % vagrant box add wplamp wplamp.box Saturday, October 20, 12
“Why did we just do that?” -You Guys Saturday, October
20, 12
Vagrantfile (in a new folder) Vagrant::Config.run do |config| config.vm.box =
"wplamp" config.vm.network :hostonly, "192.168.33.11" config.vm.share_folder "wordpress", "/var/www", "../wordpress", :nfs => true end Saturday, October 20, 12
Saturday, October 20, 12
“Mind sharing?” Saturday, October 20, 12
Vagrantfile (port forwarding) Vagrant::Config.run do |config| config.vm.box = "wplamp" config.vm.box_url
= "http://you.com/wplamp.box" config.vm.network :hostonly, "192.168.33.11" config.vm.share_folder "wordpress", "/var/www", "../wordpress", :nfs => true end Saturday, October 20, 12
Vagrantfile (port forwarding) Vagrant::Config.run do |config| config.vm.box = "wplamp" config.vm.box_url
= "http://you.com/wplamp.box" config.vm.network :hostonly, "192.168.33.11" config.vm.share_folder "wordpress", "/var/www", "../wordpress", :nfs => true end The Interwebs! Saturday, October 20, 12
“Can I take a look at that?” Saturday, October 20,
12
Vagrantfile (port forwarding) Vagrant::Config.run do |config| config.vm.box = "wplamp" config.vm.forward_port
80, 8080 config.vm.network :hostonly, "192.168.33.11" config.vm.share_folder "wordpress", "/var/www", "../wordpress", :nfs => true end Saturday, October 20, 12
Vagrantfile (port forwarding) Vagrant::Config.run do |config| config.vm.box = "wplamp" config.vm.forward_port
80, 8080 config.vm.network :hostonly, "192.168.33.11" config.vm.share_folder "wordpress", "/var/www", "../wordpress", :nfs => true end VM Saturday, October 20, 12
Vagrantfile (port forwarding) Vagrant::Config.run do |config| config.vm.box = "wplamp" config.vm.forward_port
80, 8080 config.vm.network :hostonly, "192.168.33.11" config.vm.share_folder "wordpress", "/var/www", "../wordpress", :nfs => true end VM Workstation Saturday, October 20, 12
“One more thing..” -Bill Gates Saturday, October 20, 12
“One more thing..” -Steve Jobs Saturday, October 20, 12
% vagrant destroy Saturday, October 20, 12
Saturday, October 20, 12
vagrant destroy Blow away the VM. But what’s left? Everything
required to recreate it at will! Save space, fix problems, tinker at will. Saturday, October 20, 12
? Saturday, October 20, 12
Distributing And a word of caution Saturday, October 20, 12
“VCS or GTFU” - Mark Jaquith Saturday, October 20, 12
“DVCS or GTFU” - Lew Saturday, October 20, 12
Saturday, October 20, 12
Whoops. Saturday, October 20, 12
“VCS or GTFO” - Mark Jaquith Saturday, October 20, 12
Grow the F*ck Up Used when adults are acting like
kids. - urbandictionary.com GTFU Saturday, October 20, 12
“DVCS or GTFU” - Lew Saturday, October 20, 12
“Git or get out?” - Lew meh.. Saturday, October 20,
12
“Modern version control systems make these setups insanely easy to
distribute and modify.” - Lew What I’m trying to say.. Saturday, October 20, 12
% git clone http://my-setup % vagrant up How Easy? Saturday,
October 20, 12
? Saturday, October 20, 12
Recap Powered by meme Saturday, October 20, 12
Saturday, October 20, 12
Developer - Before Local Dev? Don’t want it on all
the time. 1 VM? Mixing Libraries, Dependencies, etc. Multiple VMs: Painful to manage, GBs Saturday, October 20, 12
Developer - After A dedicated, disposable, consistent development environment... per
project! Saturday, October 20, 12
Saturday, October 20, 12
Organization - Before Fixed/shared dev? Developers like different tools Onboarding?
Long time from hire to productivity Saturday, October 20, 12
Organization - After Providing consistent local development leads to smoother
deployments, drastically shortens on- boarding time, and puts no regulations on developer tools. Saturday, October 20, 12
Saturday, October 20, 12
+ or Saturday, October 20, 12
Homer Liwag [CC-BY-SA-3.0-2.5-2.0-1.0 (www.creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons Configuration Management Saturday,
October 20, 12
config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "~/my-cookbooks" chef.roles_path = "~/my-roles"
chef.add_role "my_app_server" end Vagrantfile Saturday, October 20, 12
WordPress Convenience Strength: Saturday, October 20, 12
“Everybody is using it.” Goal: Provide easy to use directions
to setup a dev environment for non- developers. Saturday, October 20, 12
“You hacked the core?” Goal: Provide your setup to vendors
with a clear acceptance path. Saturday, October 20, 12
“You don’t run any servers?” Goal: Provide a setup to
your clients where they can play with the site in- house. Saturday, October 20, 12
“You said this worked on 3.0?” Goal: Test one plugin
or theme across multiple versions of WordPress. Saturday, October 20, 12
Install WordPress, plugins, themes, and map appropriate folders. http://github.com/lewg/wordpress-vagrant 1
Site = 1 Setup Repo Saturday, October 20, 12
In Practice Consistent Local Development for our most complicated WordPress
install. Saturday, October 20, 12
What’s it do? Creates a new Ubuntu 12.04 VM Installs
and configures all server software Apache, PHP, MySQL, Apt, Subversion Downloads & Installs WordPress Saturday, October 20, 12
What’s it do? Creates a new Ubuntu 12.04 VM Installs
and configures all server software Apache, PHP, MySQL, Apt, Subversion Downloads & Installs WordPress Saturday, October 20, 12
What’s it do? Creates a new Ubuntu 12.04 VM Installs
and configures all server software Apache, PHP, MySQL, Apt, Subversion Downloads & Installs WordPress Saturday, October 20, 12
What’s it do? Installs 30 wordpress.org plugins Installs 3 paid
plugins via mapped folder Maps in custom theme folder (own repo) Apache, PHP, MySQL Saturday, October 20, 12
What’s it do? Installs 30 wordpress.org plugins Installs 3 paid
plugins via mapped folders Maps in custom theme folder (own repo) Apache, PHP, MySQL Saturday, October 20, 12
What’s it do? Installs 30 wordpress.org plugins Installs 3 paid
plugins via mapped folder Maps in custom theme folder (own repo) Apache, PHP, MySQL Saturday, October 20, 12
What does it REALLY do? Takes a complicated and time
consuming process, and reduces it to a few minutes. Saturday, October 20, 12
Vagrant http://vagrantup.com @mitchellh VeeWee https://github.com/jedi4ever/ veewee Git http://git-scm.com/ Ruby http://www.ruby-lang.org/
Chef http://opscode.com @opscode https://github.com/opscode https://github.com/opscode- cookbooks Librarian https://github.com/ applicationsonline/librarian My Github Stuff https://github.com/lewg/ Saturday, October 20, 12