---
title: Пример запуска проекта Node.js (Express.js) на хостинге
description: Примерное руководство по деплою проекта Node.js, созданного на фреймворке Express.js, в cPanel
navigation: true

badges:
  - value: Веб-хостинг
    to: /shared-hosting
    target: _self
    icon: lucide:layout-template

authors:
  - name: Шерали Саломидинов
    username: coderplusdesigner
---

:badge[cPanel v136.0.24]{type="info"}

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

Статья включает следующие шаги:
1. Ознакомление с примерным проектом
2. Запуск проекта на отдельном хостинге — деплой на production
3. Удаление примерного проекта с хостинга

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

::callout{type="info"}
Все шаги, использованные в этом руководстве, применимы к любому проекту Node.js, построенному на **Express.js** — различаться могут только имена файлов и настройки базы данных.
::

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

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

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

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_1.png
srcDark: /images/shared-hosting/en/node-sample_1.png
alt: Рис. 1 | Пример проекта Node.js
---
::

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.

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

:read-more{icon="lucide:link" title="Github" to="https://github.com/coderPlusDesigner/hms-node-sample" target="_blank"}

:download-button{ url="/sample-projects/node-sample.zip" filename="node-sample.zip" title="Скачать примерный проект в формате .zip" icon="lucide:download"}

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

::code-group
  ```  [Windows PowerShell]
  npm install
  copy .env.example .env
  npm run migrate
  npm start
  ```
  
  ``` [Linux bash]
  npm install
  cp .env.example .env
  npm run migrate
  npm start
  ```
::

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_2.png
srcDark: /images/shared-hosting/en/node-sample_2.png
alt: Рис. 2 | Пример проекта Node.js
---
::

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

Сначала планируем порядок действий:
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` для проекта.

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_3.png
srcDark: /images/shared-hosting/en/node-sample_3.png
alt: Рис. 3 | Пример проекта Node.js
---
::

:read-more{icon="lucide:link" title="Читайте о добавлении дополнительного домена в cPanel здесь" to="/shared-hosting/cpanel/domains-section/domains-interface#addon-parked-alias-domenlar-va-subdomenlar" target="_blank"}

### 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".

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

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_4.png
srcDark: /images/shared-hosting/en/node-sample_4.png
alt: Рис. 4 | Пример проекта Node.js
---
::

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

Нажмите "Create".

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_5.png
srcDark: /images/shared-hosting/en/node-sample_5.png
alt: Рис. 5 | Пример проекта Node.js
---
::

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

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

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

::steps{level=5}

  ##### Зайдите в папку проекта и нажмите "Upload"

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_6.png
  srcDark: /images/shared-hosting/en/node-sample_6.png
  alt: Рис. 6 | Пример проекта Node.js
  ---
  ::

  ##### Нажмите "Select File" и загрузите архив проекта

  ::callout{type="info"}
  Не включайте в архив `node_modules`, `dev.sqlite3` и `.env` — они не нужны или будут созданы заново на production.
  ::

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_7.png
  srcDark: /images/shared-hosting/en/node-sample_7.png
  alt: Рис. 7 | Пример проекта Node.js
  ---
  ::

  ##### После загрузки нажмите "Go back ..." для возврата в File Manager

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_8.png
  srcDark: /images/shared-hosting/en/node-sample_8.png
  alt: Рис. 8 | Пример проекта Node.js
  ---
  ::

  ##### Выберите загруженный архив, нажмите "Extract" и подтвердите

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_9.png
  srcDark: /images/shared-hosting/en/node-sample_9.png
  alt: Рис. 9 | Пример проекта Node.js
  ---
  ::

  ##### Включите отображение скрытых файлов в "Settings" — активируйте "Show Hidden Files"

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_10.png
  srcDark: /images/shared-hosting/en/node-sample_10.png
  alt: Рис. 10 | Пример проекта Node.js
  ---
  ::

  ##### Проект загружен. При желании можно удалить архив (.zip)

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_11.png
  srcDark: /images/shared-hosting/en/node-sample_11.png
  alt: Рис. 11 | Пример проекта Node.js
  ---
  ::

::

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

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

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_12.png
srcDark: /images/shared-hosting/en/node-sample_12.png
alt: Рис. 12 | Пример проекта Node.js
---

Это откроет редактор файла. Мы оставляем секцию production и редактируем её следующим образом:

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_13.png
srcDark: /images/shared-hosting/en/node-sample_13.png
alt: Рис. 13 | Пример проекта Node.js
---

| Имя переменной | Значение |
|---|---|
| `NODE_ENV` | `production` |
| `DB_HOST` | `localhost` |
| `DB_PORT` | `3306` |
| `DB_USER` | *(Пользователь базы, созданный на шаге 2, например `scroll_tt-user`)* |
| `DB_PASSWORD` | *(Пароль, заданный на шаге 2)* |
| `DB_NAME` | *(Имя базы, созданной на шаге 2, например `scroll_tictactoe`)* |

::callout{type="warning"}
Не добавляйте переменную `PORT` вручную — Passenger автоматически передаёт её приложению. Express считывает её через `process.env.PORT`.
::

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

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

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

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

``` [Terminal]
npm install
```

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_14.png
srcDark: /images/shared-hosting/en/node-sample_14.png
alt: Рис. 14 | Пример проекта Node.js
---

Далее выполните `npm run migrate`, чтобы перенести структуру базы (таблицы) в новую MySQL базу:

``` [Terminal]
npm run migrate
```

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_15.png
srcDark: /images/shared-hosting/en/node-sample_15.png
alt: Рис. 15 | Пример проекта Node.js
---

Эта команда создаёт таблицы `games` и `leaderboard` на основе файлов в папке `migrations/` — те же самые файлы, что использовались локально с SQLite, без ручного SQL.

::callout{type="info"}
Это главное преимущество использования query builder, такого как Knex: одни и те же файлы миграции работают и для локальной SQLite, и для production MySQL.
::

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

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

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_16.png
srcDark: /images/shared-hosting/en/node-sample_16.png
alt: Рис. 16 | Пример проекта Node.js
---

---

Деплой проекта завершён. Откройте его через выделенный поддомен и протестируйте:

::color-mode-image
---
srcLight: /images/shared-hosting/en/node-sample_17.png
srcDark: /images/shared-hosting/en/node-sample_17.png
alt: Рис. 17 | Пример проекта Node.js
---

## Удаление примерного проекта с хостинга

Теперь вы знаете, как деплоить проект Node.js (Express.js) на хостинг. Поздравляем!

— Но это всё?
— Нет. Нужно также знать, как правильно удалить проект и очистить хостинг.

Некоторые клиенты сталкивались с проблемами при неправильном удалении Node.js приложений.

### Правильный порядок удаления проекта Node.js:

::steps{level=5}

  ##### Сначала удалите виртуальное окружение

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

  Затем нажмите "Delete" (или "Destroy"), чтобы удалить приложение

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_18.png
  srcDark: /images/shared-hosting/en/node-sample_18.png
  alt: Рис. 18 | Пример проекта Node.js
  ---
  ::

  ##### Далее удалите поддомен

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_19.png
  srcDark: /images/shared-hosting/en/node-sample_19.png
  alt: Рис. 19 | Пример проекта Node.js
  ---
  ::

  ##### Удаление Node.js App и домена не удаляет папку проекта. В конце удалите папку проекта через "File Manager".

  ::color-mode-image
  ---
  srcLight: /images/shared-hosting/en/node-sample_20.png
  srcDark: /images/shared-hosting/en/node-sample_20.png
  alt: Рис. 20 | Пример проекта Node.js
  ---
  ::

  ##### Также, если база больше не нужна, удалите её и пользователя в разделе "MySQL Databases".

::

---

**Source URL:** https://support.hostmaster.uz/ru/shared-hosting/cpanel/example-of-running-a-nodejs-project
