Déploiement d'une application TypeScript sur VPS : guide avancé

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : du développement à la production sur VPS

\n\n

Le déploiement d'une application TypeScript sur VPS (Virtual Private Server) est une étape clé du cycle de vie de tout projet web. Contrairement à un simple hébergement mutualisé, le VPS offre un contrôle total sur l'environnement, ce qui est essentiel pour les applications TypeScript modernes fonctionnant avec Node.js, Express, NestJS ou Next.js.

\n\n

Dans cet article, nous allons explorer le processus avancé de déploiement : de la compilation TypeScript à la configuration d'un environnement de production avec redémarrage automatique, équilibrage de charge et monitoring. Vous apprendrez à transformer du code brut en un service stable et fonctionnel.

\n\n

1. Préparation de l'application TypeScript pour la production

\n\n

1.1. Configuration de la compilation et de la configuration

\n\n

La première étape consiste à s'assurer que votre tsconfig.json est optimisé pour la production. Voici la configuration recommandée :

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

Ajoutez dans package.json les scripts de compilation et de lancement :

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

1.2. Gestion des variables d'environnement

\n\n

Utilisez des fichiers .env avec la bibliothèque dotenv. Pour la production, créez un fichier séparé .env.production :

\n\n
NODE_ENV=production\nPORT=3000\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp_prod\nDB_USER=app_user\nDB_PASSWORD=secure_password_here\nREDIS_URL=redis://localhost:6379\n
\n\n

Chargez la configuration en fonction de l'environnement :

\n\n
import dotenv from 'dotenv';\nimport path from 'path';\n\nconst envFile = process.env.NODE_ENV === 'production' \n  ? '.env.production' \n  : '.env.development';\n\ndotenv.config({ path: path.resolve(__dirname, `../${envFile}`) });\n\nexport const config = {\n  port: parseInt(process.env.PORT || '3000', 10),\n  db: {\n    host: process.env.DB_HOST || 'localhost',\n    port: parseInt(process.env.DB_PORT || '5432', 10),\n    name: process.env.DB_NAME || 'myapp',\n    user: process.env.DB_USER || 'user',\n    password: process.env.DB_PASSWORD || '',\n  },\n  redis: {\n    url: process.env.REDIS_URL || 'redis://localhost:6379',\n  },\n  isProduction: process.env.NODE_ENV === 'production',\n};\n
\n\n

2. Configuration du VPS et déploiement de l'application

\n\n

2.1. Configuration de base du serveur

\n\n

Après l'achat du VPS (nous recommandons Ubuntu 22.04 LTS), effectuez la configuration initiale :

\n\n
    \n
  • Mise à jour des paquets : sudo apt update && sudo apt upgrade -y
  • \n
  • Installation de Node.js 20 LTS : curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs
  • \n
  • Installation de Git : sudo apt install git -y
  • \n
  • Création d'un utilisateur : sudo adduser deployer && sudo usermod -aG sudo deployer
  • \n
\n\n

2.2. Clonage et compilation du projet

\n\n

Connectez-vous au serveur via SSH et exécutez :

\n\n
# Passer à l'utilisateur\nsudo -i -u deployer\ncd ~\n\n# Cloner le dépôt\ngit clone https://github.com/your-username/your-app.git\ncd your-app\n\n# Installer les dépendances\nnpm ci --only=production\n\n# Compiler TypeScript\nnpm run build\n\n# Créer le fichier .env pour la production\nnano .env.production\n
\n\n

2.3. Configuration de PM2 pour la gestion des processus

\n\n

PM2 est un

Blogs

Book Recommendations