Meta descrição: Aprenda deploy Laravel na VPS Hostinger com Nginx e PHP-FPM: requisitos, configuração, SSL e CI/CD para publicar seu app com performance.

Uma imagem sobre Deploy Laravel na VPS Hostinger com Nginx e PHP-FPM

Fazer deploy Laravel na VPS Hostinger com Nginx e PHP-FPM é um caminho bem comum quando você quer sair do ambiente local e colocar a aplicação em produção com mais controle de performance, segurança e custos. Em comparação com hospedagens compartilhadas, uma VPS te dá liberdade para ajustar versões de PHP, configurar cache, filas e agendamentos (queues e scheduler), além de “afinar” o Nginx do jeito certo para o Laravel.

Neste guia, a ideia é ser bem direto e amigável para iniciantes: você vai preparar a VPS, enviar seu projeto, configurar o Nginx para aplicações Laravel na Hostinger, ajustar o PHP-FPM (configuração para Laravel), organizar variáveis de ambiente e, por fim, ativar HTTPS com Let’s Encrypt no Nginx da Hostinger. Ao longo do processo, vou comentar armadilhas comuns (permissões, symlink do storage, cache de config, owner do diretório, etc.) para você não travar em erros clássicos como 403 Forbidden, 500 Internal Server Error ou No input file specified.

Contexto importante: o Laravel funciona muito bem com Nginx + PHP-FPM quando você configura corretamente o root apontando para public/ e redireciona tudo para index.php. Se isso estiver certo, metade dos problemas de deploy desaparece.

Ao final, você terá um passo a passo que pode repetir para qualquer projeto Laravel e, se quiser evoluir, já vai estar com uma base pronta para adicionar CI/CD, filas com Supervisor e melhorias de segurança.

Requisitos e preparação do ambiente na VPS Hostinger

Antes de transferir o projeto, vale preparar a VPS para receber uma aplicação Laravel. Isso evita retrabalho e ajuda a garantir que a primeira subida já aconteça com o mínimo de “surpresas”. O objetivo aqui é ter: Nginx, PHP-FPM com extensões corretas, Composer, um banco (se necessário) e um usuário com permissões adequadas.

1) Escolhendo a VPS e acessando

Para Laravel pequeno/médio, uma VPS com recursos moderados já segura bem (principalmente se você usar cache e otimizar as configs). O ponto é: você quer CPU/RAM suficientes para rodar PHP-FPM e, se for o caso, workers de fila.

Na Hostinger, a experiência costuma ser simples para quem está começando, porque você consegue gerenciar o servidor e crescer recursos quando precisar. Se você ainda não contratou, mais abaixo eu deixo a indicação com link e cupom.

Acesso inicial geralmente é via SSH:

  • Use o IP da VPS e as credenciais do painel.
  • Se possível, configure login por chave SSH (bem mais seguro do que senha).

2) Atualizando o sistema e instalando dependências

Em uma distro comum (Ubuntu/Debian), o fluxo padrão é atualizar pacotes e instalar Nginx, PHP-FPM e extensões do Laravel.

Exemplos de extensões frequentemente necessárias: mbstring, xml, curl, zip, gd, bcmath, mysql/pgsql (dependendo do banco), intl (se você usa internacionalização) e redis (se usar cache/queue com Redis).

Também instale o Composer, que é essencial para instalar dependências e otimizar autoload.

3) Ajuste de firewall e portas

O básico:

  • Porta 22 (SSH) — idealmente restrita por IP, quando possível.
  • Portas 80 (HTTP) e 443 (HTTPS) — para o site.

Em seguida, já dá para pensar em boas práticas simples: desabilitar login por senha no SSH (quando tiver chave), manter o sistema atualizado e evitar rodar serviços desnecessários.

4) Organização de pastas e usuário de deploy

Um padrão que funciona bem é hospedar projetos em algo como:

/var/www/seu-dominio.com/current

E guardar releases (se você quiser fazer deploy “sem downtime”) em:

/var/www/seu-dominio.com/releases/

Mesmo que você não use releases agora, defina uma estrutura clara. O que realmente importa para Laravel é garantir:

  • storage/ e bootstrap/cache/ graváveis pelo usuário do serviço (normalmente www-data).
  • o root do Nginx apontando para public/.

Com isso, sua VPS fica pronta para receber o código e você reduz drasticamente a chance de erros de permissão e 500 logo de cara.

🤖 Um próximo passo útil: automações e Agentes de IA rodando na sua própria VPS

Depois que você aprende a fazer deploy Laravel na VPS e se sente confortável com Nginx/PHP-FPM, fica bem natural querer automatizar rotinas: notificações, integrações com APIs, criação de leads, envio de mensagens, tarefas agendadas, etc. Nesse ponto, muita gente começa a olhar para automação visual e agentes — e o n8n é uma das ferramentas mais práticas para isso.

Se você curte essa ideia (e quer aprender de um jeito bem mão na massa), a Formação Agentes de IA (n8n) da Hora de Codar é um caminho que eu indicaria para um amigo: o conteúdo é bem estruturado, com 8100+ alunos, 11+ cursos, 221+ aulas, 20h+ e 21+ projetos, indo do básico até agentes com integrações e projetos prontos.

Se quiser dar uma olhada com calma, aqui está o link oficial:

  • https://app.horadecodar.com.br/lp/formacao-agentes-de-ia-n8n?utm_source=blog

A vantagem é que você complementa o “lado servidor” (que você praticou neste deploy) com o “lado automação”, e isso abre bastante possibilidades para produtos e serviços.

Treinamento completo em n8n do básico ao avançado

Como transferir e configurar seu projeto Laravel na VPS

Com o ambiente preparado, o próximo passo é colocar seu projeto na VPS e deixá-lo “rodável”. Aqui entram duas partes: transferência do código e configuração inicial do Laravel.

1) Transferindo o projeto: Git (recomendado) ou upload

Para produção, o caminho mais limpo é clonar via Git. Você pode:

  • Clonar o repositório diretamente na VPS.
  • Ou usar um deploy por pipeline (CI/CD) que faz isso automaticamente.

Se você ainda está no começo, clonar e rodar o Composer manualmente já resolve 90% dos casos.

2) Instalando dependências do PHP (Composer)

Dentro da pasta do projeto:

  • Execute composer install em modo produção.
  • Evite composer update no servidor (update altera versões; install respeita seu lockfile).

Depois, otimize o autoload para produção (--optimize-autoloader) e, se fizer sentido, --no-dev para não levar pacotes de desenvolvimento.

3) Configurando o .env e a chave da aplicação

Um erro bem comum é esquecer o .env (ou subir o .env errado). Em produção:

  • Crie/edite o .env com as credenciais de banco, cache, mail e APP_URL.
  • Garanta que APP_ENV=production.
  • Rode php artisan key:generate se ainda não houver chave.

4) Migrations, storage link e caches

Com banco configurado:

  • Rode migrations (com cuidado em apps já existentes; faça backup quando necessário).
  • Crie o link do storage: php artisan storage:link.

Depois, faça cache das configurações para ganhar performance:

  • php artisan config:cache
  • php artisan route:cache (se suas rotas permitem)
  • php artisan view:cache

Um detalhe importante: toda vez que você altera o .env em produção, você precisa recriar o cache de config, senão o Laravel continuará usando os valores antigos.

5) Permissões (o ponto que mais dá dor de cabeça)

Laravel precisa escrever em storage/ e em bootstrap/cache/. Se isso estiver errado, você verá erros 500, logs não escrevendo e falhas de sessão.

A regra prática é: manter o código como leitura (mais restrito) e dar escrita somente onde precisa. E sempre confirme o dono/grupo conforme o usuário do Nginx/PHP-FPM.

Com isso feito, você já terá um Laravel funcional “no backend”. Falta agora apontar o Nginx para a pasta certa e configurar o PHP-FPM para atender a aplicação com estabilidade.

Vídeo recomendado para complementar (VPS e deploy na prática)

Mesmo este guia sendo focado em Laravel, entender o “ritual” de configurar uma VPS e colocar um serviço no ar ajuda muito a ganhar confiança com Nginx, DNS e SSL. Por isso, recomendo este vídeo da nossa planilha — ele mostra um passo a passo bem prático de instalação em VPS, que conversa diretamente com a mentalidade de deploy que você acabou de aplicar aqui.

Assista e compare com o seu fluxo de deploy (principalmente a parte de domínio/HTTPS) — você vai conseguir identificar melhorias para deixar seu processo mais rápido e menos sujeito a erro:

Ver no YouTube: COMO INSTALAR n8n NA VPS EM 5 MINUTOS!

Configurando o Nginx para aplicações Laravel na Hostinger

A parte mais importante do configurar Nginx para Laravel na Hostinger é garantir que o Nginx sirva a pasta public/ e que qualquer rota do Laravel seja reescrita para index.php. Se você errar isso, vai cair em 404, arquivos expostos indevidamente ou comportamento estranho em rotas.

1) Estrutura correta do server e do root

No bloco do seu domínio (site), o root deve apontar para:

/var/www/seu-dominio.com/current/public

Isso é essencial: nunca aponte o root para a raiz do projeto, porque o Laravel tem arquivos sensíveis fora de public/.

2) try_files para funcionar com rotas amigáveis

O padrão mais usado (e que resolve quase tudo) é algo nessa linha conceitual:

  • Servir arquivo estático quando existir (CSS, JS, imagens).
  • Caso contrário, enviar para /index.php com query string.

Isso permite que rotas como /login, /dashboard e /api/... funcionem sem precisar criar regras por rota.

3) Configurando PHP-FPM no Nginx (passando para o socket certo)

No location ~ \.php$, você vai apontar para o socket/porta do PHP-FPM correspondente à versão instalada (por exemplo, php8.2-fpm). O erro clássico aqui é apontar para um socket que não existe.

Também é importante definir corretamente:

  • SCRIPT_FILENAME (usando $realpath_root$fastcgi_script_name).
  • include fastcgi_params (ou fastcgi.conf, dependendo da distro).

4) Aumentando limites para upload (quando necessário)

Se sua aplicação faz upload de arquivos, o Nginx tem limites próprios (client_max_body_size). Se não ajustar, o usuário recebe erro ao enviar arquivo e você fica procurando “bug no Laravel”.

5) Logs para depuração

Quando algo não funciona, os logs aceleram muito:

  • Access/error log do Nginx.
  • Log do Laravel em storage/logs/laravel.log.

Se a página dá 502, geralmente é Nginx não conseguindo falar com PHP-FPM (serviço parado, socket errado, timeout). Se dá 500, frequentemente é permissão, erro no .env/cache ou extensão faltando.

Com o Nginx apontando para public/ e com try_files bem configurado, seu Laravel “aparece” no navegador. A próxima etapa é garantir que o PHP-FPM esteja ajustado para carga real e que as variáveis de ambiente estejam do jeito certo para produção.

Ajustando PHP-FPM e variáveis de ambiente do Laravel

Depois de subir o site, é comum que ele “funcione”, mas ainda não esteja pronto para produção de verdade. Dois pontos fazem diferença: PHP-FPM Laravel configuração (performance/estabilidade) e a higiene do .env + caches do Laravel.

1) Ajustes úteis no PHP-FPM (sem complicar)

O PHP-FPM trabalha com pools e processos. Em produção, você quer evitar dois extremos:

  • Poucos processos: o site fica lento sob carga.
  • Muitos processos: você estoura RAM e derruba o servidor.

