2.23.13. Node.js

Только для бизнес-хостинга

Node.js доступен только на бизнес-хостинге и входит в стоимость тарифа. При смене тарифа на обычный сайты на Node.js перестанут работать.
Внутри приложения при запуске веб-сервера в качестве порта используйте:
  • Либо путь к сокету (берётся со страницы настроек Node.js).
  • Либо путь из переменной окружения process.env.PORT (содержит путь к сокету).
  1. Запрос поступает на общий сервер через порт 80 или 443.
  2. На основе имени хоста перенаправляется на сокет нужного сайта.
  3. Приложение получает данные через сокет, обрабатывает их и возвращает ответ.
В течение нескольких минут после включения Node.js в настройках сайта в корневом каталоге автоматически создаётся примитивное приложение, выводящее заглушку о том, что сайт готов к использованию.
  1. Выберите веб-сервер Node.js, выберите нужную версию и сохраните изменения:
  2. Разместить файлы приложения в корневом каталоге сайта — загрузите файлы готового проекта или установите с помощью npm.
  3. Добавьте скрипт с командой start в package.json
  4. Нажмите «Перезапустить» в настройках Node.js.

Внимание!

  • npm устанавливается в хостинг-аккаунте после установки Node.js в качестве веб-сервера или смены его версии в настройках сайта.
  • Для корректной работы Node.js в файл .bashrc автоматически добавляются строки с конфигурацией NVM.
  • Если node и npm не видны в консоли — убедитесь, что в хостинг-аккаунте существуют файлы .bashrc и .bash_profile и они не содержат ошибок.

npm — пакетный менеджер Node.js.

Команды:

  • npm -v — просмотр текущей версии npm.
  • npm install пакет (или npm i пакет) — установка пакета. После установки появится подкаталог node_modules, в котором будет находится установленный модуль.
  • npm uninstall пакет — удаление пакета.

package.json — файл конфигурации и управления пакетами npm.

Параметры:

  • name (обязательный) — название приложения маленькими латинскими буквами без пробелов, для разделения слов можно использовать символы - и _.
  • version (обязательный) — версия приложения в формате x.x.x.
  • description — описание приложения.
  • dependencies — секция с информацией о всех пакетах, используемых приложением.

Команда npm init — создаёт файл с нуля. Перед созданием запрашиваются все необходимые данные. В конце нужно ознакомиться с содержимым будущего файла и если всё в порядке, ввести yes. Примечание Можно на все вопросы просто нажимать Enter, тогда будет создан файл со стандартным содержимым.

Отображаются вместо «Настройки PHP (php.ini)» в разделе «Мои сайты» после включения Node.js в настройках сайта.

Блок «Статус приложения»:

  • «Статус приложения» — текущий статус работы сервиса Node.js:
    • «Запущено» — сервис запущен и работает.
    • «Остановлено» — не запущен (например, из-за отсутствия package.json) или остановлен из-за возникшей ошибки.
  • «Команда для запуска» — наличие скрипта с командой start в файле package.json:
    • «Присутствует» — найден.
    • «Отсутствует» — не найден.
  • «Принудительный перезапуск» — перезапуск сервиса. Внимание! Нужно нажимать после любых изменений файлов.
  • «Принудительная остановка» — остановка сервиса. Кнопка отображается только при запущенном приложении.

Блок «Основные настройки»:

  • Путь к сокету.
  • Имя переменной окружения, содержащей путь к сокету. Примечание Принудительно передаётся в каждое приложение при его запуске.
  • Пример кода, который должен быть в приложении, для прослушивания трафика сайта.

Блок «Запуск приложения» — содержит команду, которую нужно добавить в package.json для запуска приложения (./index.js в команде — путь к главному файлу приложения, название файла может быть любым):

Блок «Ваш package.json» — показывает текущее содержимое файла package.json из корневого каталога сайта (обновляется при открытии или перезагрузке страницы настроек):

При обнаружении в файле синтаксических ошибок в блоке будет выводится уведомление «Файл содержит ошибки». Наличие уведомления об ошибке при запущенном приложении означает, что приложение было запущено до появления ошибки в файле.

Блок «Логи приложения» — вывод логов приложения в реальном времени. Включает информацию, которую приложение в процессе работы выводит в консоль.

  1. Создайте в корневом каталоге сайта два файла:
    1. Файл конфигурации package.json:
      {
        "name": "node",
        "version": "1.0.0",
        "scripts": {
          "start": "node ./index.js"
        }
      }
    2. Файл приложения index.js:
      const HTTP = require('http');
      const WebServer = HTTP.createServer((req, res) => {
          res.statusCode = 200;
          res.setHeader('Content-Type', 'text/plain');
          res.end('Hello, World!');
      });
      WebServer.listen(process.env.PORT, () => {
          console.log(`Server is running.`);
      });
  2. Нажмите «Перезапустить» в настройках Node.js.
  3. Откройте сайт в браузере. Если всё в порядке, вы увидите текст «Hello, World!».
  1. Подключитесь к хостингу по SSH.
  2. Перейдите в корневой каталог сайта командой вида:
    cd example.com/www

    Где example.com — название сайта, www — его поддомен.

  3. Инициализируйте npm и установите фреймворк express командой:
    npm init && npm i express
  4. Создайте в корневом каталоге сайта файл приложения index.js:
    const express = require("express");
    const app = express();
     
    app.get("/", function(request, response){
        response.end("Hello from Express!");
    });
     
    app.listen(process.env.PORT);
  5. Отредактируйте файл package.json и добавьте в него команду запуска вида:
    "scripts": {
        "start": "node ./index.js"
    }

    При добавлении команды соблюдайте синтаксис JSON!

    Команду нужно добавлять не просто в конец файла, а с соблюдением стандартного синтаксиса формата JSON:
    • Секция scripts не должна дублироваться. Если она уже есть в файле, добавьте команду start туда.
    • В конце предыдущей строки на том же уровне вложенности должна быть запятая.
    • Порядок вложенности скобок должен быть корректным.
  6. Нажмите «Перезапустить» в настройках Node.js.
  7. Откройте сайт в браузере. Если всё в порядке, вы увидите текст «Hello from Express!».
Содержание