Pular para o conteúdo principal

Hospedando aplicação PHP com Laravel no Heroku



Neste post irei mostrar como hospedar sua aplicação numa das plataformas que gosto muito que é a Heroku. Mas antes de começar falarei um pouco sobre ela.

A Heroku é uma plataforma em nuvem como um serviço (PaaS), que suporta várias linguagens de programação que são usadas como um modelo de implantação de aplicativos da Web. A Heroku, uma das primeiras plataformas em nuvem, está em desenvolvimento desde junho de 2007, quando só oferecia suporte à linguagem Ruby, mas agora é compatível com Java, NodeJs, Scala, Closure, Python, PHP e Go.

Por esta razão, Heroku é dito ser uma plataforma poliglota, uma vez que permite a construção de desenvolvedores, executar aplicações em escala de forma semelhante em todos os idiomas. A Heroku foi adquirida pela Salesforce.com em 2010 por US $ 212 milhões.

Agora vamos ver algumas funcionalidades básicas, configurar um novo ambiente e publicar uma aplicação PHP com uma conta gratuita no Heroku.

Pré-Requisitos
  • Instalar o Git aqui;
  • Criar uma conta no Github aqui;
  • Instalar o Composer aqui;
  • Criar uma conta free no Heroku aqui;
  • Instalar o Heroku Toolbelt aqui

Com TODOS os pré-requisitos atendidos, vamos começar. Abra o console e digite: heroku login.
Aparecerá os campos para informar suas credenciais, ou seja, login e senha da conta criada no Heroku. Feito isso, digite o seguinte comando para criar um novo projeto no Heroku: heroku create nome_do_projeto.

Agora vamos iniciar o repositório do Git e adicionar os arquivos do projeto. Para isso, digite os comandos abaixo:
git init
git add .

Configurando o BuildPack

O Heroku possui suporte à vários tipos de aplicações, por exemplo: Java, PHP, NodeJS, etc. Então como ele saberá que nossa aplicação é PHP? Aí é que entram os Buildpacks. Acesse o github do Heroku na url: https://github.com/heroku e pesquise por buildpacks. Procure por heroku-buildpacks-multi, ele é capaz de rodar múltiplas buildpacks para a mesma aplicação no Heroku. É muito útil pois se criarmos nossa aplicação em PHP e quisermos rodar o NodeJS junto, não teremos problema.

Então vamos fazer a seguinte configuração. No console, digite:
heroku config:add BUILDPACK_URL= https://github.com/heroku/heroku-buildpack-multi.git

Agora vamos criar na pasta raiz do nosso projeto chamado: .buildpacks. Dentro dele iremos colar as respectivas urls dos componentes que iremos utilizar. Volte no github do heroku e copie as urls dos buildpacks referentes aos componentes que você irá utilizar. A url do PHP é: https://github.com/heroku/heroku-buildpack-php.git

Feito isto, vamos transferir nossa aplicação propriamente para o Heroku. Este processo é feito através do Git, então vamos efetuar o commit no Git e efetuar um push para o repositório master do Heroku. Para isso, digite os comandos abaixo:
git commit -m “first commit”
git push heroku master


Agora o Heroku irá se encarregar de criar a aplicação para nós, e no final irá gerar uma url para acessarmos. Copie a url e insira no browser ou simplesmente digite o comando: heroku open.

O browser vai retornar um erro 403 – Access Forbidden. Mas calma, agora sabemos que nossa aplicação foi hospedada com sucesso. Para corrigirmos este erro teremos que mapear a path do nosso document root, que fica na pasta public. Criaremos então um arquivo chamado Procfile, e nele vamos inserir a seguinte configuração:
web: $(composer config bin-dir)/heroku-php-apache2 public/

Após isto, efetuamos novamente no Git os comandos commit e push para o Heroku, conforme mostrado acima, para atualizar o projeto.
Então vamos ao browser e atualizamos a página da nossa aplicação. Provavelmente será retornado outro erro, desta vez o erro é do Laravel. Mas calma, isto se deve ao fato de que não configuramos nossas variáveis de ambiente e de conexão com banco de dados, e não rodamos nossas migrations. E é o que faremos a seguir.

Opcional: Se você quiser ver o erro que o Laravel está retornando, é necessário configurar as variáveis APP_ENV e APP_DEBUB. Essas variáveis estão no arquivo .env. Para isso, executamos os comandos:

heroku config:set APP_ENV=local
heroku config:set APP_DEBUB=true


Configurando o Banco de Dados

O Heroku disponibiliza na conta free, o banco de dados PostgreSQL. Agora vamos criar um banco de dados e configurar as variáveis de conexão com o mesmo.
Para criar o banco, digite no console: heroku add-ons:create heroku-postgresql: hobby-dev.

