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
