DEV Community

Jilcimar Fernandes
Jilcimar Fernandes

Posted on

Criando um servidor de homologação para aplicações Laravel usando o Heroku

Heroku + Laravel + Github

Muita das vezes precisamos testar nossas aplicações em um servidor antes de lançarmos em produção, mas nem todos tem familiaridade com deploy ou possuem um servidor de homologação (testes). Dessa forma, o Heroku pode se tornar uma alternativa, pois é fácil de usar (abstrai muita coisa) e o melhor de tudo, é free! 🎉

Este artigo é para mostrar o passo a passo de como podemos publicar nossos projetos em Laravel utilizando o Heroku e criar um servidor de homologação simples com deploy automatizado usando o Github. Se você não conhece o Heroku, pode saber mais sobre ele clicando aqui.

Instalando o Heroku

Para esse tutorial vou partir da premissa que você já está com o seu projeto no GitHub e com uma conta criada no Heroku (só acessar https://www.heroku.com)

Heroku DashBoard

Depois da conta criada, você pode instalar o Heroku CLI acessando https://devcenter.heroku.com/articles/heroku-cli .
No meu caso que uso Linux, instalei via npm rodando o seguinte comando:

npm install -g heroku

Se foi instalado com sucesso você irar conseguir ver a versão rodando o comando:

heroku -v

Configurando o Heroku

Dentro da raiz da sua aplicação Laravel, vamos criar um arquivo chamado "Procfile" (conforme a figura abaixo), nele vamos informar o "perfil" do nosso servidor, que no meu caso vai ser o apache2 (Mas você pode usar o nginx por exemplo).

Create File Procfile

No arquivo vamos escrever a seguinte linha:

web: vendor/bin/heroku-php-apache2 public/

Criando um novo app no Heroku

Agora vamos criar um app no Heroku rodando o seguinte comando:

heroku create

Create File Procfile

Você deve ter um resultado parecido com a imagem acima.

Se você acessar https://dashboard.heroku.com/apps irá ver que a aplicação que acabamos de criar está listada. 🙌

Subindo o projeto para o servidor

Antes vamos configurar um script para quando subirmos a nossa aplicação ele dar a permissão na pasta public/ , em seu composer.json na sessão de scripts adicione o seguinte trecho:

"post-install-cmd": [
"php artisan clear-compiled",
"chmod -R 775 public/"
]

Se você rodar o comando

git remote -v

irá ver que foi criado um novo remote além do origin com o nome heroku, é ele que iremos utilizar para dar push em nosso código para disponibilizar no servidor com:

git push heroku master

Pela aba "Overview" em seu dashboard do Heroku, irá ver que sua aplicação já está disponível:

Aplicação Disponível

Configurando as variáveis do .env

Para configurar as variáveis do nosso .env, é só acessar a aba "Settings" e ir até "Config Vars". Adicione a KEY e o valor correspondente conforme a imagem:

Variáveis no Heroku

Criando o banco de dados

Pelo dashboard só que agora na aba Resources em Add-ons pesquise por postgres (você pode escolher o banco de sua preferência) e selecione o Heroku Postgres:

Banco no Heroku

Selecione o plano Hobby Dev - Free.

Agora, no terminal de sua aplicação vamos obter as credenciais do Banco de Dados que acabamos de criar executando:

heroku pg:credentials:url

Será exibida as credencias para conectar ao banco, o próximo passo é adicionar elas assim como fizemos para as demais do .env como já foi exemplificado.

Agora podemos rodar nossas migrations e seeders executando:

heroku run php artisan migrate --seed

.

Configurando o Deploy automático a partir da master

Com nossa aplicação rodando e tudo funcionando, vamos configurar para que sempre que houver alteração na branch master o Heroku faça o deploy automático.

Esse passo é bem simples, na aba de deploy vamos selecionar o Deployment method GitHub. Irá pedir para você fazer a autenticação na sua conta e em seguida selecionar o repositório. Pronto, só isso e está tudo configurado para o nosso servidor de testes atualizar sozinho quando a master sofrer alterações.

Create File Procfile

Caso queira desabilitar essa opção para fazer o deploy de forma manual como fizemos na primeira vez para subir o código, na mesma sessão em App connected to GitHub clique em disconnect.

Discussion (0)