نشر تطبيق TypeScript على VPS: دليل خطوة بخطوة
لقد كتبت تطبيقًا رائعًا بلغة TypeScript. كل شيء يعمل بشكل مثالي محليًا، ولكن حان الوقت لعرض مشروعك للعالم. النشر على VPS (خادم خاص افتراضي) هو خطوة منطقية ومرنة. على عكس المنصات السحابية، يمنحك VPS تحكمًا كاملاً في البيئة.
في هذه المقالة، سنشرح عملية النشر خطوة بخطوة لتطبيق TypeScript على VPS. سنستخدم Node.js و PM2 لإدارة العمليات و Nginx كوكيل عكسي. جميع الأمثلة بلغة TypeScript.
من المفترض أن لديك مهارات أساسية في العمل مع Linux و SSH.
1. تحضير الخادم والاتصال
الخطوة الأولى هي استئجار VPS (DigitalOcean, Vultr, Timeweb، إلخ) والاتصال عبر SSH.
ssh root@your_server_ipسنقوم فورًا بتحديث الحزم وتثبيت الأدوات الضرورية:
apt update && apt upgrade -yapt install curl git nginx -yتثبيت Node.js (نوصي بإصدار LTS):
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -apt install -y nodejsالتحقق من الإصدارات:
node -vnpm -v2. استنساخ المستودع وبناء TypeScript
الآن سنقوم باستنساخ مشروعك. كمثال، سنستخدم تطبيق Express بسيط بلغة TypeScript:
git clone https://github.com/your_username/your_repository.gitcd your_repositoryتثبيت التبعيات:
npm installيجب ترجمة TypeScript إلى JavaScript. عادةً ما يتم ذلك بالأمر:
npm run buildفي package.json يجب أن يكون مكتوبًا كالتالي:
{ "scripts": { "build": "tsc", "start": "node dist/index.js" }}تأكد من ظهور الملفات المترجمة في مجلد dist.
3. تثبيت وتهيئة PM2
PM2 هو مدير عمليات لـ Node.js. يعيد تشغيل التطبيق عند تعطله، ويدعم السجلات والتجميع.
تثبيت PM2 بشكل عام:
npm install pm2 -gتشغيل التطبيق:
pm2 start dist/index.js --name "my-typescript-app"حفظ قائمة العمليات لاستعادتها بعد إعادة تشغيل الخادم:
pm2 savepm2 startupسيظهر PM2 أمرًا يجب تنفيذه (عادةً systemctl enable pm2-root). انسخه ونفذه.
يمكن التحقق من الحالة بالأمر:
pm2 status4. تهيئة Nginx كوكيل عكسي
سيستقبل Nginx الطلبات على المنفذ 80 (HTTP) ويعيد توجيهها إلى تطبيقك (على سبيل المثال، إلى المنفذ 3000).
إنشاء ملف التهيئة:
nano /etc/nginx/sites-available/my-typescript-appأدخل الكود التالي (قم بتغيير server_name إلى نطاقك أو IP الخاص بك):
server { listen 80; server_name your_domain.ru www.your_domain.ru;
location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}تفعيل الموقع:
ln -s /etc/nginx/sites-available/my-typescript-app /etc/nginx/sites-enabled/nginx -tsystemctl restart nginxالآن تطبيقك متاح عبر IP أو النطاق.
5. تهيئة HTTPS (SSL) باستخدام Certbot
لا يمكن الاستغناء عن HTTPS هذه الأيام. سنستخدم Let's Encrypt و Certbot.
تثبيت Certbot:
apt install certbot python3-certbot-nginx -yتشغيل الحصول على الشهادة:
certbot --nginx -d your_domain.ru -d www.your_domain.ru