نشر تطبيق TypeScript على VPS: دليل متقدم

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: من التطوير إلى الإنتاج على VPS

\n\n

نشر تطبيق TypeScript على VPS (خادم خاص افتراضي) هو مرحلة رئيسية في دورة حياة أي مشروع ويب. على عكس الاستضافة المشتركة البسيطة، يمنحك VPS تحكمًا كاملاً في البيئة، وهو أمر بالغ الأهمية لتطبيقات TypeScript الحديثة التي تعمل مع Node.js وExpress وNestJS أو Next.js.

\n\n

في هذه المقالة، سنستعرض عملية النشر المتقدمة: من تجميع TypeScript إلى إعداد بيئة الإنتاج مع إعادة التشغيل التلقائي، وموازنة التحميل، والمراقبة. ستتعلم كيفية تحويل الكود الخام إلى خدمة تعمل بثبات.

\n\n

1. تحضير تطبيق TypeScript للإنتاج

\n\n

1.1. إعداد البناء والتكوين

\n\n

الخطوة الأولى هي التأكد من أن ملف tsconfig.json الخاص بك مُحسَّن للإنتاج. إليك التكوين الموصى به:

\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

أضف نصوصًا برمجية للبناء والتشغيل في ملف package.json:

\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. إدارة متغيرات البيئة

\n\n

استخدم ملفات .env مع مكتبة dotenv. للإنتاج، أنشئ ملفًا منفصلاً .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

قم بتحميل التكوين حسب البيئة:

\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. إعداد VPS ونشر التطبيق

\n\n

2.1. الإعداد الأساسي للخادم

\n\n

بعد شراء VPS (نوصي بـ Ubuntu 22.04 LTS) قم بالإعداد الأولي:

\n\n
    \n
  • تحديث الحزم: sudo apt update && sudo apt upgrade -y
  • \n
  • تثبيت Node.js 20 LTS: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs
  • \n
  • تثبيت Git: sudo apt install git -y
  • \n
  • إنشاء مستخدم: sudo adduser deployer && sudo usermod -aG sudo deployer
  • \n
\n\n

2.2. استنساخ المشروع وبناؤه

\n\n

اتصل بالخادم عبر SSH ونفذ:

\n\n
# التبديل إلى المستخدم\nsudo -i -u deployer\ncd ~\n\n# استنساخ المستودع\ngit clone https://github.com/your-username/your-app.git\ncd your-app\n\n# تثبيت التبعيات\nnpm ci --only=production\n\n# بناء TypeScript\nnpm run build\n\n# إنشاء ملف .env للإنتاج\nnano .env.production\n
\n\n

2.3. إعداد PM2 لإدارة العمليات

\n\n

PM2 هو

المدونات

توصيات الكتب