Работа с 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.