DEV Community

Cover image for Como Implantar um Aplicativo Node.js em um Droplet do DigitalOcean e outra VM
OnlyCoiners
OnlyCoiners

Posted on

1 1 1 1 1

Como Implantar um Aplicativo Node.js em um Droplet do DigitalOcean e outra VM

Implantar uma aplicação Node.js em um Droplet da DigitalOcean ou em qualquer máquina virtual Linux é importante para colocar seu projeto online.

Este guia utiliza SSH, GitHub, PM2 e Nginx para uma implantação eficiente e confiável de uma aplicação Node.js na DigitalOcean.

Você também pode usá-lo para outras máquinas virtuais.

Usaremos o PM2 principalmente porque já está pré-instalado e funcionando com a configuração padrão fornecida pela DigitalOcean.

No entanto, há também razões para usar o PM2.

PM2 é um poderoso gerenciador de processos para aplicações Node.js, projetado para facilitar sua vida ao executar e gerenciar aplicativos em produção. Vai além de simplesmente iniciar sua aplicação: fornece um conjunto de recursos que garantem que sua aplicação funcione de forma tranquila e confiável, mesmo nos ambientes mais exigentes.

Temos um grupo no WhatsApp para postagens de empregos usando o processo descrito neste post.

Você pode participar para ver as últimas vagas. Você também pode encontrar e postar empregos no nosso quadro de empregos.

Por que usar o PM2

  1. Reinício Automático

    O PM2 reinicia automaticamente sua aplicação caso ela falhe, garantindo zero tempo de inatividade. Isso é essencial em ambientes de produção onde a confiabilidade é crítica.

  2. Gerenciamento de Processos

    Permite gerenciar várias aplicações em um único servidor de forma fácil. Com comandos simples como pm2 start, stop, restart e delete, você tem controle total sobre seus processos.

  3. Monitoramento Integrado

    O PM2 fornece monitoramento em tempo real do desempenho da sua aplicação, exibindo o uso de CPU e memória. Isso ajuda a identificar gargalos e otimizar sua aplicação.

  4. Scripts de Inicialização

    Quando você reinicia seu servidor, o PM2 garante que suas aplicações iniciem automaticamente gerando um script de inicialização adaptado ao seu sistema.

  5. Gerenciamento de Logs

    O PM2 consolida logs de todas as suas aplicações em um único local. Você pode visualizar, seguir ou limpar logs com um único comando, tornando a depuração muito mais gerenciável.

  6. Modo de Cluster

    Quer utilizar todos os núcleos de CPU do seu servidor? O modo de cluster do PM2 facilita a escalabilidade horizontal da sua aplicação, maximizando o desempenho.

  7. Fácil de Usar

    Com uma CLI limpa e intuitiva, o PM2 é amigável para iniciantes e ainda oferece recursos avançados para desenvolvedores experientes.

  8. Multiplataforma

    O PM2 funciona perfeitamente em vários sistemas operacionais, incluindo Linux, macOS e Windows, tornando-o uma escolha versátil para qualquer ambiente.

O PM2 possui recursos robustos e simplicidade que o tornam uma solução preferida para implantações em produção. Seja escalando um aplicativo inicial ou gerenciando uma aplicação de alto tráfego, o PM2 garante estabilidade e proporciona tranquilidade. Ele capacita os desenvolvedores a focarem na criação de recursos em vez de se preocuparem com o gerenciamento de processos, tornando-se uma ferramenta inestimável no seu arsenal.

Pré-requisitos

  1. Aplicação Node.js: Uma aplicação Node.js pronta para implantação.
  2. Droplet da DigitalOcean: Configurado com Ubuntu ou similar.
  3. Acesso SSH: Configurado para login seguro.
  4. Nginx: Para configuração de proxy reverso.

Se você não tem nenhuma aplicação Node.js para testar, pode usar nosso exemplo.

$git clone https://github.com/OnlyCoiner/digitalocean_deployment_examples.git
$cd node
$yarn
$yarn test
$yarn dev 
Enter fullscreen mode Exit fullscreen mode

Configurar SSH e GitHub

  1. Criar o Droplet

Alt text

Crie uma conta ou faça login no DigitalOcean e crie um Droplet para Node.js. Você pode usar o console e executar os comandos abaixo.

Alt text

Use o script padrão nodesource_setup.sh e você terá a maioria dos requisitos prontos, incluindo git, node, yarn ou npm, etc. Caso contrário, você pode instalá-los manualmente, como fez no seu laptop.

./nodesource_setup.sh
Enter fullscreen mode Exit fullscreen mode
  1. Transferir a chave SSH

Salve sua chave SSH ~/.ssh/your_private_key no Droplet ou sua máquina virtual para baixar seu projeto do GitHub ou outros com o comando $git pull.

