DEV Community

Daniel Rocha
Daniel Rocha

Posted on • Updated on

Deploy automático na Hostinger com projeto Laravel e Github

Estou básicamente escrevendo esse post pra lembrar como realizei o processo de deploy do projeto laravel na Hostinger.

Índice

1º passo: Configurando SSH
2º passo: Upload do projeto na Hostinger
3º passo: Definindo as variáveis de ambiente no .env.
4º passo: Configurando o .htaccess
5º passo: Deploy automático

Projeto de exemplo:

Repositório: https://github.com/dannRocha/register

  • php 7.3v ou 8.0v
  • laravel 8.40v



1º passo: Configurando SSH.

Devemos configurar o SSH para acessarmos projetos privados. Esse passo não é necessário para um projeto público no Github.

  • Acesse o panel da Hostinger e procure o botão/ícone do git:
    Painel de Controle Hostinger

  • Observe na seção lateral que você foi direcionado para as opções avançadas do painel de controle. Agora vamos criar nossa chave SSH. Clique no botão para gerar a chave.

Gerando chave SSH

  • Copie a chave e vamos definir a chave no repositório remoto (Github).

Copiando chave SSH na Hostinger

  • No GitHub Configurando chave SSH no Github - imagem 1 Configurando chave SSH no Github - imagem 2 Configurando chave SSH no Github - imagem 3

Na terceira imagem do Github cole a chave SSH e coloque um titulo da sua preferência. Finalize salvando a chave no botão Add SSH Key

Os passos acima é necessário para conectar o máquina de hospedagem com o Github. Sem a etapa acima a hospedagem não vai conseguir clonar o repositório privado.

2º passo: Upload do projeto na Hostinger.

Copie o link do projeto. Lembrando que como estamos usando um projeto privado devemos pegar o link do SSH, caso seja um projeto público basta usar o link HTTPS.
Alt Text

Na Dashboard da Hostinger, na mesma seção que criamos a chave SSH (Seção avançada e git). Cole a URL do projeto em 1, defina qual branch vai ser utilizada no deploy em 2 e na 3 opção vamos deixar em branco e posteriormente vamos configurar o .htaccess para mudar a pasta public_html para public do projeto laravel. Finalize clicando no botão criar
Alt Text

Se a configuração da chave SSH foi realizada com sucesso a hospedagem em segundo plano efetuarar o clone do projeto e a instalação das dependências do projeto.

OBS: Essa etapa pode falhar caso tenha conteúdo dentro da pasta public_html, por isso recomendo que limpe a pasta, caso contrário você pode definir uma pasta no item (3) da imagem acima, mas o passo da configuração do .htaccess muda um pouco.

3º passo: Definindo as variáveis de ambiente no .env.

Poderíamos acessar a máquina de hospedagem do nosso projeto através do SSH em um emulador de terminal, porém a configuração da chave SSH pública no computador local e a definição da chave na Dashboard da Hostinger tornar-se necessário para configurar as variáveis de ambiente. Então vamos usar o gerenciador de arquivos que a Hostinger disponibiliza.
Alt Text

Devemos encontrar primeiro os arquivos do nosso projeto, então navegue na barra lateral do gerenciador de arquivos. Logo em seguida temos que copiar e colar no mesmo diretório/pasta o arquivo .env.example e renomear para .env, assim temos um arquivo de configuração totalmente zerado (Não esqueça do ponto na frente do env).

Alt Text
Clique duas vezes no arquivo .env para realizar alterações
Alt Text

Observe a imagem acima com alguns pontos marcados. Devemos definir primeiro a chave unica da aplicação. Caso esteja fazendo o processo pelo terminal via SSH, apenas digite o comando php artisan key:generate. Se você está realizando o processo pelo gerenciador de arquivos, então execute o mesmo comando no seu computador, acesse o arquivo .env do seu projeto local e copie e cole a variável APP_KEY no arquivo .env da hospedagem.

Voltando na Dashboard do nosso projeto, acesse a seção do banco de dados (1), caso não tenha criado uma base de dados você pode criar nessa seção. Em seguida copie as informações: nome do banco de dados, nome do usuário, host e a senha (2 e 3 ).

Alt Text

Dados preenchidos:
Alt Text

4º passo: Configurando o .htaccess.

Esse passo é necessário para acessar o projeto a partir da raiz do dominio.
Alt Text
Alt Text
Alt Text

RewriteEngine on
RewriteCond %{HTTP_HOST} ^meudominio.com.br$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.meudominio.com.br/$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
Enter fullscreen mode Exit fullscreen mode

Substitua meudominio pelo seu dominio. Observe que o mapeamento da pasta public nas ultimas linhas acima, essas duas linhas definem que a pasta public do laravel como ponto de entrada e não a pasta public_html que é a padrão na hospedagem.

Com os passos concluídos até esse momento no mínimo já tenhos nosso projeto no ar.

5º passo: Deploy automático.

Nas configurações avançadas na Dashboard do projeto, selecione a aba do git, em seguida role a página até o final e clique em Implantação Automática ou em Auto Deployment (1), isso vai depender do idioma do seu dashboard. Logo após copie o Webhook URL (2) e clique no link para ser direcionado para configurar o Webhook no Github. (3).
Alt Text

Com a página de criação do Webhook no Github aberta, cole o Webhook URL no input Payload URL (1), selecione o evento (2) e conclua a crição do Webhook (3).
Alt Text

Agora o projeto está de pé e pronto pra receber atualizações quando a branch main for atualizada.

Top comments (9)

Collapse
 
rodrigomgrassioto profile image
rodrigomgrassioto • Edited

Pra mim com o .htaccess como instruído só retornou 403, tentei com:
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]

E continuou o mesmo retorno.

Então apaguei tudo e coloquei:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public_html/$1 [L]
</IfModule>

Então depois criei dois links simbólicos com os comandos:
ln -s public public_html
e
ln -s public_html www

Então rodei o php composer install e ai sim a aplicação subiu

Collapse
 
georgehenrique profile image
George Henrique

Tem como fazer pra depois do deploy, ele executar no servidor o "composer install" e alguns comandos artisan? Tipo "php artisan optimize"

Collapse
 
georgehenrique profile image
George Henrique

Pra mim deu "403 Access Denied". Alguém passou por isso?

Collapse
 
georgehenrique profile image
George Henrique

Consegui corrigir. O problema estava no .htaccess. Mudei para:


RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]

Collapse
 
danroxha profile image
Daniel Rocha

Vlw @georgehenrique 😄

Collapse
 
emilioalmada profile image
EmilioAlmada

Daniel, isso somente funciona com branch Main? Ou Voce poder fazer isso com outra branch?

Collapse
 
danroxha profile image
Daniel Rocha • Edited

Sinceramente não tenho certeza porque não testei, mas deveria funcionar normalmente porque a branch main é igual a qualquer outra branch é só uma conversão que exista uma ramificação principal pra manter algum grau de ordem, e seguindo essa lógica o nome da sua branch principal poderia ser chamada de producao. E também no momento da definição de qual repositorio vai ser clonado, existe a opção de definir qual branch será usada, então deve funcionar normal.

Collapse
 
rafaelasmiranda profile image
Rafaela Silva

Boa noite !
Estou com o seguinte problema:
"Your requirements could not be resolved to an installable set of packages.
Deployment failed"

Poderia me ajudar?

Collapse
 
emarcarini profile image
Emmanuel Marcarini

Ei boa noite resolveu ? Voce ta usando o LARAVEL 9 ? lembrou de mudar o seu php pra 8 ?