Namecheap Shared Hosting पर NestJS को कैसे डिप्लॉय करें

Namecheap shared hosting पर NestJS को डिप्लॉय करना किसी स्टैटिक साइट या PHP ऐप को डिप्लॉय करने जैसा नहीं है। आप केवल फ़ाइलें अपलोड करके यह उम्मीद नहीं कर सकते कि यह काम करने लगेगा।

आपको TypeScript को JavaScript में कंपाइल करना होगा, प्रोडक्शन डिपेंडेंसीज़ (dependencies) इंस्टॉल करनी होंगी, और Passenger के माध्यम से प्रक्रिया को प्रबंधित करने के लिए cPanel का उपयोग करना होगा।

सही तरीका खोजने से पहले मुझे खाली फोल्डर, गायब बिल्ड फ़ाइलें और टूटे हुए Redis कनेक्शन जैसी समस्याओं का सामना करना पड़ा। यहाँ एक प्रमाणित वर्कफ़्लो (workflow) दिया गया है।

The Setup Logic रिक्वेस्ट इस पथ (path) का अनुसरण करती है: • ब्राउज़र या API क्लाइंट • डोमेन और HTTPS • Namecheap पर Apache / Passenger • app.js (ब्रिज) • dist/main.js (कंपाइल किया गया कोड) • NestJS एप्लिकेशन

Key Requirements • Node.js सपोर्ट के साथ एक Namecheap होस्टिंग अकाउंट • cPanel और SSH/Terminal का एक्सेस • एक वर्किंग NestJS प्रोजेक्ट • आपके डेटाबेस या Redis के लिए प्रोडक्शन क्रेडेंशियल्स (credentials)

Step 1: अपने कोड को तैयार करें हार्ड-कोडेड पोर्ट का उपयोग न करें। अपने src/main.ts में, process.env.PORT का उपयोग करें:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(process.env.PORT || 4000);
}

Step 2: डिपेंडेंसीज़ को व्यवस्थित करें @nestjs/common और @nestjs/core जैसे रनटाइम पैकेज को package.json के dependencies सेक्शन में ले जाएँ। यदि वे devDependencies में रहते हैं, तो आपका ऐप प्रोडक्शन में क्रैश हो जाएगा।

Step 3: बिल्ड करें और ब्रिज बनाएँ Namecheap JavaScript चलाता है, TypeScript नहीं। • स्थानीय रूप से (locally) npm run build चलाएँ। • सत्यापित करें कि dist/main.js मौजूद है। • अपने प्रोजेक्ट रूट में इस लाइन के साथ एक app.js फ़ाइल बनाएँ: require('./dist/main');

यह app.js, Passenger के लिए एंट्री पॉइंट के रूप में कार्य करता है।

Step 4: डिप्लॉयमेंट रणनीति (Deployment Strategy) सबसे सुरक्षित तरीका स्थानीय रूप से बिल्ड करना और आर्टिफैक्ट्स (artifacts) अपलोड करना है: • app.js अपलोड करें • dist/ फोल्डर अपलोड करें • package.json और package-lock.json अपलोड करें • Namecheap पर, चलाएँ: npm ci --omit=dev

अपने स्थानीय node_modules फोल्डर को कभी भी अपलोड न करें। आपके कंप्यूटर पर बने नेटिव मॉड्यूल (native modules) लिनक्स सर्वर पर काम नहीं करेंगे।

Step 5: cPanel कॉन्फ़िगर करें cPanel में Setup Node.js App पर जाएँ: • सही Node.js वर्शन चुनें। • मोड को Production पर सेट करें। • Application root को अपने फोल्डर पर सेट करें। • Application startup file को app.js पर सेट करें।

Step 6: एनवायरनमेंट वेरिएबल्स (Environment Variables) अपने सीक्रेट्स (जैसे DATABASE_URL या API keys) को सीधे cPanel Node.js इंटरफ़ेस में जोड़ें। आप रूट में एक .env फ़ाइल का भी उपयोग कर सकते हैं, लेकिन सुनिश्चित करें कि यह dist फोल्डर के अंदर न हो। बदलाव करने के बाद ऐप को रीस्टार्ट करें।

Common Troubleshooting • EADDRINUSE: संभवतः आपके पास कोई मैन्युअल प्रोसेस चल रहा है। Passenger को ऐप प्रबंधित करने दें। • Cannot find module: आपका बिल्ड गायब है या app.js में पथ (path) गलत है। • Redis connection failed: जाँचें कि क्या Namecheap आपके Redis पोर्ट पर आउटबाउंड कनेक्शन की अनुमति देता है। आपको इसे खोलने के लिए Namecheap सपोर्ट से पूछने की आवश्यकता हो सकती है।

Source: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45