Hoe je NestJS kunt deployen op Namecheap Shared Hosting

Het deployen van NestJS naar Namecheap shared hosting is niet hetzelfde als het deployen van een statische site of een PHP-app. Je kunt niet zomaar bestanden uploaden en verwachten dat het werkt.

Je moet TypeScript compileren naar JavaScript, productie-afhankelijkheden installeren en cPanel gebruiken om het proces via Passenger te beheren.

Ik kreeg te maken met lege mappen, ontbrekende build-bestanden en kapotte Redis-verbindingen voordat ik de juiste manier vond. Hier is de bewezen workflow.

De Setup-logica Het verzoek volgt dit pad: • Browser of API-client • Domein en HTTPS • Apache / Passenger op Namecheap • app.js (de brug) • dist/main.js (de gecompileerde code) • NestJS-applicatie

Belangrijke vereisten • Een Namecheap hosting-account met Node.js-ondersteuning • Toegang tot cPanel en SSH/Terminal • Een werkend NestJS-project • Productie-inloggegevens voor je database of Redis

Stap 1: Bereid je code voor Gebruik geen hard-coded poort. Gebruik in je src/main.ts process.env.PORT:

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

Stap 2: Organiseer afhankelijkheden Verplaats runtime-pakketten zoals @nestjs/common en @nestjs/core naar de dependencies-sectie in package.json. Als ze in devDependencies blijven staan, zal je app crashen in productie.

Stap 3: Build en maak de brug Namecheap draait JavaScript, geen TypeScript. • Voer npm run build lokaal uit. • Controleer of dist/main.js bestaat. • Maak een app.js-bestand aan in de root van je project met deze regel: require('./dist/main');

Dit app.js-bestand fungeert als het instappunt (entry point) voor Passenger.

Stap 4: Deploymentstrategie De veiligste manier is om lokaal te builden en de artifacts te uploaden: • Upload app.js • Upload de dist/-map • Upload package.json en package-lock.json • Voer op Namecheap uit: npm ci --omit=dev

Upload nooit je lokale node_modules-map. Native modules die op jouw computer zijn gebouwd, zullen niet werken op een Linux-server.

Stap 5: Configureer cPanel Ga naar "Setup Node.js App" in cPanel: • Selecteer de juiste Node.js-versie. • Zet de modus op Production. • Stel de Application root in op jouw map. • Stel de Application startup file in op app.js.

Stap 6: Omgevingsvariabelen Voeg je geheimen (zoals DATABASE_URL of API-sleutels) direct toe in de Node.js-interface van cPanel. Je kunt ook een .env-bestand in de root gebruiken, maar zorg ervoor dat dit niet in de dist-map staat. Start de app opnieuw op nadat je wijzigingen hebt aangebracht.

Veelvoorkomende problemen • EADDRINUSE: Je hebt waarschijnlijk een handmatig proces draaien. Laat Passenger de app beheren. • Cannot find module: Je build ontbreekt of het pad in app.js is onjuist. • Redis connection failed: Controleer of Namecheap uitgaande verbindingen op je Redis-poort toestaat. Mogelijk moet je de support van Namecheap vragen om deze te openen.

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