Документация ISPmanager 6 Lite, Pro, Host

Node.js

ISPSystem

Обратите внимание!

Работа Node.js для веб-сервера OpenLiteSpeed в текущей версии ISPmanager не поддерживается.

Node.js — это среда выполнения JavaScript-приложений, работающая на сервере.

Установка


Чтобы установить Node.js, перейдите в НастройкиКонфигурация ПОNode.js → кнопка Установить. ISPmanager подключит репозиторий Node.js, установит менеджер пакетов npm и последнюю LTS-версию Node.js. Для управления запущенными приложениями Node.js панель управления установит менеджер процессов pm2.

Обратите внимание!

Для проксирования запросов Node.js требуется веб-сервер Nginx. Если в панели управления не был установлен Nginx, он будет установлен вместе с Node.js.

Настройка пользователя


Чтобы пользователь мог создавать сайты с Node.js, перейдите в Пользователи → выберите пользователя → кнопка Изменить → включите опцию Может использовать Node.js и выберите Версию Node.js по умолчанию Сохранить. Пользователи, у которых эта возможность включена, отображаются в списке со значком в столбце Статус. Отключить эту опцию можно, только если у пользователя нет активных сайтов с Node.js.

Настройка сайта


Чтобы включить Node.js для сайта, при создании или редактировании WWW-домена:

  1. В поле Обработчик выберите Node.js.
  2. Укажите Версию Node.js. Версия будет установлена только для пользователя — владельца сайта. Доступна последняя версия Node.js и LTS-версии, начиная с 12.13.0.

  3. Выберите Способ подключения:

    • Сокет файл — приложение Node.js будет использовать для работы Unix-сокеты.
    • Порт — приложение Node.js будет использовать для работы TCP-порт;

      ISPmanager автоматически выберет свободный TCP-порт для Node.js. Поиск свободного порта начинается со значения, указанного в параметре NodeJsBackendBind конфигурационного файла ISPmanager. Значение параметра по умолчанию — 127.0.0.1:10000.

      Для работы Node.js через Unix-сокет будет создана директория /var/www/<имя_пользователя>/data/nodejs/.

      Чтобы передать настройки в файл сервера Node.js, используйте переменные окружения:

      • PORT — для номера порта;
      • SOCKET — для файла сокета.


      Содержимое файла сервера по умолчанию
      const http = require('http');
      const fs = require('fs');
      
      const server = http.createServer((req, res) => {
          res.statusCode = 200;
          res.setHeader('Content-Type', 'text/html;charset=utf-8');
          const data = fs.readFileSync(process.env.INDEX_PATH, 'utf8');
          res.end(data);
      });
      
      if ("SOCKET" in process.env) {
          const socket = process.env.SOCKET;
          // Socket must be removed before starting server. This action is required. Otherwise server will not start if socket exists.
          if (fs.existsSync(socket)) {
              fs.unlinkSync(socket);
          }
          server.listen(socket, () => {
              fs.chmodSync(socket,0660);
              console.log(`Listening ${socket}`);
          });
      } else if ("PORT" in process.env) {
          const hostname = process.env.INSTANCE_HOST;
          const port = process.env.PORT;
          server.listen(port, hostname, () => {
              console.log(`Listening http://${hostname}:${port}/`);
          });
      }

Пример настройки

Конфигурационный файл


Приложение Node.js содержит конфигурационный файл package.json. Конфигурационный файл используется для установки зависимостей через npm и управления запуском приложения. Подробнее о формате конфигурационного файла см. в официальной документации Node.js.

