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 એપ્લિકેશન

મુખ્ય જરૂરિયાતો

• Node.js સપોર્ટ ધરાવતું Namecheap હોસ્ટિંગ એકાઉન્ટ • cPanel અને SSH/Terminal ની એક્સેસ • એક કાર્યરત NestJS પ્રોજેક્ટ • તમારા ડેટાબેઝ અથવા Redis માટે production ક્રેડેન્શિયલ્સ

સ્ટેપ 1: તમારો કોડ તૈયાર કરો

હાર્ડ-કોડેડ પોર્ટનો ઉપયોગ કરશો નહીં. તમારા src/main.ts માં, process.env.PORT નો ઉપયોગ કરો:

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

સ્ટેપ 2: ડિપેન્ડન્સીઝને વ્યવસ્થિત કરો

@nestjs/common અને @nestjs/core જેવા runtime પેકેજોને package.json માં dependencies સેક્શનમાં ખસેડો. જો તેઓ devDependencies માં રહેશે, તો તમારી એપ production માં ક્રેશ થઈ જશે.

સ્ટેપ 3: બિલ્ડ કરો અને બ્રિજ બનાવો

Namecheap JavaScript ચલાવે છે, TypeScript નહીં. • લોકલી npm run build ચલાવો. • ખાતરી કરો કે dist/main.js અસ્તિત્વમાં છે. • તમારા પ્રોજેક્ટ રૂટમાં આ લાઇન સાથે app.js ફાઇલ બનાવો: require('./dist/main');

app.js Passenger માટે એન્ટ્રી પોઈન્ટ તરીકે કામ કરે છે.

સ્ટેપ 4: ડિપ્લોયમેન્ટ સ્ટ્રેટેજી

સૌથી સુરક્ષિત રીત લોકલી બિલ્ડ કરીને આર્ટિફેક્ટ્સ (artifacts) અપલોડ કરવાની છે: • app.js અપલોડ કરો • dist/ ફોલ્ડર અપલોડ કરો • package.json અને package-lock.json અપલોડ કરો • Namecheap પર, આ ચલાવો: npm ci --omit=dev

ક્યારેય તમારું લોકલ node_modules ફોલ્ડર અપલોડ કરશો નહીં. તમારા કમ્પ્યુટર પર બનેલા નેટિવ મોડ્યુલ્સ Linux સર્વર પર કામ કરશે નહીં.

સ્ટેપ 5: cPanel કોન્ફિગર કરો

cPanel માં Setup Node.js App પર જાઓ: • સાચું Node.js વર્ઝન પસંદ કરો. • Mode ને Production પર સેટ કરો. • Application root ને તમારા ફોલ્ડર પર સેટ કરો. • Application startup file ને app.js પર સેટ કરો.

સ્ટેપ 6: એન્વાયરમેન્ટ વેરિયેબલ્સ (Environment Variables)

તમારા સિક્રેટ્સ (જેમ કે DATABASE_URL અથવા API keys) સીધા cPanel Node.js ઇન્ટરફેસમાં ઉમેરો. તમે રૂટમાં .env ફાઇલનો ઉપયોગ પણ કરી શકો છો, પરંતુ ખાતરી કરો કે તે dist ફોલ્ડરની અંદર નથી. ફેરફારો કર્યા પછી એપને રીસ્ટાર્ટ કરો.

સામાન્ય ટ્રબલશૂટિંગ (Common Troubleshooting)

EADDRINUSE: સંભવતઃ તમારી પાસે કોઈ મેન્યુઅલ પ્રોસેસ ચાલી રહી છે. Passenger ને એપનું સંચાલન કરવા દો. • Cannot find module: તમારી બિલ્ડ ખૂટે છે અથવા app.js માં પાથ ખોટો છે. • Redis connection failed: તપાસો કે Namecheap તમારા Redis પોર્ટ પર આઉટબાઉન્ડ કનેક્શનની મંજૂરી આપે છે કે નહીં. તમારે તેને ખોલવા માટે Namecheap સપોર્ટને પૂછવું પડી શકે છે.

સ્ત્રોત: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45