Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Maintaining Homestead

Maintaining Homestead

Laravel's Homestead project is the second most downloaded public Vagrant environment. Initially designed to be a full-featured local development environment focused on making Laravel developer's experience easier Homestead has grown into a solid, well-rounded LAMP stack Vagrant environment for nearly any PHP project.

Join us as we review the features and inner workings of Homestead, explore some features you may not be aware of, and even take a trip deep into the operations process of how we build and deliver the best vagrant environment for the PHP community. We'll also cover extending Homestead and making it work for your custom applications and how you can easily share the customized environment with your teammates, coworkers, or contributors.


Joe Ferguson

June 01, 2018

More Decks by Joe Ferguson

Other Decks in Technology


  1. Maintaining Homestead Joe Ferguson June 1st 2018

  2. Who Am I? Joe Ferguson PHP Developer PHP Architect @

    Ministry Brands Twitter: @JoePFerguson OSMI Board Member Drone Racing Pilot
  3. vagrantup.com

  4. Homestead Principles Easy to use First class Laravel support Support

    all 3 major Operating Systems Flexible and extendable Fast to start up
  5. Local Dev Environment

  6. Just Use Docker

  7. Vagrant Providers

  8. Vagrant uses Virtualbox’s API

  9. Vagrant Boxes

  10. Vagrant Boxes

  11. Adding Vagrant Boxes

  12. Updating Vagrant Boxes

  13. Installed Vagrant Boxes

  14. Lots of Users

  15. What’s in Homestead •Ubuntu 18.04 •PHP 5.6 •PHP 7.0 •PHP

    7.1 •PHP 7.2 •Nginx •MySQL •MariaDB •Sqlite3 •Postgres •MailHog •Composer •NodeJS •Bower •Grunt •Gulp •Beanstalkd •Memcached
  16. Getting Homestead git clone https://github.com/laravel/homestead.git Homestead

  17. Getting Homestead cd Homestead && bash init.sh

  18. How I use Homestead composer require —dev laravel/homestead

  19. Make Homestead ./vendor/bin/homested make

  20. Configuring Homestead

  21. Configuring Homestead

  22. Configuring Homestead

  23. Do Not Do This

  24. Configuring Homestead

  25. Configuring Homestead

  26. More Configuration

  27. Starting Homestead

  28. Inspecting Homestead

  29. Edit /etc/hosts Optional for per project Homestead

  30. Inspecting Homestead

  31. Inspecting Homestead

  32. Stopping Homestead

  33. Don’t version control Homestead.yaml

  34. Customizing Homestead

  35. after.sh

  36. Peeking under the hood

  37. None
  38. Powered By

  39. Vagrantfile

  40. Vagrantfile

  41. scripts/homestead.rb

  42. Setup and Configure

  43. Configure Networking

  44. VirtualBox Settings

  45. VMware Settings

  46. Parallels Settings

  47. Configure Ports

  48. Configure Ports & Key

  49. Copy SSH Keys

  50. Copy Files

  51. Map Folders

  52. Clear any existing nginx

  53. Configure Sites

  54. Create Sites

  55. Configure Cron Jobs

  56. Configure Variables

  57. Install optional software

  58. CouchDB & Elasticsearch

  59. Configure Databases

  60. Configure Blackfire

  61. Setup ngrok

  62. scripts/serve-laravel.sh

  63. scripts/create-mysql.sh

  64. Site Types apache laravel (default) elgg crystal pimcore spa proxy

    (nginx) silverstripe statamic symfony2 / 4 zf /expressive apigility
  65. PHP Versions

  66. PHP Versions

  67. How do you deliver a feature rich Vagrant box that

    boots in ~1 minute?
  68. Laravel Settler

  69. Laravel Settler

  70. packer.io

  71. packer.io

  72. Bento Boxes http://chef.github.io/bento/

  73. Building Homestead Copy provision script to bento repo

  74. Building with Packer

  75. Build Output

  76. Testing Our Build

  77. Testing Our Build

  78. Testing Our Build

  79. Testing Our Build

  80. Ship It!

  81. Warning for Windows

  82. Contributing Encourage new contributors Creating new site types is easy

    Adding “bolt on” features like ElasticSearch, Apache, MariaDB, etc
  83. Contributing

  84. Joe Ferguson Twitter: @JoePFerguson Email: joe@joeferguson.me Freenode: joepferguson Contact Info: