2.23.13. Node.js
Только для бизнес-хостинга
Node.js доступен только на бизнес-хостинге и входит в стоимость тарифа. При смене тарифа на обычный сайты на Node.js перестанут работать.Схема работы Node.js на хостинге
- Либо путь к сокету (берётся со страницы настроек Node.js).
- Либо путь из переменной окружения
process.env.PORT
(содержит путь к сокету).
- Запрос поступает на общий сервер через порт 80 или 443.
- На основе имени хоста перенаправляется на сокет нужного сайта.
- Приложение получает данные через сокет, обрабатывает их и возвращает ответ.
Порядок запуска приложения
- Откройте настройки сайта.
- Разместить файлы приложения в корневом каталоге сайта — загрузите файлы готового проекта или установите с помощью npm.
- Добавьте скрипт с командой
start
вpackage.json
- Нажмите «Перезапустить» в настройках Node.js.
Общая информация
npm
Внимание!
- 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
package.json
— файл конфигурации и управления пакетами npm.
Параметры:
name
(обязательный) — название приложения маленькими латинскими буквами без пробелов, для разделения слов можно использовать символы-
и_
.description
— описание приложения.dependencies
— секция с информацией о всех пакетах, используемых приложением.
Команда npm init
— создаёт файл с нуля. Перед созданием запрашиваются все необходимые данные. В конце нужно ознакомиться с содержимым будущего файла и если всё в порядке, ввести yes
. Примечание Можно на все вопросы просто нажимать Enter, тогда будет создан файл со стандартным содержимым.
Настройки Node.js
Статус приложения
- «Статус приложения» — текущий статус работы сервиса Node.js:
- «Запущено» — сервис запущен и работает.
- «Остановлено» — не запущен (например, из-за отсутствия
package.json
) или остановлен из-за возникшей ошибки.
- «Команда для запуска» — наличие скрипта с командой
start
в файлеpackage.json
:- «Присутствует» — найден.
- «Отсутствует» — не найден.
- «Принудительный перезапуск» — перезапуск сервиса. Внимание! Нужно нажимать после любых изменений файлов.
- «Принудительная остановка» — остановка сервиса. Кнопка отображается только при запущенном приложении.
Основные настройки
- Путь к сокету.
- Имя переменной окружения, содержащей путь к сокету. Примечание Принудительно передаётся в каждое приложение при его запуске.
- Пример кода, который должен быть в приложении, для прослушивания трафика сайта.
Запуск приложения
Блок «Запуск приложения» — содержит команду, которую нужно добавить в package.json
для запуска приложения (./index.js
в команде — путь к главному файлу приложения, название файла может быть любым):
Ваш package.json
Блок «Ваш package.json» — показывает текущее содержимое файла package.json
из корневого каталога сайта (обновляется при открытии или перезагрузке страницы настроек):
При обнаружении в файле синтаксических ошибок в блоке будет выводится уведомление «Файл содержит ошибки». Наличие уведомления об ошибке при запущенном приложении означает, что приложение было запущено до появления ошибки в файле.
Логи приложения
Блок «Логи приложения» — вывод логов приложения в реальном времени. Включает информацию, которую приложение в процессе работы выводит в консоль.
Примеры приложений
Hello, World!
- Создайте в корневом каталоге сайта два файла:
- Файл конфигурации
package.json
:{ "name": "node", "version": "1.0.0", "scripts": { "start": "node ./index.js" } }
- Файл приложения
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.`); });
- Нажмите «Перезапустить» в настройках Node.js.
- Откройте сайт в браузере. Если всё в порядке, вы увидите текст «Hello, World!».
С использованием npm и фреймворка express
- Подключитесь к хостингу по SSH.
- Перейдите в корневой каталог сайта командой вида:
cd example.com/www
Где
example.com
— название сайта,www
— его поддомен. - Инициализируйте npm и установите фреймворк express командой:
npm init && npm i express
- Создайте в корневом каталоге сайта файл приложения
index.js
:const express = require("express"); const app = express(); app.get("/", function(request, response){ response.end("Hello from Express!"); }); app.listen(process.env.PORT);
- Отредактируйте файл
package.json
и добавьте в него команду запуска вида:"scripts": { "start": "node ./index.js" }
При добавлении команды соблюдайте синтаксис JSON!
Команду нужно добавлять не просто в конец файла, а с соблюдением стандартного синтаксиса формата JSON:- Секция
scripts
не должна дублироваться. Если она уже есть в файле, добавьте командуstart
туда. - В конце предыдущей строки на том же уровне вложенности должна быть запятая.
- Порядок вложенности скобок должен быть корректным.
- Нажмите «Перезапустить» в настройках Node.js.
- Откройте сайт в браузере. Если всё в порядке, вы увидите текст «Hello from Express!».