Em geral, para começar, mantenha o pool padrão e ajuste conforme o tamanho da sua VPS. Dois parâmetros comuns:

  • pm.max_children: quantos processos podem atender simultaneamente.
  • pm.* (startservers, min/maxspare_servers) quando em modo dynamic.

Outro ajuste importante é o memory_limit do PHP, especialmente se você roda tarefas pesadas (importações, PDFs, imagens). E se sua aplicação usa requests mais longos, ajuste max_execution_time com cuidado.

2) OpCache: o ganho “grátis” para Laravel

Em produção, ativar o OPcache é uma das melhorias mais simples: ele evita recompilar scripts PHP a cada request. Isso é particularmente bom em frameworks como Laravel.

3) .env: o que realmente precisa estar certo

Alguns campos do .env são decisivos:

  • APP_ENV=production
  • APP_DEBUG=false (não exponha stack trace em produção)
  • APP_URL=https://seu-dominio.com
  • DB_* (banco)
  • CACHE_STORE, SESSION_DRIVER, QUEUE_CONNECTION (dependendo do seu stack)

Se você usa Redis, configure o host/porta e teste conexão. Se usa filas, prepare workers (em produção costuma ser via Supervisor). Mesmo sem entrar em detalhes de Supervisor aqui, já vale pensar nisso se o app envia e-mails, processa jobs, integrações, etc.

4) Caches do Artisan e pegadinhas

O Laravel fica bem rápido quando você usa caches, mas isso traz uma regra de ouro:

Se mudar .env, configs ou rotas, limpe/recrie o cache.

Por exemplo:

  • Após mudar .env: rode php artisan config:cache.
  • Se der comportamento estranho: php artisan optimize:clear resolve muita coisa.

5) Permissões revisadas (de novo)

Toda vez que você roda Composer, muda release, faz deploy por Git, etc., permissões podem “voltar” erradas dependendo do usuário que executou os comandos. Então, se aparecer erro de escrita em storage/, volte a conferir owner e permissões.

Com PHP-FPM ajustado, OPcache ativo e .env bem configurado, sua aplicação fica consistente. Agora falta fechar com HTTPS e algumas práticas de segurança que deixam o deploy realmente profissional.

💻 VPS Hostinger para Laravel (Nginx + PHP-FPM): por que faz sentido

Se a sua meta é ter previsibilidade e controle no deploy Laravel na VPS Hostinger com Nginx e PHP-FPM, a Hostinger costuma ser uma escolha bem tranquila, principalmente para quem está saindo do compartilhado e quer uma VPS com painel amigável e suporte 24/7. O que eu gosto nessa abordagem é que você consegue começar menor e escalar quando o app crescer, sem reinventar o ambiente.

Além disso, a Hostinger tem infraestrutura estável (com promessa de 99,9% de uptime) e uma experiência que facilita o gerenciamento do VPS no dia a dia.

Se você for contratar a VPS por lá, use este link de indicação e o cupom para economizar:

  • Link: https://www.hostinger.com.br/horadecodar
  • Cupom: HORADECODAR

Isso ajuda bastante quando você está montando seu ambiente de produção e quer investir em algo que fique no ar sem dor de cabeça, mas ainda com liberdade para configurar Nginx e PHP do jeito certo para Laravel.

Hostinger A melhor VPS para seu n8n

Habilitando HTTPS com Let’s Encrypt e boas práticas de segurança

Colocar HTTPS é obrigatório hoje, e a boa notícia é que Let’s Encrypt no Nginx da Hostinger (em uma VPS) costuma ser um processo rápido usando o Certbot. Além do cadeado, HTTPS melhora confiança, permite recursos do navegador (como cookies seguros) e evita que dados trafeguem em texto puro.

1) Pré-requisitos do SSL

Antes de emitir o certificado, confirme:

  • Seu domínio aponta para o IP da VPS (registro A/AAAA correto).
  • Portas 80 e 443 liberadas.
  • O Nginx está respondendo no domínio.

