evitando a fadiga com laravel homestead
TRANSCRIPT
![Page 1: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/1.jpg)
Evitando a fadiga com
Laravel Homestead
By: @DaniloEsser
![Page 2: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/2.jpg)
Hello World!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
![Page 3: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/3.jpg)
57%das organizações estão
insatisfeitas com o tempo que se leva paraliberar novos recursos e mudanças em produção.
![Page 4: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/4.jpg)
Apenas 2%das organizações conseguem realizar um ou mais
releases por dia em suas aplicações:
![Page 5: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/5.jpg)
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…”
![Page 6: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/6.jpg)
Problemas comuns:
✖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...
![Page 7: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/7.jpg)
✖ 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..
E se ao invés de você...
✖ 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.
![Page 8: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/8.jpg)
Vagrant !!!Vagrant é rápido, fácil e ajuda você a
gerenciar vários ambientes de desenvolvimento ao mesmo tempo de forma
eficiente e divertida!
![Page 9: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/9.jpg)
Blz… Mas esse tal Vagrant... o que é?
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.
![Page 10: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/10.jpg)
Ok… e do que eu preciso basicamente?
✖ Provider: ✖ Vagrant:
![Page 11: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/11.jpg)
Instalando Oracle VirtualBox
![Page 12: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/12.jpg)
Instalando Oracle VirtualBox
![Page 13: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/13.jpg)
Instalando Oracle VirtualBox
![Page 14: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/14.jpg)
Instalando Oracle VirtualBox
![Page 15: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/15.jpg)
Instalando Vagrant
![Page 16: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/16.jpg)
Instalando Vagrant
![Page 17: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/17.jpg)
Instalando Vagrant
![Page 18: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/18.jpg)
Instalando Vagrant
![Page 19: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/19.jpg)
Testando...
![Page 20: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/20.jpg)
E agora?
http://atlas.hashicorp.com/boxes/search
![Page 21: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/21.jpg)
E agora?
Vagrant upCria (ou inicia) uma maquina virtual.
Vagrant provisionRe-executa os scripts de provisionamento na maquina virtual.
Vagrant sshAcessa a maquina virtual via SSH.
Vagrant haltInterrompe a maquina virtual em execução.
Vagrant destroyDestrói a maquina virtual.
Vagrant BoxAdiciona, lista, remove ou atualiza os Boxes do Vagrant.
Vagrant docker-run
Executa um container Docker.P.S: Podemos utilizar qualquer um dos comandos Docker.
![Page 22: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/22.jpg)
Vagrant vs Docker
![Page 23: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/23.jpg)
Vagrant vs Docker
![Page 24: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/24.jpg)
Resumindo:
GrayWhite Black
![Page 25: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/25.jpg)
Spoiler Alert:O único problema do Vagrant é a sua curva deaprendizagem DevOps. Uma coisa é você começar a usarVagrant, outra coisa (totalmente diferente) é você fazerconfiguração e provisionamento do seu servidorpersonalizado utilizando Ansible, Chef ou Puppet.
![Page 26: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/26.jpg)
Provisionando com Puppet puphpet/config.yaml
Memoria (1GB)memory: '1024'
CPU’scpus: '1'
Networkprivate_network: 192.168.10.10
MySQLmysql:
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 Ubuntusudo 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
.
….
………..
….….….….…….
Provisionando com Shellscript
![Page 27: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/27.jpg)
Provisionando com Chef 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", {}
![Page 28: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/28.jpg)
Não era pra ser fácil?✖ Chef config...✖ Puppet config…✖ Shell Script...✖ VagrantFile config…✖ Etc.. etc… etc..
![Page 29: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/29.jpg)
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.
![Page 30: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/30.jpg)
E o que ganhamos com o Homestead ?
● 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.
● Postgres
![Page 31: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/31.jpg)
A vida agora é 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 !!!
![Page 32: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/32.jpg)
Adicionando o Box do Homestead ao Vagrant
Após instalar o Vagrant, basta adicionar o box do Homestead com o seguinte comando:
vagrant box add laravel/homestead
![Page 33: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/33.jpg)
A vida agora é 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 !!!
![Page 34: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/34.jpg)
Clonando o Repositório do Homestead
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 [email protected]: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
![Page 35: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/35.jpg)
A vida agora é 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 !!!
![Page 36: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/36.jpg)
Configurando o arquivo Homestead.yamlPara nossa alegria, este é realmente o único arquivo que você precisa editar:
provider: virtualboxname: meu-siteip: "192.168.10.10"memory: 2048cpus: 1
authorize: C:\Users\Danilo\.ssh\id_rsa.pubkeys:
- C:\Users\Danilo\.ssh\id_rsa
folders:- map: “D:\projetos\meu_site”
to: “/home/vagrant/meu_site”
sites:- map: homestead.app
to: “/home/vagrant/meu_site/public”
databases:- bd_do_site
![Page 37: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/37.jpg)
Redirecionamento de portas
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
![Page 38: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/38.jpg)
A vida agora é 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 !!!
![Page 39: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/39.jpg)
Atualizando o arquivo 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).
![Page 40: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/40.jpg)
A vida agora é 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 !!!
![Page 41: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/41.jpg)
That’s it!
![Page 42: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/42.jpg)
SSH Test:
![Page 43: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/43.jpg)
Acessando Banco de dadosQuando 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: homesteadPassword: secretPort: 33060
Postgres:Host: 127.0.0.1
User: homesteadPassword: secretPort: 54320
![Page 44: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/44.jpg)
Criando variáveis de ambienteCom 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_ENVvalue: local
- key: API_KEYvalue: 123abc
- key: API_SECRETvalue: minh@-s3cr3t
$app_env = getenv('APP_ENV'); // returns "local"
$api_key = getenv('API_KEY'); // returns "123abc"
$api_secret = getenv('API_SECRET'); // returns "minh@-s3cr3t"
![Page 45: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/45.jpg)
![Page 47: Evitando a fadiga com Laravel Homestead](https://reader036.vdocuments.site/reader036/viewer/2022062413/587eec181a28ab17388b6f3b/html5/thumbnails/47.jpg)
Creditos e Referê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