Lädt...


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


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

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 

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
  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
  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

Edite com o texto abaixo.

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

Clone sua aplicação do GitHub.

git clone https://github.com/OnlyCoiners/digitalocean_deployment_examples.git

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
  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

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

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

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

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

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;
    }
}

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

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>

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

Dicas para solução de problemas

  • Verifique os logs da aplicação para erros:
$pm2 logs onlycoiners_node
  • 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.

...

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


📈 146.94 Punkte
🔧 Programmierung

🔧 Cómo Implementar una Aplicación Node.js en un Droplet de DigitalOcean y otra VM


📈 57.95 Punkte
🔧 Programmierung

🔧 How to Deploy a Node.js App to DigitalOcean Droplet or Other Linux VM


📈 46.91 Punkte
🔧 Programmierung

🔧 How to Host Multiple Node.js Applications on a Single DigitalOcean Droplet with PM2 and Nginx


📈 46.91 Punkte
🔧 Programmierung

🔧 Implantando um aplicativo Angular com DigitalOcean e GitHub de forma gratuita


📈 43.74 Punkte
🔧 Programmierung

🔧 Como fui aprovada em Duas Iniciações Cientificas: Uma Com Bolsa e Outra Voluntária


📈 42.28 Punkte
🔧 Programmierung

🔧 Generate a SSL with certbot on digitalocean droplet


📈 40.19 Punkte
🔧 Programmierung

🔧 New DigitalOcean Droplet Setup


📈 40.19 Punkte
🔧 Programmierung

🔧 Using Terraform to deploy a web site to a DigitalOcean droplet with Cloudflare


📈 40.19 Punkte
🔧 Programmierung

🔧 Deploy a Medusa Server on DigitalOcean Droplet with Easypanel: A Step-by-Step Guide


📈 40.19 Punkte
🔧 Programmierung

🔧 Safely Updating Your Deployed Next.js App on a DigitalOcean Droplet.


📈 40.19 Punkte
🔧 Programmierung

🔧 Como criar um aplicativo React Native eficiente e fluido


📈 37.56 Punkte
🔧 Programmierung

🔧 Como criar um aplicativo React Native eficiente e fluido


📈 37.56 Punkte
🔧 Programmierung

🔧 Como Configurar Anúncios do AdMob em um Aplicativo React Native Usando Expo


📈 37.56 Punkte
🔧 Programmierung

🔧 Como iniciar um aplicativo Spring Boot + JPA + MySQL


📈 37.56 Punkte
🔧 Programmierung

📰 Los clientes de SAP están tardando en implantar la IA de forma generalizada


📈 31.24 Punkte
📰 IT Security Nachrichten

🔧 Migrando Aplicativos de uma Nuvem para Outra - Parte 2


📈 31.24 Punkte
🔧 Programmierung

🔧 Migrando Aplicativos de uma Nuvem para Outra - Parte 1


📈 31.24 Punkte
🔧 Programmierung

📰 Los guardarraíles, la clave para implantar una IA segura y eficaz


📈 31.24 Punkte
📰 IT Security Nachrichten

📰 Cinco mejores prácticas para implantar con éxito la IA generativa


📈 31.24 Punkte
📰 IT Security Nachrichten

🕵️ http://aplicativo.drehuancavelica.gob.pe/!.php


📈 26.52 Punkte
🕵️ Hacking

🔧 Medindo o desempenho de um aplicativo em React Native


📈 26.52 Punkte
🔧 Programmierung

🔧 Medindo o desempenho de um aplicativo em React Native


📈 26.52 Punkte
🔧 Programmierung

🔧 Destrancando o Docker: Garantindo que seu aplicativo espere pelo banco de dados com Dockerize


📈 26.52 Punkte
🔧 Programmierung

🕵️ http://aplicativo.onda.gob.do/ARCH/xx.html_1675403289.html


📈 26.52 Punkte
🕵️ Hacking

🎥 Automatic Node Repair on DigitalOcean Kubernetes


📈 23.94 Punkte
🎥 Video | Youtube

🔧 How to Fix No Internet Connection in Digital Ocean's Droplet


📈 22.97 Punkte
🔧 Programmierung

🎥 Introducing Droplet Autoscaling: Seamless Scaling for Your Workloads


📈 22.97 Punkte
🎥 Video | Youtube

🎥 Introducing Droplet Autoscaling: Seamless Scaling for Your Workloads


📈 22.97 Punkte
🎥 Video | Youtube

🎥 Premium CPU Optimized 96 vCPU Droplet Demo


📈 22.97 Punkte
🎥 Video | Youtube

🔧 How to accessible multiple services via different domain or subdomain in DO droplet by Nginx


📈 22.97 Punkte
🔧 Programmierung

🔧 PostgreSQL Migration From Digital Ocean DBaaS to Digital Ocean Droplet


📈 22.97 Punkte
🔧 Programmierung

🕵️ Mattermost Packages up to 5.16.2 Droplet exposure of resource


📈 22.97 Punkte
🕵️ Sicherheitslücken

matomo