Jak wdrożyć NestJS na hostingu współdzielonym Namecheap

Wdrażanie NestJS na hostingu współdzielonym Namecheap nie jest takie samo jak wdrażanie statycznej strony czy aplikacji PHP. Nie można po prostu przesłać plików i oczekiwać, że wszystko będzie działać.

Musisz skompilować TypeScript do JavaScriptu, zainstalować zależności produkcyjne i użyć cPanel, aby zarządzać procesem za pomocą Passenger.

Zanim znalazłem właściwą metodę, mierzyłem się z pustymi folderami, brakującymi plikami builda i błędami połączenia z Redisem. Oto sprawdzony proces pracy.

Logika konfiguracji Żądanie podąża tą ścieżką: • Przeglądarka lub klient API • Domena i HTTPS • Apache / Passenger na Namecheap • app.js (most) • dist/main.js (skompilowany kod) • Aplikacja NestJS

Kluczowe wymagania • Konto hostingowe Namecheap z obsługą Node.js • Dostęp do cPanel oraz SSH/Terminal • Działający projekt NestJS • Dane uwierzytelniające produkcyjne do bazy danych lub Redis

Krok 1: Przygotuj kod Nie używaj sztywno wpisanego portu. W pliku src/main.ts użyj process.env.PORT:

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

Krok 2: Zorganizuj zależności Przenieś pakiety runtime, takie jak @nestjs/common i @nestjs/core, do sekcji dependencies w package.json. Jeśli pozostaną w devDependencies, Twoja aplikacja ulegnie awarii na produkcji.

Krok 3: Budowanie i tworzenie mostu Namecheap uruchamia JavaScript, a nie TypeScript. • Uruchom npm run build lokalnie. • Sprawdź, czy plik dist/main.js istnieje. • Utwórz plik app.js w głównym katalogu projektu z tą linią: require('./dist/main');

Ten plik app.js służy jako punkt wejścia dla Passenger.

Krok 4: Strategia wdrożenia Najbezpieczniejszą metodą jest zbudowanie aplikacji lokalnie i przesłanie artefaktów: • Prześlij app.js • Prześlij folder dist/ • Prześlij package.json oraz package-lock.json • Na Namecheap uruchom: npm ci --omit=dev

Nigdy nie przesyłaj lokalnego folderu node_modules. Natywne moduły zbudowane na Twoim komputerze nie będą działać na serwerze Linux.

Krok 5: Konfiguracja cPanel Przejdź do "Setup Node.js App" w cPanel: • Wybierz właściwą wersję Node.js. • Ustaw tryb (mode) na Production. • Ustaw Application root na swój folder. • Ustaw Application startup file na app.js.

Krok 6: Zmienne środowiskowe Dodaj swoje sekrety (takie jak DATABASE_URL lub klucze API) bezpośrednio w interfejsie Node.js w cPanel. Możesz również użyć pliku .env w głównym katalogu, ale upewnij się, że nie znajduje się on w folderze dist. Po wprowadzeniu zmian zrestartuj aplikację.

Typowe problemy i rozwiązania • EADDRINUSE: Prawdopodobnie działa proces uruchomiony ręcznie. Pozwól Passenger zarządzać aplikacją. • Cannot find module: Brakuje buildu lub ścieżka w app.js jest błędna. • Redis connection failed: Sprawdź, czy Namecheap pozwala na połączenia wychodzące na Twoim porcie Redis. Możesz być zmuszony poprosić wsparcie Namecheap o jego otwarcie.

Źródło: https://dev.to/adesoji/how-to-deploy-and-run-a-nestjs-app-on-namecheap-shared-hosting-5c45