laravel homestead com evitando a fadiga homestead.pdf · laravel homestead by: @daniloesser. hello...

47
Evitando a fadiga com Laravel Homestead By: @DaniloEsser

Upload: others

Post on 07-Oct-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Evitando a fadiga com

Laravel Homestead

By: @DaniloEsser

Page 2: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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

[email protected]

Page 3: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

57%das organizações estão

insatisfeitas com o tempo que se leva paraliberar novos recursos e mudanças em produção.

Page 4: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Apenas 2%das organizações conseguem realizar um ou mais

releases por dia em suas aplicações:

Page 5: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

✖ 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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Ok… e do que eu preciso basicamente?

➔ Provider: ➔ Vagrant:

Page 11: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Instalando Oracle VirtualBox

Page 12: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Instalando Oracle VirtualBox

Page 13: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Instalando Oracle VirtualBox

Page 14: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Instalando Oracle VirtualBox

Page 15: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Instalando Vagrant

Page 16: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Instalando Vagrant

Page 17: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Instalando Vagrant

Page 18: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Instalando Vagrant

Page 19: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Testando...

Page 20: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

E agora?

http://atlas.hashicorp.com/boxes/search

Page 21: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

E agora?

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.

Page 22: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Vagrant vs Docker

Page 23: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Vagrant vs Docker

Page 24: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Resumindo:

GrayWhite Black

Page 25: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Spoiler Alert: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.

Page 26: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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-FPMsudo apt-get install php5-fpm php5-cli php5-common

php5-curl php5-xdebug php5-gd php5-imagick php5-mcrypt

--yes

##MySQLecho "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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Não era pra ser fácil?❏ Chef config...❏ Puppet config…❏ Shell Script...❏ VagrantFile config…❏ Etc.. etc… etc..

Page 29: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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

● Composer

● Node (com PM2, Bower, Grunt e Gulp) – Todas as Front-End tools + task runners

● Redis – Cache de chave/valor de alta performance.

● Memcached – Ferramenta de Cache

● Beanstalkd – Queue server fácil de usar.

● Sqlite3

Page 31: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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.app127.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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

That’s it!

Page 42: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

SSH Test:

Page 43: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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.1User: homesteadPassword: secretPort: 33060

Postgres:Host: 127.0.0.1User: homesteadPassword: secretPort: 54320

Page 44: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

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_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"

Page 45: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante
Page 46: Laravel Homestead com Evitando a fadiga Homestead.pdf · Laravel Homestead By: @DaniloEsser. Hello World! Eu sou Danilo Esser ★+14 anos de PHP ★Zend Certified PHP Developer ★Integrante

Thanks!

@[email protected]

Perguntas?