В статье будет рассмотрена настройка 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) username@server: [0]~На некоторых серверах хостинга по умолчанию установлены Node.js и npm старых версий:
(docker) username@server:~ [0] $ node -v
v8.12.0
(docker) username@server:~ [0] $ npm -v
6.4.1Однако на некоторых серверах они могут отсутствовать:
-bash: node: command not foundДля использования актуальных версий Node.js и npm потребуется установить их.
Установка актуальной версии Node.js из официальных источников
Проверить версию ОС на хостинге можно выполнив команду
cat /etc/os-release в Docker-окружении.Инструкция по установке NodeJS версии 18 и выше на Ubuntu 18.04 доступна в следующем разделе.
Установка Node.js производится в каталог .local вашей учетной записи, если данной директории в корне вашего аккаунта нет, ее потребуется создать командой mkdir:
mkdir -p .localПосле чего перейдем в каталог:
cd .localЗагрузим дистрибутив командой wget (в примере указана ссылка на архив с версией 17.9.1, если вам необходима другая версия, вы можете найти нужный вам архив по ссылке):
wget https://nodejs.org/dist/v17.9.1/node-v17.9.1-linux-x64.tar.xz--2023-08-03 20:28:33-- https://nodejs.org/dist/v17.9.1/node-v17.9.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.22.46, 104.20.23.46, 2606:4700:10::6814:172e, ...
Connecting to nodejs.org (nodejs.org)|104.20.22.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22672072 (22M) [application/x-xz]
Saving to: ‘node-v17.9.1-linux-x64.tar.xz’
node-v17.9.1-linux-x64.tar.xz 100%[======================================================================================>] 21.62M 9.73MB/s in 2.2s
2023-08-03 20:28:36 (9.73 MB/s) - ‘node-v17.9.1-linux-x64.tar.xz’ saved [22672072/22672072]После того как архив успешно загрузился, распакуем его:
tar -xJf node-v17.9.1-linux-x64.tar.xz --strip 1--strip 1 в данном случае необходим для распаковки архива непосредственно в директорию .local. Если вы не планируете использовать несколько различных версий Node.js, рекомендуем использовать его при установке, в противном случае архив распакуется в директорию вида node-v17.9.1-linux-x64.Проверим работу node и npm:
node -v && npm -vПример корректного результата:
(docker) username@server:~ [0] $ node -v && npm -v
v17.9.1
8.11.0Если после запуска команды отображается версия Node, соответствующая загруженному архиву, установка выполнена успешно и ошибок при вызове не возникает, можем удалить архив дистрибутива (если вы устанавливали версию, отличную от 17.9.1, укажите соответствующее название файла в команде)
rm node-v17.9.1-linux-x64.tar.xz~/.local.Инструкция по предоставлению общего доступа приведена в этой статье.
Установка Node.js версии 18.x и выше
В связи с особенностями окружения виртуального хостинга, официальные исполняемые файлы Node.js версий 18.x и выше не могут быть запущены на всех серверах хостинга. Для решения данной проблемы нами были собраны исполняемые файлы для некоторых версий из исходного кода с nodejs.org, совместимые с окружением хостинга.
Для установки на данный момент доступны следующие версии:
18.17.0- https://cp.beget.com/shared/nZ-Grt-wdN-TpDRnWM0Fg3XkTf_NScI2/node-v18.17.0-bionic.tar.xz18.18.2- https://cp.beget.com/shared/emJm-JWhtkILld_1KrNyU34ym75SfM--/node-v18.18.2-bionic.tar.xz18.19.0- http://cp.beget.com/shared/ikj6tguPH4FTb40HxqX2ZZ-XNWbvCohj/node-v18.19.0-bionic.tar.xz19.9.0- https://cp.beget.com/shared/wHV_h4FJaIvwzqchZJuyRPalU58o5xmP/node-v19.9.0-bionic.tar.xz20.5.0- https://cp.beget.com/shared/H1crojipLBTHZbxHTvYA-ro_JXppCrB-/node-v20.5.0-bionic.tar.xz20.9.0- https://cp.beget.com/shared/kdEvvyndUCBRspzTKAhKD_X97gxk-6Oi/node-v20.9.0-bionic.tar.xz20.11.0- https://cp.beget.com/shared/ON0kacA35gnJJ5FbZa3WvdY6-wtaR4Kl/node-v20.11.0-bionic.tar.xz20.18.0- https://cp.beget.com/shared/mTuC2AhpJ7TjGCEEwczf0y2fzWXGqxZv/node-v20.18.0-bionic.tar.xz21.2.0- https://cp.beget.com/shared/nD5s5AJxHlEVoLuZU5eshEpHjg2I8obo/node-v21.2.0-bionic.tar.xz21.5.0- http://cp.beget.com/shared/xmndW61z9PdrEzEzuf49T2X50I86ek3S/node-v21.5.0-bionic.tar.xz
Сам процесс установки не отличается от установки из официального источника. Находясь в корне аккаунта, создадим каталог .local, если его еще нет:
mkdir -p .localИ перейдем в него:
cd .localЗагрузим архив с дистрибутивом, используя одну из указанных выше ссылок (в данном примере рассматривается установка версии 20.5.0):
wget "https://cp.beget.com/shared/H1crojipLBTHZbxHTvYA-ro_JXppCrB-/node-v20.5.0-bionic.tar.xz"Распакуем архив в директорию .local:
tar -xJf node-v20.5.0-bionic.tar.xz --strip 1--strip 1 в данном случае необходим для распаковки архива непосредственно в директорию .local. Если вы не планируете использовать несколько различных версий Node.js, рекомендуем использовать его при установке, в противном случае архив распакуется в директорию вида node-v20.5.0-bionic.Проверим работу node и npm:
node -v && npm -vПример корректного результата выполнения команд:
(docker) username@server:~ [0] $ node -v && npm -v
v20.5.0
9.8.0Если после запуска команды отображается версия Node, соответствующая загруженному архиву, и ошибок при вызове не возникает, установка выполнена успешно, можем удалить архив дистрибутива (если вы устанавливали версию, отличную от 20.5.0, укажите соответствующее название файла в команде):
rm node-v20.5.0-bionic.tar.xzРазворачивание Node-приложения на Nuxt.js на виртуальном хостинге
На виртуальном хостинге Node-приложения запускаются с помощью Apache mod_passenger. Сам процесс может отличаться в зависимости от используемого фреймворка и структуры вашего проекта, однако в общих чертах сводится к следующим этапам:
- Создание каталога проекта и размещение файлов проекта.
- Установка и управление зависимостями Node.js.
- Сборка проекта.
- Создание символьных ссылок при необходимости.
- Создание файла
.htaccessдля конфигурации и запуска проекта с помощьюmod_passenger. - Создание директории
tmp, содержащей файлrestart.txtв директории, указанной какPassengerAppRootв.htaccessранее.
В качестве примера развертывания Node.js-приложений развернем тестовое приложение на Nuxt.js: https://cp.beget.com/shared/iNr4Y-5aHYwChmWXiXu9_n2_NCAEbyU5/nuxt-example-beget.tar.gz
- Если сайт под проект еще не создан в разделе “Сайты”, создайте его.
- Перейдите в каталог проекта.
cd nuxt_node_app- Загрузите архив с файлами проекта в директорию и распакуйте его.
wget https://cp.beget.com/shared/iNr4Y-5aHYwChmWXiXu9_n2_NCAEbyU5/nuxt-example-beget.tar.gz
tar xfv nuxt-example-beget.tar.gz- Создайте файл
.htaccess, в котором задаем конфигурацию Node.js-проекта, выполнив следующие команды:
echo "PassengerNodejs $(which node)" >> .htaccess
echo "PassengerAppRoot $(realpath nuxt-example-beget)" >> .htaccess
echo "PassengerAppType node" >> .htaccess
echo "PassengerStartupFile server.js" >> .htaccessВ результате содержимое файла должно иметь следующий вид:
PassengerNodejs /home/u/username/.local/bin/node
PassengerAppRoot /home/u/username/nuxt_node_app/nuxt-example-beget
PassengerAppType node
PassengerStartupFile server.jsPassengerNodejs– путь до исполняемого файла Node.js, узнать путь можно, выполнив команду which node.PassengerAppRoot– путь до директории проекта.PassengerAppType– тип приложения, в данном случае node.PassengerStartupFile– точка входа в приложение, будет отличаться в зависимости от структуры проекта и используемого фреймворка.
- Удалите директорию
public_htmlи создайте символьную ссылку на директорию со статическими файлами для того, чтобы они отдавались средствами Nginx:
rm -rf public_html
ln -s nuxt-example-beget/public public_htmlpublic_html и добавить в директорию проекта ссылки на нее. Убедитесь, что конечная директория не имеет FTP-аккаунтов, прикрепленных к ней, в противном случае может возникнуть ошибка доступа к статическому контенту.- Перейдите в директорию проекта, установите зависимости и соберите проект:
cd nuxt-example-beget
npm install
npm run build- Создайте в директории проекта директорию tmp и файл restart.txt в ней:
mkdir tmp
touch tmp/restart.txtПроверьте результат, открыв сайт в браузере:

Надеемся, наша инструкция с пошаговой настройкой Node.js была вам полезна.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.