Você pode criar uma aqui https://github.com/settings/keys para o GitHub, caso ainda não tenha.

$scp ~/.ssh/your_private_key root@<your-droplet-ip>:~/.ssh/
$chmod 600 ~/.ssh/your_private_key
Enter fullscreen mode Exit fullscreen mode
  1. Configurar o acesso SSH

Edite o arquivo de configuração SSH no seu servidor.

Dessa forma, você também pode enviar suas atualizações para um repositório git, se desejar.

$vim ~/.ssh/config
Enter fullscreen mode Exit fullscreen mode

Edite com o texto abaixo.

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/your_private_key
  AddKeysToAgent yes
Enter fullscreen mode Exit fullscreen mode
  1. Clonar o repositório

Clone sua aplicação do GitHub.

git clone https://github.com/OnlyCoiners/digitalocean_deployment_examples.git
Enter fullscreen mode Exit fullscreen mode

Usar o PM2 para gerenciar sua aplicação Node.js

  1. Parar aplicações padrão

A aplicação Node.js padrão da DigitalOcean pode estar em execução. Pare-a e exclua-a primeiro.

$pm2 list
$pm2 stop hello
$pm2 delete hello
$pm2 save
$pm2 save --force
Enter fullscreen mode Exit fullscreen mode
  1. Iniciar sua aplicação Node.js

Dependendo da sua configuração, use um dos comandos abaixo

$pm2 start npx --name onlycoiners_node -- tsx ./src/index.ts
Enter fullscreen mode Exit fullscreen mode

Você verá alguns logs do pm2 e outras mensagens no seu console.

O servidor da OnlyCoiners está rodando na porta 8888
Enter fullscreen mode Exit fullscreen mode
  1. Salvar e configurar o PM2
$pm2 list
$pm2 save
$pm2 startup
Enter fullscreen mode Exit fullscreen mode

Use $pm2 list para verificar se sua aplicação está funcionando e $pm2 save para salvar suas atualizações.

Use $pm2 startup para que sua aplicação continue funcionando após fechar sua conexão SSH com o droplet ou máquina virtual.

  1. Verificar logs
$pm2 logs
$pm2 logs onlycoiners_node
Enter fullscreen mode Exit fullscreen mode

Sua aplicação pode não funcionar na primeira tentativa. Use $pm2 logs ou $pm2 logs <yourappname> para depurar.

Configurar o Nginx como proxy reverso

  1. Editar configuração do Nginx
$sudo vim /etc/nginx/sites-available/default
Enter fullscreen mode Exit fullscreen mode

Edite para usar o trecho de código abaixo e inclua o número da porta da sua aplicação.

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location ^~ /assets/ {
        gzip_static on;
        expires 12h;
        add_header Cache-Control public;
    }

    location / {
        proxy_http_version 1.1;
        proxy_cache_bypass $http_upgrade;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://localhost:8888;
    }
}
Enter fullscreen mode Exit fullscreen mode

Dessa forma, você poderá usar curl para o IP do seu projeto diretamente, em vez de atribuir o número da porta.

  1. Reiniciar o Nginx

Após a atualização, reinicie seu nginx para que sua atualização funcione.

$sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

Testar sua configuração

  1. Verificar Nginx e Node.js

Use curl para testar sempre que fizer atualizações e verificar se está funcionando ou não.

$curl localhost:8888  # Aplicação Node.js
$curl localhost       # Proxy reverso Nginx

$curl <your-server-ip>
Enter fullscreen mode Exit fullscreen mode

Eles devem mostrar os mesmos resultados com "Crie, Ganhe e Conecte-se com OnlyCoiners! Junte-se a https://www.onlycoiners.com" ou outros dependendo do seu projeto.

Use $curl <your-server-ip> após fechar a conexão SSH com o droplet ou máquina virtual para verificar se a aplicação ainda está funcionando após fechar a conexão.

  1. Verificar status do PM2

Opcionalmente, você pode testar se o PM2 está gerenciando sua aplicação corretamente com esses comandos novamente.

$pm2 list
$pm2 logs
Enter fullscreen mode Exit fullscreen mode

Dicas para solução de problemas

  • Verifique os logs da aplicação para erros:
$pm2 logs onlycoiners_node
Enter fullscreen mode Exit fullscreen mode
  • Certifique-se de que sua chave SSH e configuração do Nginx estão corretas.

Conclusão

Implantar uma aplicação Node.js na DigitalOcean ou em uma máquina virtual Linux com PM2 e Nginx garante confiabilidade e escalabilidade. Seguindo este guia, você poderá fazer seu projeto funcionar com a DigitalOcean ou outras máquinas virtuais Linux.

Postgres on Neon - Get the Free Plan

No credit card required. The database you love, on a serverless platform designed to help you build faster.

Get Postgres on Neon

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay