Introdução: Por que fazer o deploy de uma aplicação JavaScript em uma VPS?
Desenvolver uma aplicação web moderna em JavaScript (Node.js) é apenas metade do trabalho. A segunda parte, igualmente importante, é o deploy, ou seja, a implantação do seu projeto em um servidor real acessível na internet. O uso de um Servidor Privado Virtual (VPS) oferece controle total sobre o ambiente, ao contrário da hospedagem compartilhada. Você pode configurar o servidor conforme suas necessidades, instalar quaisquer dependências e garantir alta performance.
Neste guia, vamos detalhar passo a passo o processo de deploy de uma aplicação típica JavaScript (Node.js) em uma VPS. Abordaremos todas as etapas: desde a configuração inicial do servidor até a execução da aplicação em modo de produção usando o gerenciador de processos PM2 e o servidor proxy reverso Nginx. O artigo é voltado para desenvolvedores que já possuem familiaridade com os fundamentos do Node.js e da linha de comando Linux.
1. Preparação da VPS e configuração inicial
O primeiro passo é alugar uma VPS de qualquer provedor (DigitalOcean, Linode, Vultr ou análogos russos). Plano mínimo recomendado: 1 vCPU, 1-2 GB de RAM. Sistema operacional — Ubuntu 22.04 LTS (ou mais recente).
1.1. Conexão ao servidor via SSH
Após obter o endereço IP e a senha de root, conecte-se ao servidor a partir do seu terminal:
ssh root@seu_IP_do_servidorSe você estiver usando uma chave SSH (recomendado), especifique o caminho para a chave privada:
ssh -i ~/.ssh/id_rsa root@seu_IP_do_servidor1.2. Criação de usuário e segurança básica
Nunca trabalhe como root permanentemente. Crie um novo usuário e conceda a ele privilégios sudo:
adduser myuserusermod -aG sudo myuserEm seguida, configure a chave SSH para o novo usuário (copie a chave pública da sua máquina local) e desabilite o login por senha no arquivo /etc/ssh/sshd_config:
PasswordAuthentication noReinicie o serviço SSH: sudo systemctl restart sshd.
1.3. Instalação do software necessário
Atualize o gerenciador de pacotes e instale o Node.js (recomendamos a versão LTS via NodeSource), Git e Nginx:
sudo apt update && sudo apt upgrade -ycurl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -sudo apt install -y nodejs git nginxVerifique as versões: node -v e npm -v.
2. Clonagem do repositório e instalação de dependências
Agora que o servidor está pronto, vamos transferir o código da sua aplicação para ele.
2.1. Clonagem do projeto
Navegue até o diretório home do usuário e clone o repositório do GitHub (ou de outro serviço de hospedagem Git):
cd /home/myusergit clone https://github.com/seu_login/seu_repositorio.git myappcd myapp2.2. Instalação de dependências e teste de execução
Instale todos os pacotes npm listados no package.json:
npm installSe o projeto usar variáveis de ambiente (por exemplo, para banco de dados ou chaves de API), crie um arquivo .env e preencha-o:
nano .envExemplo de conteúdo:
PORT=3000DATABASE_URL=mongodb://localhost:27017/mydbNODE_ENV=productionExecute a aplicação manualmente para garantir que ela funciona:
node app.jsVerifique a acessibilidade através de curl http://localhost:3000 ou abra no navegador http://seu_IP:3000 (após liberar a porta no firewall). Se tudo funcionar, pare o processo (Ctrl+C).
3. Configuração do gerenciador de processos PM2
A aplicação iniciada com node app.js será interrompida assim que você fechar a sessão SSH. Para operação contínua, utiliza-se o PM2 — um gerenciador de processos para Node.js que reinicia automaticamente a aplicação em caso de falha e ger