Agora acesse https://www.heroku.com e efetue login na sua conta. Clique no menu e na opção Data, você será redirecionado para página que contém seus bancos de dados criados. Clique naquele que acabamos de criar, depois clique na opção View Credentials. Aparecerão as informações para conexão, que vamos utilizar agora.

Configurando as Variáveis de Ambiente

Na raiz do nosso projeto do Laravel, abra o arquivo .env, nele existem as principais variáveis de ambiente do framework. Vamos configurá-las no Heroku através do comando: heroku config. Para mais informações digite, heroku config --help. Para configurar digitamos os comandos abaixo:

heroku config:set APP_KEY=somerandomstring
heroku config:set DB_CONNECTION=pgsql
heroku config:set DB_HOST=
heroku config:set DB_DATABASE=
heroku config:set DB_USERNAME=
heroku config:set DB_PASSWORD


Copie do site do Heroku os valores das variáveis conforme descrito no passo anterior.
Obs.: Como o arquivo .env é ignorado pelo Git, devemos alterar nosso database.php, na variável default de conexão com o banco de dados. Devemos alterar o valor para default para pgsql. Exemplo:
'default' => env('DB_CONNECTION', 'pgsql'),

Obs.: Para ver todas as variáveis configuradas no Heroku, execute o comando: heroku config.

Executando as Migrations

Para executar nossas migrations do projeto no Heroku, basta inserir o comando: heroku run “php artisan migrate”.
Após isso, basta atualizar a página no browser. A aplicação deverá ser executada normalmente! Caso haja algum erro, revise as variáveis configuradas.

Obs.: Caso você queira rodar seeds, deverá comentar o comando truncate das tabelas, pois o PostgreSQL assim como Mysql não permite executar tal comando nas tabelas que possuem relacionamento.

Bom é isso para este post, uma dica que eu dou é que você tente fazer cada passo pausadamente e faça todos os items do pré-requisito, para que tudo de certo no final!

Comentários

Postagens mais visitadas deste blog

Como compilar javascript com Sublime Text

Tutorial de como compilar código javascript com o Editor Sublime Text: Primeiro de tudo é necessário baixar e instalar o node js. Agora, no sublime, clique em Tools - Build System - New Build System..., e cole o código abaixo: { "cmd": ["node", "$file"], "selector": "source.js", "working_dir": "${project_path:${folder}}", "path": "C:\\Program Files\\nodejs" } Atenção: Em path, coloque o caminho correto da instalação do nodejs. Usa-se duas barras mesmo, não é erro! Agora tecle Ctrl + S para salvar este arquivo, já será apontado para o diretório correto, basta mudar o nome do arquivo para node. Nome completo do arquivo deverá ser: node.sublime-build. Pronto! Crie um arquivo de teste e vá em Tools - Build System e selecione a opção node . E para compilar tecle Ctrl + B.

Como criar projeto no Laravel especificando a versão do framework

Olá amigos dev's! Este post nos ensina como criar um projeto em um dos frameworks PHP mais utilizados atualmente, o Laravel. A criação é feita via Composer, porém às vezes queremos trabalhar com uma versão específica do framework e se executarmos o comando sem especificar a versão, ele automaticamente instalará a mais recente. Antes de executarmos o comando para criar o projeto, precisamos instalar o framework. Para tal, executamos o seguinte comando: composer global require "laravel/installer" Ao executar o comando acima, o composer irá se encarregar de baixar e instalar os pacotes das dependências do framework. Se for a primeira vez, ele pode demorar alguns minutos! Após finalizado a instalação do Laravel , executamos o comando para criar nosso projeto. Digite: composer create-project --prefer-dist laravel/laravel nome-do-projeto 5.1.* Note que no final do comando está especificado a versão do framework que desejarmos! Referencias:  https://laravel.c...

Traduzindo Aplicação Laravel

Uma dica muito boa para traduzir sua aplicação desenvolvida em PHP no framework Laravel. Primeiro acessamos o link do projeto no Github que contém a biblioteca com mais de 61 idiomas, que é  https://github.com/caouecs/Laravel-lang Há dois modos de fazermos este processo, baixando a biblioteca através do composer ou copiando somente a pasta do idioma que desejamos traduzir. Baixando a biblioteca via Composer: No terminal, digite o comando abaixo e aguarde o fim da instalação: composer require caouecs/laravel-lang Após instalado, a biblioteca ficará no diretório: app\vendor\caouecs. Acessamos esta pasta e dentro da pasta src  teremos as pastas dos respectivos idiomas, basta copiar a pasta desejada e colar em resources\lang. O outro modo é baixarmos o arquivo da biblioteca compactado direto no Github e fazermos o mesmo processo da cópia da pasta do idioma mencionado acima. Feito isto, acessamos o arquivo de configurações em config\app.php , para mudarmos o idioma d...