Namecheap Shared Hosting-இல் NestJS-ஐ எவ்வாறு Deploy செய்வது
Namecheap shared hosting-இல் NestJS-ஐ Deploy செய்வது என்பது ஒரு static site அல்லது PHP app-ஐ Deploy செய்வது போன்றது அல்ல. நீங்கள் கோப்புகளை (files) மட்டும் பதிவேற்றிவிட்டு அது வேலை செய்யும் என்று எதிர்பார்க்க முடியாது.
நீங்கள் TypeScript-ஐ JavaScript-ஆக மாற்ற வேண்டும் (compile), production dependencies-களை நிறுவ வேண்டும், மேலும் Passenger மூலம் இந்தச் செயல்பாட்டை நிர்வகிக்க cPanel-ஐப் பயன்படுத்த வேண்டும்.
சரியான முறையைக் கண்டறியும் முன், நான் காலியான கோப்புறைகள் (empty folders), விடுபட்ட build files மற்றும் முறிந்துபோன Redis இணைப்புகள் போன்ற சிக்கல்களைச் சந்தித்தேன். இதோ நிரூபிக்கப்பட்ட பணிப்பாய்வு (workflow).
அமைப்பின் தர்க்கம் (The Setup Logic)
கோரிக்கை (request) இந்த வழியைப் பின்பற்றுகிறது: • Browser அல்லது API client • Domain மற்றும் HTTPS • Namecheap-இல் Apache / Passenger • app.js (பாலம்/bridge) • dist/main.js (compiled code) • NestJS application
முக்கியத் தேவைகள்
• Node.js ஆதரவுடன் கூடிய ஒரு Namecheap hosting கணக்கு • cPanel மற்றும் SSH/Terminal அணுகல் • வேலை செய்யக்கூடிய ஒரு NestJS project • உங்கள் database அல்லது Redis-க்கான production credentials
படி 1: உங்கள் குறியீட்டைத் (code) தயார் செய்யவும்
ஒரு 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 போன்ற runtime packages-களை package.json-இல் உள்ள dependencies பிரிவிற்கு மாற்றவும். அவை devDependencies-இல் இருந்தால், உங்கள் app production-இல் செயலிழந்துவிடும் (crash).
படி 3: Build செய்து பாலத்தை (Bridge) உருவாக்கவும்
Namecheap JavaScript-ஐ இயக்குகிறது, TypeScript-ஐ அல்ல.
• உள்ளூர் கணினியில் (locally) npm run build இயக்கவும்.
• dist/main.js இருப்பதை உறுதி செய்யவும்.
• உங்கள் project root-இல் இந்த வரியுடன் ஒரு app.js கோப்பை உருவாக்கவும்: require('./dist/main');
இந்த app.js, Passenger-க்கான entry point ஆகச் செயல்படுகிறது.
படி 4: Deployment உத்தி (Strategy)
உள்ளூர் கணினியில் build செய்து, அதன் artifacts-களைப் பதிவேற்றுவதே பாதுகாப்பான வழியாகும்:
• app.js-ஐப் பதிவேற்றவும்
• dist/ கோப்புறையைப் பதிவேற்றவும்
• package.json மற்றும் package-lock.json-ஐப் பதிவேற்றவும்
• Namecheap-இல், இதை இயக்கவும்: npm ci --omit=dev
உங்கள் உள்ளூர் node_modules கோப்புறையை ஒருபோதும் பதிவேற்ற வேண்டாம். உங்கள் கணினியில் உருவாக்கப்பட்ட native modules, Linux server-இல் வேலை செய்யாது.
படி 5: cPanel-ஐத் தயார் செய்யவும் (Configure)
cPanel-இல் Setup Node.js App என்பதற்குச் செல்லவும்:
• சரியான Node.js பதிப்பைத் தேர்ந்தெடுக்கவும்.
• mode-ஐ Production என அமைக்கவும்.
• Application root-ஐ உங்கள் கோப்புறைக்கு (folder) அமைக்கவும்.
• Application startup file-ஐ app.js என அமைக்கவும்.
படி 6: Environment Variables
உங்கள் ரகசியத் தகவல்களை (DATABASE_URL அல்லது API keys போன்றவை) நேரடியாக cPanel Node.js interface-இல் சேர்க்கவும். நீங்கள் root-இல் ஒரு .env கோப்பையும் பயன்படுத்தலாம், ஆனால் அது dist கோப்புறைக்குள் இல்லை என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள். மாற்றங்களைச் செய்த பிறகு app-ஐ ரீஸ்டார்ட் (Restart) செய்யவும்.
பொதுவான சிக்கல்களும் தீர்வுகளும் (Troubleshooting)
• EADDRINUSE: ஒருவேளை நீங்கள் கைமுறையாக (manual) ஒரு process-ஐ இயக்கி இருக்கலாம். Passenger-ஐ app-ஐ நிர்வகிக்க விடுங்கள்.
• Cannot find module: உங்கள் build விடுபட்டுள்ளது அல்லது app.js-இல் உள்ள பாதை (path) தவறானது.
• Redis connection failed: உங்கள் Redis port-இல் Namecheap வெளிச்செல்லும் இணைப்புகளை (outbound connections) அனுமதிக்கிறதா என்று சரிபார்க்கவும். அதைத் திறக்குமாறு Namecheap ஆதரவு குழுவிடம் (support) நீங்கள் கேட்க வேண்டியிருக்கலாம்.
ஆதாரம்: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45
