Implantação de aplicação TypeScript em VPS: guia avançado

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 desenvolvimento à produção em VPS



A implatação de uma aplicação TypeScript em VPS (Virtual Private Server) é uma etapa fundamental no ciclo de vida de qualquer projeto web. Diferentemente da simples hospedagem em shared-hosting, a VPS oferece controle total sobre o ambiente, o que é essencial para aplicações TypeScript modernas que utilizam Node.js, Express, NestJS ou Next.js.



Neste artigo, abordaremos o processo avançado de implantação: desde a compilação do TypeScript até a configuração do ambiente de produção com reinicialização automática, balanceamento de carga e monitoramento. Você aprenderá como transformar código bruto em um serviço estável e funcional.



1. Preparando a aplicação TypeScript para produção



1.1. Configuração de build e configuração



O primeiro passo é garantir que seu tsconfig.json esteja otimizado para produção. Aqui está a configuração recomendada:



{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "lib": ["ES2020"],    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true,    "skipLibCheck": true,    "forceConsistentCasingInFileNames": true,    "resolveJsonModule": true,    "declaration": true,    "declarationMap": true,    "sourceMap": true  },  "include": ["src/**/*"],  "exclude": ["node_modules", "dist", "tests"]}


Adicione scripts de build e inicialização no package.json:



{  "scripts": {    "build": "tsc",    "start": "node dist/index.js",    "dev": "ts-node src/index.ts",    "clean": "rm -rf dist"  }}


1.2. Gerenciamento de variáveis de ambiente



Utilize arquivos .env com a biblioteca dotenv. Para produção, crie um arquivo separado .env.production:



NODE_ENV=productionPORT=3000DB_HOST=localhostDB_PORT=5432DB_NAME=myapp_prodDB_USER=app_userDB_PASSWORD=secure_password_hereREDIS_URL=redis://localhost:6379


Carregue a configuração de acordo com o ambiente:



import dotenv from 'dotenv';import path from 'path';

const envFile = process.env.NODE_ENV === 'production' ? '.env.production' : '.env.development';

dotenv.config({ path: path.resolve(__dirname, `../${envFile}`) });

export const config = { port: parseInt(process.env.PORT || '3000', 10), db: { host: process.env.DB_HOST || 'localhost', port: parseInt(process.env.DB_PORT || '5432', 10), name: process.env.DB_NAME || 'myapp', user: process.env.DB_USER || 'user', password: process.env.DB_PASSWORD || '', }, redis: { url: process.env.REDIS_URL || 'redis://localhost:6379', }, isProduction: process.env.NODE_ENV === 'production',};


2. Configuração da VPS e implantação da aplicação



2.1. Configuração básica do servidor



Após adquirir a VPS (recomendamos Ubuntu 22.04 LTS), realize a configuração inicial:



  • Atualização de pacotes: sudo apt update && sudo apt upgrade -y
  • Instalação do Node.js 20 LTS: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs
  • Instalação do Git: sudo apt install git -y
  • Criação de usuário: sudo adduser deployer && sudo usermod -aG sudo deployer


2.2. Clonagem e build do projeto



Conecte-se ao servidor via SSH e execute:



# Alternar para o usuáriosudo -i -u deployercd ~

# Clonar o repositóriogit clone https://github.com/your-username/your-app.gitcd your-app

# Instalar dependênciasnpm ci --only=production

# Compilar TypeScriptnpm run build

# Criar arquivo .env para produçãonano .env.production


2.3. Configuração do PM2 para gerenciamento de processos



PM2 é um

Blogs

Book Recommendations