Evitando a fadiga com Laravel Homestead

271 visualizações

Publicada em

Slides da minha apresentação sobre Vagrant/Homestead no 10º PHP FC MeetUp, do Grupo PHP-DF.

Autor: Danilo Esser

Publicada em: Software
  • Seja o primeiro a comentar

Evitando a fadiga com Laravel Homestead

  1. 1. Evitandoafadiga com LaravelHomestead By: @DaniloEsser
  2. 2. HelloWorld! Eu sou Danilo Esser ✖ +14 anos de PHP ✖ Zend Certified PHP Developer ✖ Integrante da comunidade PHPDF ✖ Hardcore Gamer, Músico e fã de Memes- lol daniloesser@gmail.com
  3. 3. 57%das organizações estão insatisfeitas com o tempo que se leva para liberar novos recursos e mudanças em produção.
  4. 4. Apenas2% das organizações conseguem realizar um ou mais releases por dia em suas aplicações:
  5. 5. LAMP,WAMP,MAMP,Xampp... ➢Até quando você irá sofrer configurando ambientes de desenvolvimento? ➢Quantas vezes você já usou a desculpa: “mas funciona na minha máquina…”
  6. 6. Problemascomuns: ✖Ambientes desiguais (dev/prod) ✖Ambientes desiguais (entre os devs/Team) ✖Múltiplos servers, uma solução ✖Inúmeras configs de setup inicial ✖Difícil replicação...
  7. 7. ✖ Baixar uma distro Linux ✖ Compilar Apache, PHP, MySQL, Etc... ✖ Configurar Libs como CuRL, ImageMagick, APC, Oci... ✖ Configurar VirtualHosts do Apache.. ✖ Copiar arquivos de Setup/Config via Samba, FTP ou SCP... ✖ Importar databases... ✖ Fazer checkout de repositórios.. Eseaoinvésdevocê... ✖ Especificar em texto simples como o hardware da máquina virtual deve ser configurado e o que deve ser instalado nela, como numa receita. ✖ Fazer checkout do projeto. ✖ Executar "vagrant up" e já começar a trabalhar.
  8. 8. Vagrant!!! Vagrant é rápido, fácil e ajuda você a gerenciar vários ambientes de desenvolvimento ao mesmo tempo de forma eficiente e divertida!
  9. 9. Blz…Masesse talVagrant... oqueé? Providers Boxes Provisioners O Vagrant é um gerenciador de VMs (máquinas virtuais). Através dele é possível definir o ambiente de desenvolvimento onde seu projeto irá rodar. Com suporte para Mac OS, Linux e Windows, consegue atender boa parte dos desenvolvedores. Ele utiliza providers, boxes e se necessário, provisioners.
  10. 10. Ok…edoqueeuprecisobasicamente? ✖ Provider: ✖ Vagrant:
  11. 11. InstalandoOracleVirtualBox
  12. 12. InstalandoOracleVirtualBox
  13. 13. InstalandoOracleVirtualBox
  14. 14. InstalandoOracleVirtualBox
  15. 15. InstalandoVagrant
  16. 16. InstalandoVagrant
  17. 17. InstalandoVagrant
  18. 18. InstalandoVagrant
  19. 19. Testando...
  20. 20. Eagora? http://atlas.hashicorp.com/boxes/search
  21. 21. Eagora? Vagrant up Cria (ou inicia) uma maquina virtual. Vagrant provision Re-executa os scripts de provisionamento na maquina virtual. Vagrant ssh Acessa a maquina virtual via SSH. Vagrant halt Interrompe a maquina virtual em execução. Vagrant destroy Destrói a maquina virtual. Vagrant Box Adiciona, lista, remove ou atualiza os Boxes do Vagrant. Vagrant docker-run Executa um container Docker. P.S: Podemos utilizar qualquer um dos comandos Docker.
  22. 22. VagrantvsDocker
  23. 23. VagrantvsDocker
  24. 24. Resumindo: GrayWhite Black
  25. 25. SpoilerAlert: O único problema do Vagrant é a sua curva de aprendizagem DevOps. Uma coisa é você começar a usar Vagrant, outra coisa (totalmente diferente) é você fazer configuração e provisionamento do seu servidor personalizado utilizando Ansible, Chef ou Puppet.
  26. 26. ProvisionandocomPuppet puphpet/config.yaml Memoria (1GB) memory: '1024' CPU’s cpus: '1' Network private_network: 192.168.10.10 MySQL mysql: install: '1' root_password: 123456 adminer: '1' databases: ptUkwSJZgC0x: grant: - ALL name: app_dev host: localhost user: app_dev password: app_dev sql_file: '' …. ……….. ….….….….…. tools/provision.sh #Update Ubuntu sudo apt-get update; apt-get -f install #Install Packages ##nginx sudo apt-get install nginx --yes ##PHP5-FPM sudo apt-get install php5-fpm php5-cli php5-common php5- curl php5-xdebug php5-gd php5-imagick php5-mcrypt --yes ##MySQL echo "mysql-server-5.5 mysql-server/root_password password root" | debconf-set-selections echo "mysql-server-5.5 mysql-server/root_password_again password root" | debconf-set-selections sudo apt-get -y install mysql-server-5.5 . …. ……….. ….….….….……. ProvisionandocomShellscript
  27. 27. ProvisionandocomChef Vagrantfile config.vm.provision :chef_solo do |chef| chef.cookbooks_path = ["cookbooks"] chef.add_recipe :apt chef.add_recipe 'php' chef.add_recipe 'mysql::server' chef.add_recipe 'nginx' chef.add_recipe 'git' chef.json = { :mysql => { :server_root_password => "app_cheff", :server_repl_password => "app_cheff", :server_debian_password => "", :service_name => "mysql", :basedir => "/usr", :data_dir => "/var/lib/mysql", :root_group => "root", :mysqladmin_bin => "/usr/bin/mysqladmin", :mysql_bin => "/usr/bin/mysql", :conf_dir => "/etc/mysql", :confd_dir => "/etc/mysql/conf.d", :socket => "/var/run/mysqld/mysqld.sock", :pid_file => "/var/run/mysqld/mysqld.pid", :grants_path => "/etc/mysql/grants.sql" }, …… Cheffile # encoding: utf-8 site 'https://supermarket.getchef.com/api/v1' cookbook "apt" cookbook "php", {} cookbook "mysql", {} cookbook "nginx", {} cookbook "git", {}
  28. 28. Nãoerapra serfácil? ✖ Chef config... ✖ Puppet config… ✖ Shell Script... ✖ VagrantFile config… ✖ Etc.. etc… etc..
  29. 29. Homestead!!!Homestead é a resposta do Projeto Laravel a todas essas dificuldades. Ele já vem pré- configurado para suprir as necessidades do Framework e de quebra ainda traz diversos recursos populares e essenciais.
  30. 30. Eoqueganhamos comoHomestead? ● Ubuntu 16.04 – Fácil de usar e muito conhecido. ● Git ● PHP 7 – Ultima versão stable. ● Nginx – Rápido, performático e fácil de configurar. ● MariaDB – Vai além do MySQL, oferecendo nível empresarial de alta disponibilidade, escalabilidade e segurança ao MySQL.
  31. 31. Avidaagoraéfácil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  32. 32. AdicionandooBoxdoHomesteadaoVagrant Após instalar o Vagrant, basta adicionar o box do Homestead com o seguinte comando: vagrant box add laravel/homestead
  33. 33. Avidaagoraéfacil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  34. 34. Clonando oRepositóriodoHomestead O próximo passo é clonar o repositório oficial do Homestead e criar um único arquivo de config: ➔ Instalação do repositório do Homestead: ◆ Global: git clone git@github.com:laravel/homestead.git . ◆ Per project: composer require laravel/homestead --dev ➔ Criação do arquivo Homestead.yaml: ◆ Global: bash init.sh ◆ Per project: php vendor/bin/homestead make
  35. 35. Avidaagoraéfacil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  36. 36. Configurando oarquivo Homestead.yaml Para nossa alegria, este é realmente o único arquivo que você precisa editar: provider: virtualbox name: meu-site ip: "192.168.10.10" memory: 2048 cpus: 1 authorize: C:UsersDanilo.sshid_rsa.pub keys: - C:UsersDanilo.sshid_rsa folders: - map: “D:projetosmeu_site” to: “/home/vagrant/meu_site” sites: - map: homestead.app to: “/home/vagrant/meu_site/public” databases: - bd_do_site
  37. 37. Redirecionamento deportas Service Default Forward SSH 22 2222 HTTP 80 8000 HTTPS 443 44300 MySQL 3306 33060 Postgres 5432 54320 ports: - send: 27017 to: 27017 - send: 7777 to: 777 protocol: udp Homestead.yaml
  38. 38. Avidaagoraéfácil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  39. 39. Atualizandooarquivo etc/hosts Agora, usando o hostname que escolhemos para o nosso site, basta atualizar o arquivo host local: #127.0.0.1 localhost #::1 localhost 127.0.0.1 homestead.app 127.0.0.1 meu-projeto.local Isto dirá ao computador que o hostname homestead.app está localizado no endereço IP 127.0.0.1 (Que hospeda a nossa VM).
  40. 40. Avidaagoraéfacil! Adicionar o Box do Homestead ao Vagrant Configurar o arquivo Homestead.yaml Clonar o Repositório do Homestead Atualizar o arquivo etc/hosts Vagrant up !!!
  41. 41. That’sit!
  42. 42. SSHTest:
  43. 43. Acessando Bancodedados Quando o Homestead é provisionado, o MySQL e o Postgres já estão instalados com um usuário root. Isto facilita muito o acesso e a gerência destas bases através de um client (Navicat ou similar): MySQL: Host: 127.0.0.1 User: homestead Password: secret Port: 33060 Postgres: Host: 127.0.0.1 User: homestead Password: secret Port: 54320
  44. 44. Criandovariáveisdeambiente Com o Homestead fica realmente muito fácil de criar variáveis de ambiente no servidor. Você pode usar isso para várias coisas como senhas, chaves de API e configuração global. variables: - key: APP_ENV value: local - key: API_KEY value: 123abc - key: API_SECRET value: minh@-s3cr3t $app_env = getenv('APP_ENV'); // returns "local" $api_key = getenv('API_KEY'); // returns "123abc" $api_secret = getenv('API_SECRET'); // returns "minh@-s3cr3t"
  45. 45. Thanks! @daniloesser DaniloEsser@gmail.com Perguntas?
  46. 46. CreditoseReferências ✖ Manuais & Sites oficiais: ○ Vagrant: http://www.vagrantup.com ○ Homestead: https://laravel.com/docs/5.3/homestead ✖ Infos adicionais & imagens: ○ https://www.sitepoint.com/6-reasons-move-laravel-homestead/ ○ https://24ways.org/2014/what-is-vagrant-and-why-should-i-care/ ○ https://scotch.io/tutorials/get-vagrant-up-and-running-in-no-time ○ http://www.ca.com/content/dam/ca/us/files/ebook/onward-and-upward- three-ways-application-release-automation-can-give-lift.pdf

×