Namecheap Shared Hosting ನಲ್ಲಿ NestJS ಅನ್ನು ಹೇಗೆ ನಿಯೋಜಿಸುವುದು (Deploy ಮಾಡುವುದು)
Namecheap shared hosting ಗೆ NestJS ಅನ್ನು ನಿಯೋಜಿಸುವುದು ಒಂದು ಸ್ಟ್ಯಾಟಿಕ್ ಸೈಟ್ ಅಥವಾ PHP ಆಪ್ ಅನ್ನು ನಿಯೋಜಿಸುವಂತಿಲ್ಲ. ನೀವು ಕೇವಲ ಫೈಲ್ಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ನಿರೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
ನೀವು TypeScript ಅನ್ನು JavaScript ಗೆ ಕಾಂಪೈಲ್ ಮಾಡಬೇಕು, production dependencies ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಬೇಕು ಮತ್ತು Passenger ಮೂಲಕ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಲು cPanel ಅನ್ನು ಬಳಸಬೇಕು.
ಸರಿಯಾದ ವಿಧಾನವನ್ನು ಕಂಡುಹಿಡಿಯುವ ಮೊದಲು ನಾನು ಖಾಲಿ ಫೋಲ್ಡರ್ಗಳು, ಕಾಣೆಯಾದ build ಫೈಲ್ಗಳು ಮತ್ತು ಸಂಪರ್ಕ ಕಡಿತಗೊಂಡ Redis ಕನೆಕ್ಷನ್ಗಳನ್ನು ಎದುರಿಸಿದ್ದೆ. ಇಲ್ಲಿದೆ ಸಾಬೀತಾದ ಕಾರ್ಯವಿಧಾನ (workflow).
ಸೆಟಪ್ ಲಾಜಿಕ್ (The Setup Logic)
ವಿನಂತಿಯು (request) ಈ ಹಾದಿಯನ್ನು ಅನುಸರಿಸುತ್ತದೆ: • ಬ್ರೌಸರ್ ಅಥವಾ API ಕ್ಲೈಂಟ್ • ಡೊಮೈನ್ ಮತ್ತು HTTPS • Namecheap ನಲ್ಲಿ Apache / Passenger • app.js (ಬ್ರಿಡ್ಜ್) • dist/main.js (ಕಾಂಪೈಲ್ ಮಾಡಿದ ಕೋಡ್) • NestJS ಅಪ್ಲಿಕೇಶನ್
ಪ್ರಮುಖ ಅವಶ್ಯಕತೆಗಳು
• Node.js ಬೆಂಬಲವಿರುವ ಒಂದು Namecheap ಹೋಸ್ಟಿಂಗ್ ಖಾತೆ • cPanel ಮತ್ತು SSH/Terminal ಗೆ ಪ್ರವೇಶ • ಕೆಲಸ ಮಾಡುವ NestJS ಪ್ರಾಜೆಕ್ಟ್ • ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ ಅಥವಾ Redis ಗಾಗಿ production credentials
ಹಂತ 1: ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಸಿದ್ಧಪಡಿಸಿ
ಹಾರ್ಡ್-ಕೋಡ್ ಮಾಡಲಾದ ಪೋರ್ಟ್ ಅನ್ನು ಬಳಸಬೇಡಿ. ನಿಮ್ಮ 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 ಪ್ಯಾಕೇಜ್ಗಳನ್ನು package.json ನಲ್ಲಿನ dependencies ವಿಭಾಗಕ್ಕೆ ವರ್ಗಾಯಿಸಿ. ಅವುಗಳು devDependencies ನಲ್ಲಿ ಉಳಿದರೆ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ production ನಲ್ಲಿ ಕ್ರ್ಯಾಶ್ ಆಗುತ್ತದೆ.
ಹಂತ 3: ಬಿಲ್ಡ್ ಮಾಡಿ ಮತ್ತು ಬ್ರಿಡ್ಜ್ ರಚಿಸಿ
Namecheap JavaScript ಅನ್ನು ರನ್ ಮಾಡುತ್ತದೆ, TypeScript ಅಲ್ಲ.
• ಸ್ಥಳೀಯವಾಗಿ (locally) npm run build ರನ್ ಮಾಡಿ.
• dist/main.js ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
• ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ರೂಟ್ನಲ್ಲಿ ಈ ಸಾಲಿನೊಂದಿಗೆ ಒಂದು app.js ಫೈಲ್ ರಚಿಸಿ: require('./dist/main');
ಈ app.js ಫೈಲ್ Passenger ಗಾಗಿ ಎಂಟ್ರಿ ಪಾಯಿಂಟ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಹಂತ 4: ನಿಯೋಜನಾ ತಂತ್ರ (Deployment Strategy)
ಅತ್ಯಂತ ಸುರಕ್ಷಿತ ವಿಧಾನವೆಂದರೆ ಸ್ಥಳೀಯವಾಗಿ ಬಿಲ್ಡ್ ಮಾಡುವುದು ಮತ್ತು ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ಗಳನ್ನು (artifacts) ಅಪ್ಲೋಡ್ ಮಾಡುವುದು:
• app.js ಅಪ್ಲೋಡ್ ಮಾಡಿ
• dist/ ಫೋಲ್ಡರ್ ಅಪ್ಲೋಡ್ ಮಾಡಿ
• package.json ಮತ್ತು package-lock.json ಅಪ್ಲೋಡ್ ಮಾಡಿ
• Namecheap ನಲ್ಲಿ, ಇದನ್ನು ರನ್ ಮಾಡಿ: npm ci --omit=dev
ನಿಮ್ಮ ಸ್ಥಳೀಯ node_modules ಫೋಲ್ಡರ್ ಅನ್ನು ಎಂದಿಗೂ ಅಪ್ಲೋಡ್ ಮಾಡಬೇಡಿ. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಬಿಲ್ಡ್ ಮಾಡಲಾದ ನೇಟಿವ್ ಮಾಡ್ಯೂಲ್ಗಳು (Native modules) ಲಿನಕ್ಸ್ ಸರ್ವರ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ.
ಹಂತ 5: cPanel ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ
cPanel ನಲ್ಲಿ Setup Node.js App ಗೆ ಹೋಗಿ:
• ಸರಿಯಾದ Node.js ಆವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ.
• Mode ಅನ್ನು Production ಗೆ ಹೊಂದಿಸಿ.
• Application root ಅನ್ನು ನಿಮ್ಮ ಫೋಲ್ಡರ್ಗೆ ಹೊಂದಿಸಿ.
• Application startup file ಅನ್ನು app.js ಗೆ ಹೊಂದಿಸಿ.
ಹಂತ 6: ಎನ್ವಿರಾನ್ಮೆಂಟ್ ವೇರಿಯೇಬಲ್ಗಳು (Environment Variables)
ನಿಮ್ಮ ಸೀಕ್ರೆಟ್ಗಳನ್ನು (ಉದಾಹರಣೆಗೆ DATABASE_URL ಅಥವಾ API ಕೀಲಿಗಳು) ನೇರವಾಗಿ cPanel Node.js ಇಂಟರ್ಫೇಸ್ನಲ್ಲಿ ಸೇರಿಸಿ. ನೀವು ರೂಟ್ನಲ್ಲಿ .env ಫೈಲ್ ಅನ್ನು ಸಹ ಬಳಸಬಹುದು, ಆದರೆ ಅದು dist ಫೋಲ್ಡರ್ ಒಳಗೆ ಇಲ್ಲದಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಿದ ನಂತರ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ (Restart).
ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಗಳ ಪರಿಹಾರ (Common Troubleshooting)
• EADDRINUSE: ಬಹುಶಃ ನೀವು ಮ್ಯಾನುಯಲ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ರನ್ ಮಾಡುತ್ತಿರಬಹುದು. ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು Passenger ಅನ್ನು ಬಿಡಿ.
• Cannot find module: ನಿಮ್ಮ ಬಿಲ್ಡ್ ಕಾಣೆಯಾಗಿದೆ ಅಥವಾ app.js ನಲ್ಲಿನ ಪಾತ್ (path) ತಪ್ಪಾಗಿದೆ.
• Redis connection failed: ನಿಮ್ಮ Redis ಪೋರ್ಟ್ನಲ್ಲಿ Namecheap ಔಟ್ಬೌಂಡ್ ಕನೆಕ್ಷನ್ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ಅದನ್ನು ತೆರೆಯಲು ನೀವು Namecheap ಬೆಂಬಲವನ್ನು (support) ಕೇಳಬೇಕಾಗಬಹುದು.
Source: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45