Depois, você usa o Certbot para criar e instalar o certificado no Nginx. Ele normalmente:

  • gera o certificado;
  • edita o server block;
  • configura redirecionamento HTTP → HTTPS.

2) Renovação automática

Certificados Let’s Encrypt expiram. O Certbot geralmente configura um timer/cron para renovar automaticamente. Mesmo assim, vale testar a renovação (modo dry-run) para evitar sustos.

3) Ajustes no Laravel após ativar HTTPS

Após habilitar TLS:

  • Atualize APP_URL para https://....
  • Recrie o cache de config.

Se você usa sessão/cookies, ative SESSION_SECURE_COOKIE=true quando fizer sentido (principalmente se o site for 100% HTTPS).

4) Boas práticas simples de segurança (sem paranoia)

Aqui, menos é mais. Algumas ações já elevam bastante o nível:

  • Manter o sistema e pacotes atualizados.
  • Desabilitar APP_DEBUG.
  • Proteger o SSH (chaves, porta padrão ou restrição por IP).
  • Garantir que o Nginx só expõe o que deve (root em public/).
  • Configurar cabeçalhos básicos de segurança (quando você estiver confortável), como HSTS após validar tudo.

Em Laravel, também é bom revisar:

  • permissões de arquivos (evitar 777);
  • chaves e segredos fora do repositório;
  • rate limiting nas rotas sensíveis.

Com HTTPS ativo e essas boas práticas, você terá um deploy sólido e pronto para receber tráfego real — e o melhor: repetível para próximos projetos.

Quais são os requisitos para fazer deploy de Laravel na VPS Hostinger com Nginx e PHP-FPM?

Os requisitos incluem uma VPS ativa na Hostinger, acesso root via SSH, domínio configurado, PHP (de preferência >= 8.0) com PHP-FPM instalado, Composer para gerenciamento de dependências, Nginx configurado como servidor web e um banco de dados (MySQL, MariaDB, etc.).

Como configurar o Nginx para rodar um projeto Laravel na VPS da Hostinger?

Primeiro, faça upload dos arquivos do projeto Laravel para o diretório desejado. Em seguida, edite a configuração do Nginx adicionando um novo server block apontando o root para a pasta /public do seu projeto. Certifique-se de definir as permissões corretas nas pastas de storage e bootstrap/cache e reinicie o Nginx para aplicar as mudanças.

Como adicionar SSL e melhorar a segurança no deploy do Laravel na Hostinger?

Você pode usar o Certbot para instalar certificados SSL (Let’s Encrypt) rapidamente. Após instalar o SSL, redirecione todo o tráfego HTTP para HTTPS via configuração do Nginx. Reforce as permissões dos diretórios, desabilite o diretório de listagem no Nginx, atualize o .env para APP_ENV=production, e mantenha os pacotes sempre atualizados para garantir a segurança do seu app.

Conclusão

Fazer deploy Laravel na VPS Hostinger com Nginx e PHP-FPM deixa sua aplicação mais profissional porque você passa a controlar o que realmente impacta produção: estrutura do servidor, versões do PHP, configuração do Nginx, permissões, cache e SSL. Ao seguir a sequência certa — preparar a VPS, subir o código, configurar o Nginx para Laravel na Hostinger, ajustar a configuração do PHP-FPM para Laravel, organizar o .env e habilitar Let’s Encrypt no Nginx da Hostinger — você cria um processo repetível e muito mais confiável.

Se você quiser evoluir daqui, os próximos “degraus” naturais são: padronizar deploy com Git + CI/CD, adicionar workers de fila com Supervisor e monitorar logs/recursos (RAM/CPU) para ir ajustando o PHP-FPM com segurança. E, quando fizer sentido, automatizar rotinas com ferramentas como n8n/Agentes de IA pode complementar muito bem o seu stack.

Com esse guia, você já tem o essencial para publicar seu Laravel com performance e segurança em uma VPS — e, principalmente, entender o que está acontecendo em cada etapa do deploy.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments