ispmanager 6 lite, pro, host

Node.js

 

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

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

Установка

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

Обратите внимание!
Для того чтобы добавить в панель управления ispmanager возможность установки Node.js, необходимо предварительно установить веб-сервер Nginx.  При установке Nginx работа созданных сайтов может быть нарушена из-за пересоздания конфигурационных файлов.

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

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

Пользователи, у которых эта возможность включена, отображаются в списке со значком в столбце Статус.

Отключить эту опцию можно, только если у пользователя нет активных сайтов с Node.js.

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

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

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

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

Приложение 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:

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

Подключитесь к серверу по ssh и авторизуйтесь под учётной записью владельца сайта:

su <username>
Пояснения к команде

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

/usr/lib/ispnodejs/bin/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│<имя пользователя>│disabled│
│ 1│example2.com│default  │N/A    │fork│316830│ 19m  │0 │online│0% │61.7mb│<имя пользователя>│disabled|

Запросите информацию о нужном приложении: 

/usr/lib/ispnodejs/bin/pm2 info <name>

или

/usr/lib/ispnodejs/bin/pm2 info <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/<имя пользователя>/data/.nvm/versions/node/v18.1.0/bin/npm │
│ script args       │ start                                                               │
│ error log path    │ /var/www/<имя пользователя>/data/.pm2/logs/example.com-error.log    │
│ out log path      │ /var/www/<имя пользователя>/data/.pm2/logs/example.com-out.log      │
│ pid path          │ /var/www/<имя пользователя>/data/.pm2/pids/example.com-0.pid        │
│ interpreter       │ node                                                                │
│ interpreter args  │ N/A                                                                 │
│ script id         │ 0                                                                   │
│ exec cwd          │ /var/www/<имя пользователя>/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                                         |
Обратите внимание!
Чтобы не включать доступ shell пользователю, используйте sudo -u /usr/lib/ispnodejs/bin/pm2 list

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

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

/var/www/<имя пользователя>data/.npm/ — данные пакетного менеджера Node.js;

/var/www/<имя пользователя>data/.nvm/ — установленные версии Node.js;

/var/www/<имя пользователя>/data/.pm2/ — данные менеджера процессов pm2.

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

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

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

откроет домашнюю директорию сайта;

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

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

Удаление

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

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

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

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