Содержимое package.json по умолчанию
{
  "name": "doc.test",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

Чтобы изменить конфигурационный файл, перейдите в Сайты → выберите сайт → кнопка Файлы конфигурации. Чтобы изменить путь к приложению сайта, укажите нужный путь в параметрах main и start.

Обратите внимание!

Не рекомендуем менять файлы конфигурации, если вы полностью не уверены в своих действиях. Перед сохранением конфигурации ISPmanager проверяет только синтаксис файлов, а не корректность настроек.

Чтобы установить пакеты, указанные в конфигурационном файле, перейдите в Сайты → выберите сайт → меню Npm install.

Диагностика приложения


Менеджер процессов

Вы можете проверить работу приложения сайта через менеджер процессов pm2:

  1. Разрешите доступ к shell для пользователя-владельца сайта: Пользователи → выберите пользователя → включите опцию Доступ к shellСохранить.
  2. Подключитесь к серверу по ssh и авторизуйтесь под учётной записью владельца сайта:

    su <username>

    <username> — имя пользователя-владельца сайта. Например, www-root.

  3. Выведите список приложений: 

    pm2 list
    Пример ответа
    | id  │ name            │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
    ├─────┼─────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
    │ 0   │ example.com     │ default     │ N/A     │ fork    │ 317423   │ 13m    │ 2    │ online    │ 0%       │ 60.6mb   │ www-root │ disabled │
    │ 1   │ example2.com    │ default     │ N/A     │ fork    │ 316830   │ 19m    │ 0    │ online    │ 0%       │ 61.7mb   │ www-root │ disabled |
  4. Запросите информацию о нужном приложении: 

    pm2 info <name>

    или

    pm2 info <id>

    <name> — имя сайта. Например, example.com.

    <id> — id процесса приложения

    Пример ответа
    Describing process with id 0 - name example.com
    | status            │ online                                                    │
    │ name              │ example.com                                               │
    │ namespace         │ default                                                   │
    │ version           │ N/A                                                       │
    │ restarts          │ 2                                                         │
    │ uptime            │ 15m                                                       │
    │ script path       │ /var/www/www-root/data/.nvm/versions/node/v18.1.0/bin/npm │
    │ script args       │ start                                                     │
    │ error log path    │ /var/www/www-root/data/.pm2/logs/example.com-error.log    │
    │ out log path      │ /var/www/www-root/data/.pm2/logs/example.com-out.log      │
    │ pid path          │ /var/www/www-root/data/.pm2/pids/example.com-0.pid        │
    │ interpreter       │ node                                                      │
    │ interpreter args  │ N/A                                                       │
    │ script id         │ 0                                                         │
    │ exec cwd          │ /var/www/www-root/data/www/example.com                    │
    │ exec mode         │ fork_mode                                                 │
    │ node.js version   │ 18.1.0                                                    │
    │ node env          │ N/A                                                       │
    │ watch & reload    │ ✘                                                         │
    │ unstable restarts │ 0                                                         │
    │ created at        │ 2022-05-11T04:25:03.051Z                                  |

Служебные каталоги

При работе с сайтами с Node.js в домашней директории пользователя создаются служебные каталоги используемых утилит:

  • /var/www/www-root/data/.npm/ — данные пакетного менеджера Node.js;
  • /var/www/www-root/data/.nvm/ — установленные версии Node.js;
  • /var/www/www-root/data/.pm2/ — данные менеджера процессов pm2.

Эти директории нужны для корректной работы Node.js. Если их удалить, директории будут пересозданы при следующем редактировании сайта, но часть информации может быть утеряна.

Управление сайтом через shell-клиент


Владелец сайта может выполнять команды Node.js и npm через shell-клиент. Эта возможность доступна, если в настройках пользователя включена опция Доступ к shell. Чтобы открыть shell-клиент, перейдите в Cайты → выберите сайт → меню Shell-клиент.
При запуске shell-клиента панель управления автоматически:

  • откроет домашнюю директорию сайта;
  • добавит пути к Node.js для выбранного сайта в переменную PATH.

Чтобы закрыть shell-клиент, нажмите .

Интерфейс shell-клиента

Удаление


Чтобы удалить Node.js, перейдите в Конфигурация ПО →  Node.js Отключить. Панель управления удалит Node.js и связанное ПО — npm, pm2. 

Обратите внимание!

Удаление невозможно, если в панели управления есть сайты с Node.js.


Особенности работы


  • При выборе обработчика Node.js установка CMS или конструктора сайта недоступна.
  • Если содержимое сайта с Node.js изменилось, нужно перезапустить приложение сайта для применения изменений: Сайты → выберите сайт → меню Перезапустить.
  • При восстановлении сайта с Node.js из резервной копии ISPmanager попытается использовать сохранённые настройки порта или сокета. Если порт или сокет занят, для сайта будет выделен новый порт или сокет.


Спасибо за ваш отзыв!
Была ли полезна статья?
Уточните, почему:

статья не соответствует названию

статью сложно понять

в статье нет ответа на мой вопрос

рекомендации из статьи не помогли

другая причина

Расскажите, что вам не понравилось в статье: