В статье будет рассмотрена настройка Node.JS.
Если у вас еще нет доменного имени, его можно добавить или зарегистрировать в разделе Домены.
После того, как сайт создан и к нему прикреплён домен, направленный на наши NS сервера, можно приступать к настройке.
Сначала необходимо подключится к аккаунту по протоколу SSH.
Подключение к аккаунту
Если Вы пользуетесь OS Windows, то, скорее всего, Вам подойдет SSH-клиент PuTTy (статью по настройке можно прочитать здесь). Когда настроите, можно переходить на шаг 2.
Если Вы пользуетесь OS Linux или OS X, подойдет обычный терминал, который присутствует во всех Unix-подобных операционных системах. Подключиться можно следующей командой:
$ ssh username@username.beget.tech
Где username - логин, username.beget.tech - адрес сервера (посмотреть его можно в блоке Техническая информация на главной странице панели управления).
Также Вы можете воспользоваться терминалом в панели управления.
Переход в Docker
Далее нужно перейти в виртуальное окружении Docker. Запуск Node.js осуществляется только внутри Docker контейнера. Для этого, после подключения по SSH необходимо ввести команду:
ssh localhost -p 222
А также ввести свой пароль для подключения к SSH. В строке терминала будет отображено, что теперь мы находимся в Docker окружении:
(docker) valkeru@oscar2: [0]~
На хостинге уже установлены Node.js и npm.
(docker) valkeru@oscar2:~ [0] $ node -v
v8.12.0
(docker) valkeru@oscar2:~ [0] $ npm -v
6.4.1
Установка Node.js другой версии
Учитывайте эту информацию при выборе версии.
Установка Node.js производится в каталог .local Вашей учётной записи:
valkeru@oscar2:~ [0] $ mkdir -p .local
valkeru@oscar2:~ [0] $ cd .local
Загрузить Node.js можно на сайте разработчиков.
Загрузим дистрибутив и распакуем его:
valkeru@oscar2:~/.local [0] $ wget https://nodejs.org/dist/v12.16.2/node-v12.16.2-linux-x64.tar.xz
--2019-06-26 02:46:01-- https://nodejs.org/dist/v12.16.2/node-v12.16.2-linux-x64.tar.xz
Resolving nodejs.org... 104.20.23.46, 104.20.22.46, 2400:cb00:2048:1::6814:172e, ...
Connecting to nodejs.org|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11314172 (11M) [application/x-xz]
Saving to: ‘node-v8.1.2-linux-x64.tar.xz’
node-v12.16.2-linux-x64.tar.xz 100%[==========================>] 10,79M 7,18MB/s in 1,5s
2019-06-26 02:46:04 (7,18 MB/s) - ‘node-v12.16.2-linux-x64.tar.xz’ saved [11314172/11314172]
valkeru@oscar2:~/.local [0] $ tar xJf node-v12.16.2-linux-x64.tar.xz --strip 1
valkeru@oscar2:~/.local [0] $
Удалите загруженный дистрибутив:
valkeru@oscar2:~/.local [0] $ rm node-v12.16.2-linux-x64.tar.xz
valkeru@oscar2:~/.local [0] $
Инструкция по предоставлению общего доступа приведена в этой статье.
Создание каталога проекта
Теперь нужно перейти в каталог сайта, в рассматриваемом примере имя каталога - node:
valkeru@oscar2:~ [0] $ cd ~/node
Необходимо создать каталог для проекта и вложенный в него каталог tmp, в рассматриваемом примере имя каталога - HelloWorld:
valkeru@oscar2:~/node [0] $ mkdir -p HelloWorld/tmp
valkeru@oscar2:~/node [0] $
Для корректной отдачи статического контента средствами Nginx создается ссылка public, указывающая на public_html:
valkeru@oscar2:~/node [0] $ ln -s public_html public
С помощью любого текстового редактора (например, nano или vim) необходимо создать файл app.js в каталоге проекта HelloWorld со следующим содержимым:
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World!');
});
server.listen(3000);
Далее, если вы находитесь в каталоге проекта HelloWorld, необходимо вернутся в каталог node
valkeru@oscar2:~/node/HelloWorld [0] $ cd ..
Создание .htaccess
Затем нужно создать файл .htaccess. В общем виде его содержимое выглядит следующим образом:
PassengerNodejs /home/первая буква логина/логин/.local/bin/node
PassengerAppRoot /home/первая буква логина/логин/папка сайта/название_проекта
PassengerAppType node
PassengerStartupFile app.js
Если вы установили новую версию NodeJS, то .htaccess будет следующим:
PassengerNodejs /home/v/valkeru/.local/bin/node
PassengerAppRoot /home/v/valkeru/node/HelloWorld
PassengerAppType node
PassengerStartupFile app.js
Если вы решили воспользоваться предустановленным NodeJS, то .htaccess будет следующим:
PassengerNodejs /usr/local/bin/node
PassengerAppRoot /home/v/valkeru/node/HelloWorld
PassengerAppType node
PassengerStartupFile app.js
Для того, чтобы Passenger перечитал конфиг, необходимо создать файл tmp/restart.txt. Cделать это нужно в директории, указанной в качестве PassengerAppRoot в файле .htaccess ранее.
valkeru@oscar2:~/node/HelloWorld [0] $ touch tmp/restart.txt
valkeru@oscar2:~/node/HelloWorld [0] $
Для проверки работоспособности откройте сайт в браузере:

Также для проверки работоспособности можно выполнить следующую команду:
valkeru@oscar2:~/node [0] $ ps aux | grep Passenger
659085 4148 0.1 0.0 878828 29796 ? Sl 02:55 0:00 Passenger NodeApp: /home/v/valkeru/node/HelloWorld
valkeru 7365 0.0 0.0 7496 2144 pts/19 SN+ 02:56 0:00 grep Passenger
В листинге процессов присутствует модуль Apache Passenger.
Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".