Hospede vários aplicativos React em um VPS

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.

Dê um limite a cada aplicativo

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.

Planeje domínios e portas locais

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.

Um exemplo de inventário, não uma medida de capacidade.
AplicativoDomínioOuvinte local
Site de marketingwww.exemplo.com127.0.0.1:3101
Demonstraçãodemonstração.exemplo.com127.0.0.1:3102
Ferramenta internaferramentas.exemplo.com127.0.0.1:3103

Orçamento para picos que se sobrepõem

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.

Crie um orçamento de memória a partir de suas medições

Defina limites de recursos explícitos

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.

substituir.conf
[Service]
MemoryAccounting=yes
MemoryHigh=512M
MemoryMax=768M
CPUQuota=100%

Evite que as compilações sobrecarreguem os aplicativos vizinhos

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.

Avalie o sono para projetos intermitentes

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.

Entenda as configurações do sono e suas limitações

Verifique a implantação pública de cada aplicativo

Fontes e leituras adicionais

De volta ao blog