Einleitung: Von der Entwicklung zur Produktion auf einer VPS
Die Bereitstellung einer TypeScript-Anwendung auf einer VPS (Virtual Private Server) ist ein entscheidender Schritt im Lebenszyklus jedes Webprojekts. Im Gegensatz zur einfachen Platzierung auf einem Shared-Hosting bietet eine VPS die vollständige Kontrolle über die Umgebung, was für moderne TypeScript-Anwendungen, die mit Node.js, Express, NestJS oder Next.js arbeiten, kritisch ist.
In diesem Artikel betrachten wir den fortgeschrittenen Bereitstellungsprozess: von der Kompilierung von TypeScript bis zur Einrichtung einer Produktionsumgebung mit automatischem Neustart, Lastverteilung und Monitoring. Sie erfahren, wie Sie rohen Code in einen stabil laufenden Dienst verwandeln.
1. Vorbereitung der TypeScript-Anwendung für die Produktion
1.1. Einrichtung des Builds und der Konfiguration
Der erste Schritt besteht darin, sicherzustellen, dass Ihre tsconfig.json für die Produktion optimiert ist. Hier ist die empfohlene Konfiguration:
{ "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"]}Fügen Sie in package.json Skripte für den Build und den Start hinzu:
{ "scripts": { "build": "tsc", "start": "node dist/index.js", "dev": "ts-node src/index.ts", "clean": "rm -rf dist" }}1.2. Verwaltung von Umgebungsvariablen
Verwenden Sie .env-Dateien mit der Bibliothek dotenv. Erstellen Sie für die Produktion eine separate Datei .env.production:
NODE_ENV=productionPORT=3000DB_HOST=localhostDB_PORT=5432DB_NAME=myapp_prodDB_USER=app_userDB_PASSWORD=secure_password_hereREDIS_URL=redis://localhost:6379Laden Sie die Konfiguration in Abhängigkeit von der Umgebung:
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. Einrichtung der VPS und Bereitstellung der Anwendung
2.1. Grundlegende Serverkonfiguration
Nach dem Kauf einer VPS (empfohlen wird Ubuntu 22.04 LTS) führen Sie die Ersteinrichtung durch:
- Pakete aktualisieren:
sudo apt update && sudo apt upgrade -y - Node.js 20 LTS installieren:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs - Git installieren:
sudo apt install git -y - Benutzer erstellen:
sudo adduser deployer && sudo usermod -aG sudo deployer
2.2. Projekt klonen und bauen
Verbinden Sie sich per SSH mit dem Server und führen Sie Folgendes aus:
# Zum Benutzer wechselnsudo -i -u deployercd ~
# Repository klonengit clone https://github.com/your-username/your-app.gitcd your-app
# Abhängigkeiten installierennpm ci --only=production
# TypeScript bauennpm run build
# .env-Datei für die Produktion erstellennano .env.production2.3. PM2 zur Prozessverwaltung einrichten
PM2 ist ein