Despliegue de aplicaciones TypeScript en VPS: guía avanzada

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: del desarrollo a producción en VPS



El despliegue de una aplicación TypeScript en un VPS (Servidor Privado Virtual) es una etapa clave en el ciclo de vida de cualquier proyecto web. A diferencia de la simple colocación en un hosting compartido, un VPS brinda control total sobre el entorno, lo cual es crítico para las aplicaciones TypeScript modernas que funcionan con Node.js, Express, NestJS o Next.js.



En este artículo, exploraremos el proceso avanzado de despliegue: desde la compilación de TypeScript hasta la configuración del entorno de producción con reinicio automático, balanceo de carga y monitoreo. Aprenderá cómo convertir código sin procesar en un servicio que funcione de manera estable.



1. Preparación de la aplicación TypeScript para producción



1.1. Configuración de compilación y configuración



El primer paso es asegurarse de que su tsconfig.json esté optimizado para producción. Aquí está la configuración 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"]}


Agregue scripts de compilación e inicio en package.json:



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


1.2. Gestión de variables de entorno



Utilice archivos .env con la librería dotenv. Para producción, cree un archivo 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


Cargue la configuración según el entorno:



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. Configuración del VPS y despliegue de la aplicación



2.1. Configuración básica del servidor



Después de adquirir un VPS (recomendamos Ubuntu 22.04 LTS), realice la configuración inicial:



  • Actualización de paquetes: sudo apt update && sudo apt upgrade -y
  • Instalación de Node.js 20 LTS: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs
  • Instalación de Git: sudo apt install git -y
  • Creación de usuario: sudo adduser deployer && sudo usermod -aG sudo deployer


2.2. Clonación y compilación del proyecto



Conéctese al servidor por SSH y ejecute:



# Cambiamos al usuariosudo -i -u deployercd ~

# Clonamos el repositoriogit clone https://github.com/your-username/your-app.gitcd your-app

# Instalamos dependenciasnpm ci --only=production

# Compilamos TypeScriptnpm run build

# Creamos el archivo .env para producciónnano .env.production


2.3. Configuración de PM2 para la gestión de procesos



PM2 es un

Blogs

Book Recommendations