Настройка Node.js

В статье будет рассмотрена настройка 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 другой версии

Обратите внимание!
На данный момент, на виртуальном хостинге, максимальная поддерживаемая версия - 17.9.1. NodeJS версии 18.0 и выше работать не будет.

Учитывайте эту информацию при выборе версии.

Установка Node.js производится в каталог .local Вашей учётной записи:

valkeru@oscar2:~ [0] $ mkdir -p .local
valkeru@oscar2:~ [0] $ cd .local

Загрузить Node.js можно на сайте разработчиков.

Обратите внимание!
Загружать нужно 64-разрядную версию, запуск исполняемых файлов для 32-битной архитектуры на наших серверах запрещён!

Загрузим дистрибутив и распакуем его:

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.js из окружения веб-сервера потребуется открыть общий доступ к каталогу ~/.local.
Инструкция по предоставлению общего доступа приведена в этой статье.

Создание каталога проекта

Теперь нужно перейти в каталог сайта, в рассматриваемом примере имя каталога - 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.

Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".

Теги:

135
60191