Implantação de aplicação JavaScript em VPS: guia avançado passo a passo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: do servidor local à solução pronta para produção

Você criou uma poderosa aplicação JavaScript em Node.js, testou-a localmente e agora é hora de mostrá-la ao mundo. Simplesmente enviar arquivos para a VPS e executar node app.js é o caminho do iniciante. No nível avançado, a implantação inclui a configuração de um proxy reverso, um gerenciador de processos, renovação automática de certificados SSL, um sistema de integração e entrega contínuas (CI/CD), além de monitoramento e registro de logs adequados.

Neste artigo, abordaremos o processo passo a passo de implantação de uma aplicação Node.js em uma VPS (Ubuntu 22.04) em nível avançado. Configuraremos Nginx como proxy reverso, PM2 para gerenciamento de processos, Let's Encrypt para HTTPS, GitHub Actions para implantação automática ao fazer push no repositório e adicionaremos monitoramento básico.



Pré-requisitos

  • Servidor VPS (Ubuntu 22.04) com acesso SSH.
  • Domínio apontado para o IP do seu servidor (exemplo: myapp.example.com).
  • Node.js (v18+) e npm instalados no servidor.
  • Git instalado no servidor.
  • Repositório da sua aplicação no GitHub.


1. Configuração do servidor e do gerenciador de processos PM2

Começaremos com a preparação básica do ambiente. Após conectar-se ao servidor via SSH, atualize os pacotes e instale os utilitários necessários:

sudo apt update && sudo apt upgrade -ysudo apt install nginx git curl -y

Verifique se o Node.js está instalado. Caso contrário, instale-o via NodeSource:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -sudo apt install -y nodejsnode -vnpm -v

Agora, instale globalmente o PM2 — um gerenciador de processos avançado para Node.js que reinicia automaticamente a aplicação em caso de falha, gerencia logs e clustering:

sudo npm install -g pm2

Clone o repositório da sua aplicação e instale as dependências:

git clone https://github.com/seu-usuario/seu-repositorio.git /var/www/myappcd /var/www/myappnpm install --production

Crie um arquivo de ecossistema do PM2 (ecosystem.config.js) para configuração refinada:

// ecosystem.config.jsmodule.exports = {  apps: [{    name: 'myapp',    script: 'app.js', // ou server.js    instances: 'max', // usa todos os núcleos da CPU    exec_mode: 'cluster',    env: {      NODE_ENV: 'production',      PORT: 3000    },    error_file: '/var/log/node-app/err.log',    out_file: '/var/log/node-app/out.log',    log_date_format: 'YYYY-MM-DD HH:mm Z'  }]};

Crie o diretório para logs e inicie a aplicação via PM2:

sudo mkdir -p /var/log/node-appsudo chown -R $USER:$USER /var/log/node-apppm2 start ecosystem.config.jspm2 savepm2 startup systemd

O comando pm2 startup criará um serviço systemd que iniciará o PM2 na inicialização do sistema. Agora sua aplicação está rodando na porta 3000, mas o acesso direto a ela não é seguro. Vamos para a configuração do Nginx.



2. Configuração do Nginx como proxy reverso e SSL via Let's Encrypt

O Nginx receberá as requisições de entrada nas portas 80 (HTTP) e 443 (HTTPS), fará o proxy para o seu processo Node.js rodando na porta 3000 e também servirá arquivos estáticos diretamente — isso reduz a carga no Node.js.

Crie um arquivo de configuração para o seu domínio:

sudo nano /etc/nginx/sites-available/myapp

Insira a seguinte configuração (substitua myapp.example.com pelo seu domínio):

server {    listen 80;    server_name myapp.example.com;    return 301 https://$server_name$request_uri; # redireciona para HTTPS}

server { listen 443 ssl http2; server_name myapp.example.com;

# SSL ser

Blogs

Book Recommendations