Namecheap Shared Hosting پر NestJS کو کیسے ڈیپلائے کریں
Namecheap shared hosting پر NestJS کو ڈیپلائے کرنا کسی اسٹیٹک سائٹ یا PHP ایپ کو ڈیپلائے کرنے جیسا نہیں ہے۔ آپ صرف فائلیں اپ لوڈ کر کے یہ توقع نہیں کر سکتے کہ وہ کام کرنے لگیں گی۔
آپ کو TypeScript کو JavaScript میں کمپائل کرنا ہوگا، پروڈکشن ڈیپینڈنسیز (dependencies) انسٹال کرنی ہوں گی، اور Passenger کے ذریعے عمل کو مینیج کرنے کے لیے cPanel کا استعمال کرنا ہوگا۔
صحیح طریقہ معلوم کرنے سے پہلے مجھے خالی فولڈرز، غائب شدہ بلڈ فائلز، اور ٹوٹے ہوئے Redis کنکشنز کا سامنا کرنا پڑا۔ یہاں ایک آزمودہ ورک فلو (workflow) دیا گیا ہے۔
سیٹ اپ کی منطق (Logic)
درخواست اس راستے پر چلتی ہے:
• براؤزر یا API کلائنٹ
• ڈومین اور HTTPS
• Namecheap پر Apache / Passenger
• app.js (پل/bridge)
• dist/main.js (کمپائل شدہ کوڈ)
• NestJS ایپلی کیشن
اہم ضروریات
• Node.js سپورٹ کے ساتھ ایک Namecheap ہوسٹنگ اکاؤنٹ • cPanel اور SSH/Terminal تک رسائی • ایک ورکنگ NestJS پروجیکٹ • اپنے ڈیٹا بیس یا Redis کے لیے پروڈکشن کریڈنشلز (credentials)
مرحلہ 1: اپنا کوڈ تیار کریں
ہارڈ کوڈڈ پورٹ (hard-coded port) استعمال نہ کریں۔ اپنی src/main.ts میں process.env.PORT استعمال کریں:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(process.env.PORT || 4000);
}
مرحلہ 2: ڈیپینڈنسیز (dependencies) کو ترتیب دیں
@nestjs/common اور @nestjs/core جیسے رن ٹائم پیکیجز کو package.json کے dependencies سیکشن میں منتقل کریں۔ اگر وہ devDependencies میں رہتے ہیں، تو آپ کی ایپ پروڈکشن میں کریش ہو جائے گی۔
مرحلہ 3: بلڈ بنائیں اور پل (Bridge) تیار کریں
Namecheap JavaScript چلاتا ہے، TypeScript نہیں۔
• مقامی طور پر (locally) npm run build چلائیں۔
• تصدیق کریں کہ dist/main.js موجود ہے۔
• اپنے پروجیکٹ کی روٹ (root) میں اس لائن کے ساتھ ایک app.js فائل بنائیں: require('./dist/main');
یہ app.js Passenger کے لیے انٹری پوائنٹ کے طور پر کام کرتا ہے۔
مرحلہ 4: ڈیپلائمنٹ کی حکمت عملی (Strategy)
محفوظ ترین طریقہ یہ ہے کہ مقامی طور پر بلڈ بنائیں اور آرٹفیکٹس (artifacts) اپ لوڈ کریں:
• app.js اپ لوڈ کریں
• dist/ فولڈر اپ لوڈ کریں
• package.json اور package-lock.json اپ لوڈ کریں
• Namecheap پر یہ چلائیں: npm ci --omit=dev
اپنا مقامی node_modules فولڈر کبھی اپ لوڈ نہ کریں۔ آپ کے کمپیوٹر پر بنے ہوئے نیٹیو ماڈیولز (native modules) Linux سرور پر کام نہیں کریں گے۔
مرحلہ 5: cPanel کنفیگر کریں
cPanel میں "Setup Node.js App" پر جائیں:
• درست Node.js ورژن منتخب کریں۔
• موڈ (mode) کو Production پر سیٹ کریں۔
• Application root کو اپنے فولڈر پر سیٹ کریں۔
• Application startup file کو app.js پر سیٹ کریں۔
مرحلہ 6: انوائرمنٹ ویری ایبلز (Environment Variables)
اپنے سیکرٹس (جیسے DATABASE_URL یا API keys) براہ راست cPanel Node.js انٹرفیس میں شامل کریں۔ آپ روٹ میں .env فائل بھی استعمال کر سکتے ہیں، لیکن اس بات کو یقینی بنائیں کہ یہ dist فولڈر کے اندر نہ ہو۔ تبدیلیاں کرنے کے بعد ایپ کو ری اسٹارٹ کریں۔
عام مسائل کا حل (Troubleshooting)
• EADDRINUSE: غالباً آپ کا کوئی مینوئل پروسیس چل رہا ہے۔ Passenger کو ایپ مینیج کرنے دیں۔
• Cannot find module: آپ کا بلڈ غائب ہے یا app.js میں راستہ (path) غلط ہے۔
• Redis connection failed: چیک کریں کہ کیا Namecheap آپ کے Redis پورٹ پر آؤٹ باؤنڈ کنکشنز (outbound connections) کی اجازت دیتا ہے۔ آپ کو اسے کھولنے کے لیے Namecheap سپورٹ سے رابطہ کرنے کی ضرورت پڑ سکتی ہے۔
ماخذ (Source): https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45
