Como implantar um aplicativo NestJS com Nginx no Ubuntu VPS

Como implantar um aplicativo NestJS com Nginx no Ubuntu VPS

Introdução

NestJS é um framework Node.js moderno e orientado a padrões que simplifica o desenvolvimento de aplicativos de back-end escaláveis. Ele oferece recursos avançados como injeção de dependência, roteamento modular e validação de dados integrada. Um aplicativo NestJS bem projetado pode fornecer desempenho excepcional, facilidade de manutenção e extensibilidade.

Para implantar um aplicativo NestJS em um ambiente de produção, é crucial usar um servidor web eficiente e confiável. O Nginx é um servidor web de alto desempenho e baixo consumo de recursos conhecido por sua estabilidade e escalabilidade. Este guia fornecerá instruções passo a passo sobre como implantar um aplicativo NestJS com Nginx em um Ubuntu VPS.

Configurando o Ubuntu VPS

1. Criar uma nova instância do VPS

Escolha um provedor de VPS confiável e crie uma nova instância do Ubuntu 20.04 LTS. Certifique-se de selecionar um plano com recursos suficientes para suportar seu aplicativo NestJS.

2. Conectar-se ao VPS

Estabeleça uma conexão SSH com seu VPS usando um cliente SSH como PuTTY ou OpenSSH. Você precisará do endereço IP do VPS e dos detalhes de login do usuário root.

3. Atualizar o sistema

Antes de prosseguir com a instalação, é recomendável atualizar o sistema operacional:


sudo apt update
sudo apt upgrade -y

Instalando o Node.js e o NestJS

1. Instalar o Node.js

Use o gerenciador de pacotes apt para instalar o Node.js LTS mais recente:


sudo apt install nodejs -y

Verifique a versão do Node.js instalada:


node -v

2. Instalar o NestJS

Use o gerenciador de pacotes npm para instalar o NestJS globalmente:


sudo npm install -g @nestjs/cli

Crie um novo aplicativo NestJS:


nest new my-nest-app

Navegue até o diretório do aplicativo:


cd my-nest-app

Compilando o aplicativo NestJS

Execute o seguinte comando para compilar o aplicativo NestJS:


npm run build

Instalando o Nginx

1. Instalar o Nginx

Use o gerenciador de pacotes apt para instalar o Nginx:


sudo apt install nginx -y

Verifique o status do Nginx:


sudo systemctl status nginx

2. Configurando o Nginx

Crie uma nova configuração de servidor para o aplicativo NestJS:


sudo nano /etc/nginx/sites-available/my-nest-app.conf

Cole a seguinte configuração:


server {
listen 80;
server_name your-domain.com;

location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

Ative a configuração do servidor:


sudo ln -s /etc/nginx/sites-available/my-nest-app.conf /etc/nginx/sites-enabled/my-nest-app.conf

Recarregue o Nginx:


sudo systemctl reload nginx

Implantando o aplicativo NestJS

1. Executando o aplicativo NestJS

Inicie o aplicativo NestJS em segundo plano:


pm2 start npm --name my-nest-app -- run serve

Verifique se o aplicativo está funcionando:


pm2 list

2. Configurando o firewall

Abra a porta 80 no firewall:


sudo ufw allow 80

Conclusão

Seguindo as etapas descritas neste guia, você implantou com sucesso um aplicativo NestJS com Nginx em um Ubuntu VPS. Esta configuração fornece um ambiente estável, escalável e de alto desempenho para executar seu aplicativo NestJS em produção. O Nginx gerencia efetivamente o tráfego de entrada, enquanto o NestJS oferece um framework robusto e flexível para o desenvolvimento de aplicativos de back-end.

Ao otimizar ainda mais seu aplicativo NestJS, considere as seguintes práticas recomendadas:

* Use cache apropriadamente para melhorar o desempenho
* Implemente estratégias de balanceamento de carga para alta disponibilidade
* Monitore seu aplicativo regularmente e faça ajustes conforme necessário
* Mantenha seu sistema atualizado com as versões mais recentes do software

Continuando a aprimorar e manter seu aplicativo NestJS, você pode garantir sua operação contínua e eficiente em um ambiente de produção.

FAQs

1. Por que usar o Nginx com o NestJS?

O Nginx é um servidor web poderoso e eficiente que complementa o NestJS, oferecendo melhor desempenho e escalabilidade.

2. Como configurar HTTPS para meu aplicativo NestJS implantado?

Você pode configurar HTTPS usando um certificado SSL. Consulte a documentação do Nginx e do NestJS para obter mais informações.

3. Como gerenciar logs para meu aplicativo NestJS implantado?

Use uma ferramenta de gerenciamento de logs como o Logstash ou o Kibana para coletar e monitorar logs.

4. Posso implantar o NestJS em outras plataformas além do Ubuntu?

Sim, o NestJS pode ser implantado em outras plataformas como Windows ou MacOS.

5. Como otimizar o desempenho do meu aplicativo NestJS?

Use cache, índices de banco de dados e reduza a complexidade da consulta para melhorar o desempenho.

6. Como proteger meu aplicativo NestJS de ataques?

Implemente medidas de segurança como autenticação, autorização e proteção contra ataques de injeção de SQL.

7. Como posso monitorar o status do meu aplicativo NestJS implantado?

Use ferramentas de monitoramento como o New Relic ou o Prometheus para rastrear métricas de desempenho e identificar problemas.

8. Posso usar containers para implantar meu aplicativo NestJS?

Sim, você pode usar containers como Docker ou Kubernetes para implantar e gerenciar seu aplicativo NestJS.