База знаний

Инструкции и ответы на вопросы о хостинге, работе сайтов и приложений

Node.js

Работа с Node.js-приложениями на нашей площадке реализована через специальный модуль Phusion Passenger для Apache.

Чтобы ваш проект на Node.js открывался из браузера, в разделе «Сайты» → «Веб-серверы» Панели управления выберите подходящую версию из доступных:

  • Node.js 14
  • Node.js 12
  • Node.js 10
  • Node.js 8
  • Node.js 6

Потребуется также добавить вспомогательные директивы в файл .htaccess.

Чтобы перезапустить процессы модуля Passenger, создайте в директории проекта — она задается в директиве PassengerAppRoot файла .htaccess — директорию tmp, а в ней — пустой файл restart.txt.

[login@server public_html]$ touch tmp/restart.txt

Если же над приложением ведется активная работа, создайте файл always_restart.txt чтобы процессы веб-сервера перезапускались при каждом поступившем запросе.

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

А чтобы подключить проект к базе данных, укажите в его конфигурационном файле путь к сокету:

socketPath: '/tmp/mysql.sock',

Для работы с Node.js в целом нужен доступ к аккаунту по SSH.

Возьмите для примера работы с Node.js нашу инструкцию по установке фреймворка Express.js.

В консоли

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

node14
node12
node10
node8
node6

Тот же принцип применяется и для менеджера пакетов npm:

npm14 — для Node.js 14
npm12 — для Node.js 12
npm10 — для Node.js 10
npm8 — для Node.js 8
npm6 — для Node.js 6

При вводе интерпретатора node или npm без указания версий, используются последние: 

[login@server ~]$ node -v
 v14.16.0

[login@server ~]$ npm -v
 6.14.11

Полный путь до интерпретатора и пакетного менеджера:

/usr/local/bin/node

/usr/local/bin/npm

Установка модулей

Большинство модулей Node.js могут быть установлены локально в директории определенного сайта, однако некоторые — только глобально (ключ -g).

Так как на виртуальном хостинге установка модулей в системе могла бы повлиять на все аккаунты сервера, для использования таких модулей необходимо выполнить ряд манипуляций перед установкой.

Создайте директорию:

[login@server ~]$ mkdir /home/login/.npm-global

где вместо login введите логин вашего аккаунта.

Укажите менеджеру пакетов, что эту директорию необходимо использовать для глобальной установки: 

[login@server ~]$ npm config set prefix '~/.npm-global'

Отредактируйте файл ~/.bash_profile, добавив в него строку:

export PATH=~/.npm-global/bin:$PATH

Примените изменения командой:

[login@server ~]$ source ~/.bash_profile

Теперь можно выполнять установку модулей, для которых параметр -g является обязательным. Установка будет производиться в директорию /home/login/.npm-global.

WebSocket

Модуль Pasenger не позволяет использовать WebSocket, и если в вашем проекте они используются, их потребуется эмулировать средствами long polling. Для этого в файл .htaccess сайта дополнительно добавьте директиву PassengerStickySessions:

PassengerStickySessions on

Первый запрос с типом websocket будет обработан с кодом ответа 400, после чего библиотека socket.io переключится в режим polling.

Была ли эта инструкция полезной?