Пример запуска проекта Node.js (Express.js) на хостинге

Примерное руководство по деплою проекта Node.js, созданного на фреймворке Express.js, в cPanel

cPanel v136.0.24

Эта статья служит небольшим руководством, чтобы помочь вам запустить проект на Node.js (Express.js) на нашем хостинге через панель управления cPanel.

Статья включает следующие шаги:

  1. Ознакомление с примерным проектом
  2. Запуск проекта на отдельном хостинге — деплой на production
  3. Удаление примерного проекта с хостинга

Внимательно следите за процессом и выполняйте шаги в правильном порядке, так как это даст вам хорошее понимание того, как деплоить проект Node.js (Express.js), и позже вы сможете применить эту практику к своему собственному проекту.

Примерный проект

Выбранный нами примерный проект — "Tic-Tac Ledger", браузерная игра крестики-нолики для двух игроков. Мы также рассмотрим добавление таблицы лидеров для хранения результатов игр.

Проект состоит из сервера Express.js и статического фронтенда (HTML/CSS/JS, без этапа сборки). В качестве базы данных используется библиотека Knex — она позволяет переключаться между SQLite локально и MySQL на production без изменения SQL-кода.

  1. migrations/ — папка с файлами, описывающими структуру базы данных (таблицы). Эти файлы создают таблицы games и leaderboard — одинаково для локальной SQLite и production MySQL.
  2. node_modules/ — папка со всеми библиотеками проекта. Её не нужно загружать на хостинг — она будет создана заново на production сервере через npm install.
  3. src/ — основной код проекта: маршруты сервера (routes/), игровая логика (gameLogic.js), подключение к базе (db.js) и статические файлы фронтенда (public/).
  4. .env — файл с секретами окружения и паролями. В production можно использовать интерфейс "Environment variables" в cPanel вместо этого файла.
  5. app.js — входной файл проекта. Запускает сервер Express, и именно этот файл вызывает cPanel/Passenger.
  6. knexfile.js — файл конфигурации базы данных. Содержит отдельные настройки для development (SQLite) и production (MySQL).
  7. package.json — файл со списком всех необходимых библиотек и их версий. Эквивалентен requirements.txt в Python.

Полный проект предоставлен, пожалуйста, изучите его:

Скачать примерный проект в формате .zip

node-sample.zip

Откройте папку проекта в терминале и выполните:

Windows PowerShell
Linux bash
npm install
copy .env.example .env
npm run migrate
npm start

Загрузка проекта на сервер

Сначала планируем порядок действий:

  1. Создать отдельный поддомен для проекта
  2. Создать базу данных и пользователя базы (MySQL)
  3. Создать новое окружение Node.js через интерфейс "Setup Node.js App"
  4. Загрузить архив проекта в формате .zip в папку поддомена
  5. Настроить переменные окружения для production
  6. Установить необходимые библиотеки через кнопку "Run NPM Install" в cPanel; затем выполнить миграцию схемы в новую базу через терминал
  7. Перезапустить "Node.js App"

Готовы? Начнём!

1. Создание поддомена

Мы создаём поддомен node.scroll.uz для проекта.

2. Создание базы данных и пользователя

Мастер баз данных в cPanel шаг за шагом проведёт вас через создание базы MySQL, её пользователя и назначение прав.

  1. Дайте имя базе. Мы назвали её scroll_node (префикс scroll_ берётся из имени пользователя хостинга и может отличаться).
  2. Создайте пользователя. Мы назвали его scroll_node-user (у вас префикс может быть другим). Задайте надёжный пароль и сохраните его.
  3. Назначьте права пользователю. Мы выбрали "ALL PRIVILEGES", чтобы пользователь имел полный доступ к базе.

Сохраните имя базы, имя пользователя и пароль.

3. Создание Node.js App

Откройте "Setup Node.js App" в cPanel и нажмите "+ Create Application".

Заполните форму следующим образом:

  1. Выберите версию Node.js (желательно последнюю — 18 и выше).
  2. Для Application mode выберите "Production".
  3. Укажите корневую папку проекта. Мы ввели node.scroll.uz, так как при создании поддомена cPanel создала папку с этим именем.
  4. Укажите домен, на котором должен работать проект.
  5. В поле Application startup file введите app.js — входной файл сервера Express.
  6. Настройте лог-файл при необходимости.

Нажмите "Create".

Приложение Node.js создано. Важные моменты:

  1. Есть кнопки для остановки и перезапуска приложения.
  2. Вверху показана команда для активации виртуального окружения. Сохраните её для использования в терминале.

4. Загрузка проекта на хостинг

Используем "File Manager" в cPanel.

Зайдите в папку проекта и нажмите "Upload"
Нажмите "Select File" и загрузите архив проекта
После загрузки нажмите "Go back ..." для возврата в File Manager
Выберите загруженный архив, нажмите "Extract" и подтвердите
Включите отображение скрытых файлов в "Settings" — активируйте "Show Hidden Files"
Проект загружен. При желании можно удалить архив (.zip)

5. Настройка переменных окружения для production

Переименуйте .env.example в .env. Щёлкните правой кнопкой и выберите "Edit".

Нажмите "Save", чтобы сохранить изменения.

6. Установка библиотек и миграция базы

Откройте терминал cPanel и выполните команду, сохранённую ранее из "Setup Node App".

Затем выполните npm install, чтобы установить все библиотеки из package.json в правильном виртуальном окружении Node.js:

Terminal
npm install

7. Перезапуск приложения

Чтобы применить все изменения, перезапустите Node.js App. Откройте "Setup Node.js App" в cPanel и нажмите кнопку перезапуска: