Implante Next.js em um VPS: da construção ao HTTPS
Implante um aplicativo Next.js em um VPS Linux com um servidor de produção, systemd, um proxy reverso e verificações antes de alternar o tráfego.
Uma agência pode hospedar várias demonstrações, um site de marketing e uma pequena ferramenta interna. Compartilhar um VPS é uma opção quando você decide como os recursos são divididos e o que acontece quando um aplicativo recebe um pico de tráfego.
O número de projetos que um servidor pode hospedar não depende das portas disponíveis. Rotas, bancos de dados, construções e picos sobrepostos determinam a capacidade. Este guia explica como organizar e verificar esse compartilhamento.
Atribua a cada aplicativo um diretório de lançamento, processo supervisionado, porta local e suas próprias variáveis de ambiente. Um proxy reverso compartilhado seleciona o destino por domínio. As reinicializações devem ter como alvo um serviço identificável sem afetar os outros.
Para clientes diferentes, examine também as contas de serviço e as permissões. Os processos que compartilham uma conta podem acessar arquivos legíveis por essa conta. Uma porta separada não é um isolamento de segurança. Podem ser necessários contêineres ou máquinas separadas para o limite necessário.
Esta tabela ilustra um arranjo. Substitua os nomes example.com pelos seus domínios. As portas locais não são URLs públicas: o navegador se conecta ao proxy.
Cada domínio precisa de um certificado válido e de uma configuração apropriada. Verifique links absolutos, retornos de autenticação e cookies para esse domínio. Compartilhar um domínio em caminhos separados requer prefixo adicional e configuração de ativos. Os subdomínios geralmente evitam esse acoplamento.
Em telas pequenas, role a tabela horizontalmente.
| Aplicativo | Domínio | Ouvinte local |
|---|---|---|
| Site de marketing | www.exemplo.com | 127.0.0.1:3101 |
| Demonstração | demonstração.exemplo.com | 127.0.0.1:3102 |
| Ferramenta interna | ferramentas.exemplo.com | 127.0.0.1:3103 |
Registre carga ociosa, normal e pico de uso representativo para cada serviço. Adicione serviços compartilhados, o sistema operacional e espaço de implantação. Conte um banco de dados compartilhado uma vez no orçamento total, com seu próprio pico.
Em seguida, carregue dois aplicativos ao mesmo tempo. Testes isolados podem perder a competição por conexões de CPU, disco e banco de dados. Se uma equipa apresentar demonstrações durante o horário de trabalho, os períodos de atividade podem coincidir.
Em um sistema com os controladores necessários, o systemd pode monitorar e restringir um grupo de processos. Em uma visita ao serviço testado, MemoryHigh introduz pressão de recuperação, enquanto MemoryMax define um limite rígido que pode levar ao encerramento. CPUQuota limita o tempo CPU.
Este fragmento ilustra a sintaxe. Substitua os valores após a medição; eles não são recomendados para dimensionamento Next.js. Um aplicativo que atinge seu limite pode ficar lento ou falhar, portanto, inspecione a latência, os eventos de memória e os logs. O limite deve cobrir os processos filhos e também os pais.
[Service]
MemoryAccounting=yes
MemoryHigh=512M
MemoryMax=768M
CPUQuota=100%Planeje compilações e limpeza separadamente dos processos ativos. Quando possível, crie um CI compatível e implante um artefato verificado. Caso contrário, inclua a construção no orçamento de recursos compartilhados e evite compilações dispendiosas e simultâneas.
Use um diretório por versão e verifique antes de mudar. As conexões e ativos existentes necessários para guias já abertas requerem atenção. Os backups de bancos de dados permanecem separados dos arquivos de aplicativos; teste periodicamente a restauração usando dados de teste.
PRNext pode liberar a memória dos trabalhadores ociosos ao custo do trabalho de ativação. Isso pode ajudar quando os períodos de inatividade são longos e as visitas iniciais podem aceitar o atraso. Sondagens frequentes ou solicitações em segundo plano podem alterar o comportamento.
Antes de adicionar projetos, teste também ativações simultâneas. A investigação de memória publicada de PRNext cobre um pequeno aplicativo; não estabelece uma contagem garantida de sites. Os bancos de dados, o proxy, o sistema e os caches mantêm seus próprios requisitos.