Як розгорнути NestJS на спільному хостингу Namecheap
Розгортання NestJS на спільному хостингу Namecheap відрізняється від розгортання статичного сайту або PHP-додатка. Ви не можете просто завантажити файли й очікувати, що все запрацює.
Ви повинні скомпілювати TypeScript у JavaScript, встановити виробничі залежності (production dependencies) та використовувати cPanel для керування процесом через Passenger.
Перш ніж я знайшов правильний шлях, я стикався з порожніми папками, відсутністю файлів збірки та розірваними з'єднаннями з Redis. Ось перевірений робочий процес.
Логіка налаштування
Запит проходить таким шляхом: • Браузер або API-клієнт • Домен та HTTPS • Apache / Passenger на Namecheap • app.js (міст) • dist/main.js (скомпілований код) • NestJS додаток
Основні вимоги
• Акаунт хостингу Namecheap із підтримкою Node.js • Доступ до cPanel та SSH/Terminal • Працюючий NestJS проєкт • Виробничі облікові дані для вашої бази даних або Redis
Крок 1: Підготуйте свій код
Не використовуйте жорстко прописаний порт. У вашому src/main.ts використовуйте process.env.PORT:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(process.env.PORT || 4000);
}
Крок 2: Організуйте залежності
Перенесіть пакети середовища виконання (runtime packages), такі як @nestjs/common та @nestjs/core, у розділ dependencies у package.json. Якщо вони залишаться в devDependencies, ваш додаток перестане працювати у виробничому середовищі.
Крок 3: Зберіть проєкт і створіть «міст»
Namecheap запускає JavaScript, а не TypeScript.
• Запустіть npm run build локально.
• Переконайтеся, що файл dist/main.js існує.
• Створіть файл app.js у корені вашого проєкту з таким рядком: require('./dist/main');
Цей app.js слугує точкою входу для Passenger.
Крок 4: Стратегія розгортання
Найбезпечніший спосіб — зібрати проєкт локально та завантажити артефакти:
• Завантажте app.js
• Завантажте папку dist/
• Завантажте package.json та package-lock.json
• На Namecheap виконайте: npm ci --omit=dev
Ніколи не завантажуйте локальну папку node_modules. Нативні модулі, зібрані на вашому комп'ютері, не працюватимуть на Linux-сервері.
Крок 5: Налаштуйте cPanel
Перейдіть до "Setup Node.js App" у cPanel:
• Виберіть правильну версію Node.js.
• Встановіть режим (mode) на Production.
• Встановіть Application root на вашу папку.
• Встановіть Application startup file на app.js.
Крок 6: Змінні середовища
Додайте ваші секрети (наприклад, DATABASE_URL або API-ключі) безпосередньо в інтерфейсі Node.js у cPanel. Ви також можете використовувати файл .env у корені, але переконайтеся, що він не знаходиться всередині папки dist. Перезапустіть додаток після внесення змін.
Поширені проблеми та їх вирішення
• 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
