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.
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.
- Copie a chave e vamos definir a chave no repositório remoto (Github).
- No GitHub
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.
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
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.
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).
Clique duas vezes no arquivo .env para realizar alterações
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 ).
4º passo: Configurando o .htaccess.
Esse passo é necessário para acessar o projeto a partir da raiz do dominio.
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.
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).
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).
Agora o projeto está de pé e pronto pra receber atualizações quando a branch main for atualizada.
Top comments (9)
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 subiuTem como fazer pra depois do deploy, ele executar no servidor o "composer install" e alguns comandos artisan? Tipo "php artisan optimize"
Pra mim deu "403 Access Denied". Alguém passou por isso?
Consegui corrigir. O problema estava no .htaccess. Mudei para:
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
Vlw @georgehenrique 😄
Daniel, isso somente funciona com branch Main? Ou Voce poder fazer isso com outra branch?
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.
Boa noite !
Estou com o seguinte problema:
"Your requirements could not be resolved to an installable set of packages.
Deployment failed"
Poderia me ajudar?
Ei boa noite resolveu ? Voce ta usando o LARAVEL 9 ? lembrou de mudar o seu php pra 8 ?