Namecheap Shared Hostingలో NestJSని ఎలా డిప్లాయ్ చేయాలి

Namecheap shared hostingలో NestJSని డిప్లాయ్ చేయడం అనేది ఒక స్టాటిక్ సైట్ లేదా PHP యాప్‌ను డిప్లాయ్ చేసినట్లు కాదు. మీరు కేవలం ఫైల్‌లను అప్‌లోడ్ చేసి అది పనిచేస్తుందని ఆశించలేరు.

మీరు TypeScriptని JavaScriptలోకి కంపైల్ చేయాలి, production dependenciesని ఇన్‌స్టాల్ చేయాలి మరియు Passenger ద్వారా ఈ ప్రక్రియను నిర్వహించడానికి cPanelని ఉపయోగించాలి.

సరైన పద్ధతిని కనుగొనే ముందు నేను ఖాళీ ఫోల్డర్‌లు, మిస్ అయిన బిల్డ్ ఫైల్‌లు మరియు విఫలమైన Redis కనెక్షన్‌లను ఎదుర్కొన్నాను. ఇక్కడ నిరూపితమైన వర్క్‌ఫ్లో ఉంది.

The Setup Logic రిక్వెస్ట్ ఈ క్రింది మార్గంలో వెళుతుంది: • బ్రౌజర్ లేదా API క్లయింట్ • డొమైన్ మరియు HTTPS • Namecheapలో Apache / Passenger • app.js (బ్రిడ్జ్) • dist/main.js (కంపైల్ చేసిన కోడ్) • NestJS అప్లికేషన్

Key Requirements • Node.js సపోర్ట్‌తో కూడిన Namecheap హోస్టింగ్ ఖాతా • cPanel మరియు SSH/Terminal యాక్సెస్ • పనిచేసే NestJS ప్రాజెక్ట్ • మీ డేటాబేస్ లేదా Redis కోసం ప్రొడక్షన్ క్రెడెన్షియల్స్

Step 1: Prepare your code హార్డ్-కోడెడ్ పోర్ట్‌ను ఉపయోగించవద్దు. మీ src/main.tsలో, process.env.PORTని ఉపయోగించండి:

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

Step 2: Organize dependencies @nestjs/common మరియు @nestjs/core వంటి runtime packagesలను package.jsonలోని dependencies సెక్షన్‌లోకి మార్చండి. అవి devDependenciesలో ఉంటే, మీ యాప్ ప్రొడక్షన్‌లో క్రాష్ అవుతుంది.

Step 3: Build and Create the Bridge Namecheap JavaScriptని రన్ చేస్తుంది, TypeScriptని కాదు. • లోకల్‌గా npm run build రన్ చేయండి. • dist/main.js ఉందో లేదో సరిచూసుకోండి. • మీ ప్రాజెక్ట్ రూట్‌లో ఈ లైన్‌తో app.js ఫైల్‌ను సృష్టించండి: require('./dist/main');

app.js, Passenger కోసం ఎంట్రీ పాయింట్‌గా పనిచేస్తుంది.

Step 4: Deployment Strategy లోకల్‌గా బిల్డ్ చేసి ఆర్టిఫాక్ట్‌లను అప్‌లోడ్ చేయడమే అత్యంత సురక్షితమైన మార్గం: • app.js అప్‌లోడ్ చేయండి • dist/ ఫోల్డర్‌ను అప్‌లోడ్ చేయండి • package.json మరియు package-lock.json అప్‌లోడ్ చేయండి • Namecheapలో, ఇది రన్ చేయండి: npm ci --omit=dev

మీ లోకల్ node_modules ఫోల్డర్‌ను ఎప్పుడూ అప్‌లోడ్ చేయవద్దు. మీ కంప్యూటర్‌లో బిల్డ్ చేయబడిన నేటివ్ మాడ్యూల్స్ Linux సర్వర్‌లో పనిచేయవు.

Step 5: Configure cPanel cPanelలో Setup Node.js App కి వెళ్లండి: • సరైన Node.js వెర్షన్‌ను ఎంచుకోండి. • Modeని Productionగా సెట్ చేయండి. • Application rootని మీ ఫోల్డర్‌కు సెట్ చేయండి. • Application startup fileని app.jsగా సెట్ చేయండి.

Step 6: Environment Variables మీ సీక్రెట్స్‌ను (DATABASE_URL లేదా API కీలు వంటివి) నేరుగా cPanel Node.js ఇంటర్‌ఫేస్‌లో జోడించండి. మీరు రూట్‌లో .env ఫైల్‌ను కూడా ఉపయోగించవచ్చు, కానీ అది dist ఫోల్డర్ లోపల లేదని నిర్ధారించుకోండి. మార్పులు చేసిన తర్వాత యాప్‌ను రీస్టార్ట్ చేయండి.

Common Troubleshooting • EADDRINUSE: బహుశా మీరు మాన్యువల్‌గా ఏదైనా ప్రాసెస్‌ను రన్ చేస్తూ ఉండవచ్చు. యాప్‌ను నిర్వహించడానికి Passengerని అనుమతించండి. • Cannot find module: మీ బిల్డ్ మిస్ అయి ఉండవచ్చు లేదా app.jsలోని పాత్ తప్పుగా ఉండవచ్చు. • Redis connection failed: మీ Redis పోర్ట్‌పై Namecheap అవుట్‌బౌండ్ కనెక్షన్‌లను అనుమతిస్తుందో లేదో తనిఖీ చేయండి. దానిని ఓపెన్ చేయమని మీరు Namecheap సపోర్ట్‌ను అడగాల్సి రావచ్చు.

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