Namecheap Shared Hosting-এ NestJS কীভাবে ডেপ্লয় করবেন
Namecheap shared hosting-এ NestJS ডেপ্লয় করা কোনো স্ট্যাটিক সাইট বা PHP অ্যাপ ডেপ্লয় করার মতো নয়। আপনি শুধু ফাইল আপলোড করে কাজ করবে এমন আশা করতে পারেন না।
আপনাকে TypeScript-কে JavaScript-এ কম্পাইল করতে হবে, production dependencies ইনস্টল করতে হবে এবং Passenger-এর মাধ্যমে প্রক্রিয়াটি পরিচালনা করতে cPanel ব্যবহার করতে হবে।
সঠিক পদ্ধতিটি খুঁজে পাওয়ার আগে আমি খালি ফোল্ডার, মিসিং বিল্ড ফাইল এবং ভাঙা Redis কানেকশনের মতো সমস্যার সম্মুখীন হয়েছিলাম। এখানে একটি পরীক্ষিত কাজের ধারা (workflow) দেওয়া হলো।
সেটআপ লজিক (The Setup Logic)
রিকোয়েস্টটি এই পথ অনুসরণ করে: • ব্রাউজার বা API ক্লায়েন্ট • ডোমেইন এবং HTTPS • Namecheap-এ Apache / Passenger • app.js (ব্রিজ হিসেবে) • dist/main.js (কম্পাইল করা কোড) • NestJS অ্যাপ্লিকেশন
মূল প্রয়োজনীয়তাগুলো (Key Requirements)
• Node.js সাপোর্টসহ একটি Namecheap হোস্টিং অ্যাকাউন্ট • cPanel এবং SSH/Terminal-এর অ্যাক্সেস • একটি কার্যকর NestJS প্রজেক্ট • আপনার ডাটাবেস বা Redis-এর জন্য প্রোডাকশন ক্রেডেনশিয়াল (credentials)
ধাপ ১: আপনার কোড প্রস্তুত করুন
হার্ড-কোডেড পোর্ট ব্যবহার করবেন না। আপনার src/main.ts-এ process.env.PORT ব্যবহার করুন:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(process.env.PORT || 4000);
}
ধাপ ২: ডিপেন্ডেন্সিগুলো গুছিয়ে নিন
@nestjs/common এবং @nestjs/core-এর মতো রানটাইম প্যাকেজগুলোকে package.json-এর dependencies সেকশনে নিয়ে যান। যদি এগুলো devDependencies-এ থেকে যায়, তবে প্রোডাকশনে আপনার অ্যাপ ক্র্যাশ করবে।
ধাপ ৩: বিল্ড করুন এবং ব্রিজ তৈরি করুন
Namecheap JavaScript চালায়, TypeScript নয়।
• লোকালি npm run build চালান।
• নিশ্চিত করুন যে dist/main.js ফাইলটি আছে।
• আপনার প্রজেক্ট রুট-এ এই লাইনটি দিয়ে একটি app.js ফাইল তৈরি করুন: require('./dist/main');
এই app.js ফাইলটি Passenger-এর জন্য এন্ট্রি পয়েন্ট হিসেবে কাজ করে।
ধাপ ৪: ডেপ্লয়মেন্ট কৌশল
সবচেয়ে নিরাপদ উপায় হলো লোকালি বিল্ড করা এবং আর্টিফ্যাক্টগুলো (artifacts) আপলোড করা:
• app.js আপলোড করুন
• dist/ ফোল্ডার আপলোড করুন
• package.json এবং package-lock.json আপলোড করুন
• Namecheap-এ চালান: npm ci --omit=dev
কখনোই আপনার লোকাল node_modules ফোল্ডার আপলোড করবেন না। আপনার কম্পিউটারে তৈরি করা নেটিভ মডিউলগুলো লিনাক্স সার্ভারে কাজ করবে না।
ধাপ ৫: cPanel কনফিগার করুন
cPanel-এ 'Setup Node.js App'-এ যান:
• সঠিক Node.js ভার্সন নির্বাচন করুন।
• মোড (mode) 'Production' সেট করুন।
• Application root হিসেবে আপনার ফোল্ডারটি সেট করুন।
• Application startup file হিসেবে app.js সেট করুন।
ধাপ ৬: এনভায়রনমেন্ট ভেরিয়েবল (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 পোর্টে আউটবাউন্ড কানেকশন (outbound connection) অনুমতি দেয় কি না তা পরীক্ষা করুন। এটি খোলার জন্য আপনাকে হয়তো Namecheap সাপোর্ট টিমের কাছে অনুরোধ করতে হতে পারে।
উৎস: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45
