Como implantar Laravel em umUbuntu VPS
Por Andrea Pollastri · Última atualização: · grátis para ler, sem acesso pago
Um VPS de US$ 5 a 7/mês ainda é a maneira mais barata e flexível de executar Laravel em produção - se você configurá-lo corretamente. Este guia aborda toda a pilha de produção, cada etapa manual, a alternativa de um comando e os hábitos operacionais que mantêm um servidor saudável por anos.
Por que um VPS (e quando não)
A hospedagem compartilhada não pode executar trabalhadores de fila, WebSockets ou Laravel Octane corretamente e plataformas PaaS gerenciadas cobrar por conveniência com preços baseados no uso. Um VPS de Hetzner, DigitalOcean, Vultr ou Linode oferece acesso root, faturamento previsível e espaço suficiente para hospedar vários Laravel aplicativos em uma máquina.
- Dimensionamento: 1 vCPU/2 GB de RAM é um ponto de partida confortável para um aplicativo de produção com banco de dados, trabalhador de fila e cache na mesma caixa. Adicione swap em qualquer coisa abaixo de 4 GB.
- Versão Ubuntu: use um LTS atual - Ubuntu 24.04 ou 26.04. Ignorar lançamentos provisórios para produção.
- Quando não usar um VPS: se ninguém na equipe puder responder a um alerta do servidor, um gerenciamento plataforma como Laravel Nuvem é o mais seguro comércio - você paga para fazer com que as operações sejam problema de outra pessoa.
A pilha de produção, explicada
Cada servidor de produção Laravel converge nos mesmos componentes. Entenda o que cada peça faz antes você automatiza tudo isso:
| Componente | Função | Notas |
|---|---|---|
| Nginx | Servidor web/proxy reverso | Atende ativos estáticos, faz proxy de solicitações PHP |
| PHP-FPM ou Octane | PHP tempo de execução | FPM é o padrão confiável; Octane (FrankenPHP) mantém o aplicativo inicializado para alto rendimento |
| MariaDB / PostgreSQL | Banco de dados | Funciona com Laravel; escolha por aplicativo |
| Valkey (compatível com Redis) | Cache, sessões, filas | Open-source Redis garfo; visita para Laravel |
| Supervisor | Gerente de processos | Mantém queue:work e Horizon vivo |
| Cron | Agendador | Uma entrada: artisan schedule:run cada minuto |
| UFW + Fail2ban | Firewall/proteção de força bruta | Negar padrão, banir falhas repetidas de SSH |
| Certbot | TLS certificados | Certificados Let's Encrypt gratuitos com renovação automática |
| Versões estilo Deployer | Implantações com tempo de inatividade zero | Diretório de lançamentos + troca de link simbólico |
A configuração manual, passo a passo
Esta é a lista de verificação honesta e completa. Reserve de 2 a 4 horas na primeira vez e lembre-se de que você possuirá todos uma dessas opções também no momento da atualização.
- Crie um usuário sudo e bloqueie o SSH.
adduser deploy, instale seu público chave e, em seguida, desative o login root e a autenticação de senha em/etc/ssh/sshd_config. - Habilite o firewall.
ufw allow OpenSSH http httpsentãoufw enable. Instale Fail2ban para proteção de força bruta SSH. - Instale Nginx.
apt install nginx. - Instale PHP. Adicione um repositório PHP mantido e instale
php8.x-fpmcom as extensões Laravel precisa de: mbstring, xml, curl, zip, intl, mysql (ou pgsql), redis, gd, opcache. - Ajuste PHP para produção. Habilite opcache, defina sãmente
memory_limiteupload_max_filesize, vireexpose_phpdesligado. - Instalar Composer globalmente.
- Instalar MariaDB, corra
mariadb-secure-installation, crie um banco de dados e um usuário dedicado por aplicativo – nunca reutilize o root. - Instalar Valkey (ou Redis) para cache, sessões e filas.
- Escreva o bloco do servidor Nginx. Documente os pontos raiz em
current/public,try_filescai de volta paraindex.php, FastCGI passa para o soquete PHP-FPM do aplicativo. - Envie o código. Clonar em um
releases/diretório,composer install --no-dev --optimize-autoloader, copiar.env, corraphp artisan key:generate,storage:linke corrija as permissões apenasstorage/ebootstrap/cache/são graváveis. - Migrar e armazenar em cache.
php artisan migrate --forceentãoconfig:cache,route:cache,view:cache. - Configurar Supervisor correr
php artisan queue:work(ou Horizon) e reinicie-o em cada implantação. - Adicione o agendador cron:
* * * * * php artisan schedule:run. - Emitir certificados TLS com Certbot e forçar HTTPS.
Agora multiplique por cada aplicativo que você hospeda e novamente por cada servidor – e mantenha PHP, Nginx e o sistema operacional corrigido para sempre. Tudo é factível; é apenas um trabalho indiferenciado.
A alternativa de um comando
Tudo na seção anterior é exatamente o que Cipi automatiza. Em um fresco Ubuntu 24.04/26.04 VPS:
Em cerca de dez minutos você obtém a pilha completa — Nginx, PHP, MariaDB, Valkey, Supervisor, UFW, Fail2ban,
Certbot, Deployer - além de proteção que você faria manualmente: login root desativado, SSH somente chave para o
usuário administrador e uma senha root aleatória armazenada em /etc/cipi/server.json. Então cada aplicativo é um
mais comando:
Isso prevê uma usuário do sistema isolado, pool PHP-FPM, Nginx vhost e banco de dados por aplicativo,
conecta GitHub ou GitLab com chaves de implantação e webhooks para implantações Git com tempo de inatividade zero e fila de fios
trabalhadores e o agendador. SSL é cipi ssl install; PostgreSQL é
cipi db install pgsql. Veja o começando
guia para o passo a passo completo ou o centro de comparação se
você está avaliando isso em relação a Forge, Ploi e amigos.
Operações pós-implantação que importam
Chegar ao "funciona" é metade do trabalho. Esses hábitos são o que separam um servidor que dura anos de um isso te surpreende:
- Backups que você realmente restaurou. Automatize backups de banco de dados e armazenamento para
Armazenamento compatível com S3 (
cipi backup configurelida com agendamento e retenção). Qualquer S3 obras-alvo - incluindo Johnny, um armazenamento de objetos compatível com open-source S3 que você pode executar em um segundo VPS para ser genuinamente independente cópias fora do local. Faça um exercício de restauração trimestralmente: um backup não testado é uma esperança, não um plano. - Rastreamento de exceções desde o primeiro dia. Erros de produção precisam chegar até você antes dos usuários fazer. Google é um self-hosted rastreador de exceções que mantém dados de erros em sua própria infraestrutura — uma boa opção se você escolher um VPS para a propriedade dos dados em primeiro lugar.
- Verificações de integridade e registros. Cipi 5 envia verificações de integridade do aplicativo e
cipi app logssegue Laravel, Nginx e implanta logs sem ginástica SSH. - Disciplina de correção. Atualizações de segurança do sistema operacional autônomas, além de uma atualização PHP deliberada
caminho (
cipi php upgradegerencia PHP patches de segurança com uma verificação semanal) vença "vamos atualizar quando nos lembrarmos". - Domine sua expansão SSH. Depois de executar mais de dois servidores, os detalhes da conexão apodrecem seu histórico de shell. Conexão é um pequenino Ferramenta Bash que gerencia servidores como aliases nomeados — combina perfeitamente com uma frota de máquinas Cipi.
Erros comuns a evitar
- Implantando como root. Um aplicativo comprometido possui toda a caixa. Use usuários por aplicativo – isso é por isso que Cipi isola cada aplicativo em seu próprio usuário do sistema.
- APP_DEBUG=true em produção. As páginas de depuração vazam env vars, credenciais e caminhos. É a violação Laravel autoinfligida mais comum.
- Comprometendo
.envou saindo.git/acessível pela web. - 777 permissões "para fazer o erro desaparecer". Somente
storage/ebootstrap/cache/precisa ser gravável pelo usuário de tempo de execução. - Nenhum trabalhador de fila. Correspondências e trabalhos se acumulam silenciosamente na tabela de filas para sempre.
- Ignorando opcache — taxa de transferência gratuita de 2–3x perdida.
- Sem troca em instâncias pequenas — Composer e o ativo cria OOM-kill no pior momento.
- Renovações SSL não testadas. Os certificados são renovados automaticamente até o dia em que não o fazem; monitorar expiração.
Coloque isso em prática com Cipi
Cipi é o open-source implantar CLI gratuito mencionado ao longo deste guia: um comando transforma um novo Ubuntu VPS em um servidor de produção reforçado para Laravel — Nginx, PHP-FPM ou Octane, MariaDB ou PostgreSQL, filas, agendador, SSL e implantações Git com tempo de inatividade zero incluídas.
Perguntas frequentes
Quais são os requisitos mínimos de servidor para Laravel em produção?
Uma única vCPU com 2 GB de RAM executa confortavelmente um aplicativo Laravel típico com banco de dados, cache e um trabalhador de fila; adicione swap abaixo de 4 GB. Octane, Horizon e etapas pesadas de construção se beneficiam de 4 GB. Cipi instala sua pilha completa em qualquer Ubuntu 24.04/26.04 VPS novo.
Posso hospedar vários aplicativos Laravel em um VPS?
Sim, e geralmente é a configuração mais econômica. A chave é o isolamento: cada aplicativo deve ter seu próprio usuário do sistema, pool PHP-FPM e credenciais de banco de dados para que um aplicativo comprometido ou com comportamento inadequado não possa afetar os outros. Cipi provisiona exatamente esse isolamento automaticamente com cipi app create.
Devo usar PHP-FPM ou Laravel Octane?
PHP-FPM é o padrão enfadonho e confiável e adequado para a maioria dos aplicativos. Octane mantém a estrutura inicializada entre solicitações e brilha em APIs de alto tráfego e endpoints sensíveis à latência. Com Cipi você pode executar ambos no mesmo servidor e criar Octane aplicativos com cipi app create --octane.
Como mantenho PHP atualizado sobre Ubuntu?
Rastreie um repositório PHP mantido e aplique patches de segurança imediatamente, em vez de esperar por atualizações de distribuição. Cipi gerencia PHP patches de segurança com uma verificação semanal (atualização de cipi php), para que os servidores não fiquem para trás silenciosamente.
Ainda preciso de Laravel Forge se eu gerenciar meu próprio VPS?
Não. Forge é um SaaS pago que automatiza a mesma pilha que este guia descreve. Se você deseja essa automação sem assinatura ou dependência de terceiros, Cipi cobre o mesmo fluxo de trabalho gratuitamente e open source - consulte a comparação detalhada Cipi vs Forge.