Deploy automático na Hostinger com projeto Laravel e Github
Tags: beginners, programming, tutorial, laravel
Published: 2021-07-27 17:41:30

Estou básicamente escrevendo esse post pra lembrar como realizei o processo de deploy do projeto laravel na Hostinger.
## Índice
[1º passo: Configurando SSH](#passo-01)
[2º passo: Upload do projeto na Hostinger](#passo-02)
[3º passo: Definindo as variáveis de ambiente no ***.env***.](#passo-03)
[4º passo: Configurando o ***.htaccess***](#passo-04)
[5º passo: Deploy automático](#passo-05)

### Projeto de exemplo:

Repositório: [https://github.com/dannRocha/register](https://github.com/dannRocha/register)
- php 7.3v ou 8.0v
- laravel 8.40v

<br/>
<a name="passo-01"></a>
### 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ah675d1bh0va5t01ewcj.png)

* 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0m4l9asfbz6zlwua1ngi.png)

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

![Copiando chave SSH na Hostinger](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qzkx8apw12e6i3wu30z1.png)

* No GitHub
![Configurando chave SSH no Github - imagem 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z7r7py7p2emjdhxy7rmg.png)
![Configurando chave SSH no Github - imagem 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lmomd6ra656v2rzgju67.png)
![Configurando chave SSH no Github - imagem 3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qvyvxlma1tfoqpp6mfp0.png)

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.

<a name="passo-02"></a>
### 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w1sre5bqqyshx0fyvji7.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l5cb2hdkkpoq96k1nkuf.png)

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.

<a name="passo-03"></a>
### 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9gjgdsy6ur47zmdq2vnk.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/evw06uzf743eqvpd07iu.png)
Clique duas vezes no arquivo ***.env*** para realizar alterações
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ipwxctlboi4t1hph9cp9.png)

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 <code>php artisan key:generate</code>. 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 <code>APP_KEY</code> 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4c84hxgt2optn7sdmfm.png)

Dados preenchidos:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/73950nr68jlp6aw3dr77.png)

<a name="passo-04"></a>
### 4º passo: Configurando o ***.htaccess***.
Esse passo é necessário para acessar o projeto a partir da raiz do dominio.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p9hqw9wpoue5q03s3tt7.png)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2uy4f60qv4ildkd7gtf.png)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jtef2awkb8lzd10nuizl.png)
```
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]
```
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.

<a name="passo-05"></a>
### 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vrdwpqd0ju9zupwinccq.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5qnfp954p0rnkgharwm.png)


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