Как установить Node.js + npm на хостинг?
Node.js представляет среду выполнения кода на JavaScript, которая построена на основе движка JavaScript Chrome V8, который позволяет транслировать вызовы на языке JavaScript в машинный код. Node.js прежде всего предназначен для создания серверных приложений на языке JavaScript.
NPM, сокращенно от Node Package Manager — это стандартный менеджер пакетов для Node.js и крупнейший в мире репозиторий программного обеспечения для публикации с открытым исходным кодом Node.js пакетов.
Для установки Node.js и npm необходимо подключиться по SSH к серверу хостинга.
Инструкции по подключению Вы можете найти в разделе [РАБОТА С SSH].
Установка Node.js на хостинг возможна через NVM (Node Version Manager).
1. После подключения на сервер, прямо в начальной директории Вашего хостинг-аккаунта, выполните следующую команду для установки NVM :
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
Скрипт скопирует NVM репозитарий с Github в «$HOME/.nvm» и добавит путь к скрипту в локальный Bash профиль хостинг аккаунта.
Вывод предыдущей команды сообщит, что нужно или переподключиться по SSH или запустить
команды, которые добавят путь к NVM в текущую сессию.
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # Эта команда загрузит nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # Эта загрузит nvm bash_completion
Что бы проверить корректность устновки NVM и установленную версию, введите команду
nvm --version
Вывод должен быть такого вида:
0.35.3
2. Теперь, когда NVM установлен, можно установить последню доступную версию Node.js. Для этого нужно ввести команду:
nvm install node
Корректность установки и версию Node.js можно проверить командой:
node --version
Пример вывода команды:
v15.5.1
3. Для установки npm используйте команду:
curl https://npmjs.org/install.sh | bash
Проверить корректность установки и узнать версию менеджера пакетов можно командой:
npm --version
Создание проекта начинается с иницализации командой:
npm init
Все категории вопросов
- Общие вопросы по услуге хостинга
- Робота с хостинг 2.0
- Работа с базами данных [MySQL]
- Работа с файловым менеджером
- Работа с FTP
- Работа с SSH
- Работа с почтой
- Работа с Cron
- Работа с SSL
- Работа с резервным копированием
- Работа с htaccess
- Работа с CMS
- Дополнительные услуги
- Нагрузка
- Ошибки на сайте
- Конструктор сайтов
- Регистрация и продление доменов
- Управление DNS-записями домена
- Трансфер домена
- Смена контактных данных владельца домена
- Настройка CloudFlare
- Общие вопросы по серверам
- Администрирование виртуального сервера (VPS)
- Администрирование выделенного сервера (DS)
- Инструкции по Windows Server
- Инструкции по Linux
- Панель управления FASTPANEL
- Панель управления Hestia CP
- Панель управления Vesta CP
- Платный SSL-сертификат
- Файловое хранилище
- SMS-сервис
- CallBack-сервис
Настройка 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
Обратите внимание!
Загружать нужно 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.
Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел «Помощь и поддержка».
Использование Node.js и npm
Вы можете использовать Node.js на виртуальном хостинге в качестве консольной утилиты, но запуск в виде системной службы или веб-сервера будет невозможен из-за ограничений. Чтобы разместить Node.js-службу, подойдут наши виртуальные серверы .
- Установка nvm
- Установка Node.js и npm
Установка nvm
Чтобы установить Node.js на хостинг, вы можете воспользоваться утилитой nvm . Последнюю версию можно установить на аккаунт командой:
touch ~/.bash_profile
curl -Ls https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
Утилита будет установлена в домашнюю директорию .nvm , куда также в дальнейшем будет установлен Node.js.
После выполнения команды в файл .bash_profile будут добавлены команды для активации nvm. Чтобы они вступили в силу, необходимо перезапустить SSH-сессию или выполнить команду:
source .bash_profile
Теперь вы можете устанавливать любые версии Node.js и переключаться между ними.
Установка Node.js и npm
Рекомендуемая команда для установки:
nvm install --lts=gallium
С помощью неё устанавливается последняя стабильная версия на момент написания статьи — v16 Gallium . Вы также можете устанавливать любые другие версии, например:
nvm install 16.16.0
Справка по утилите nvm доступна в репозитории Github .
Серверы виртуального хостинга работают на операционной системе Ubuntu 18.04, которая не поддерживает Node.js v18. Пока серверы не обновлены до более новой версии Ubuntu, устанавливать Node.js выше v16 не рекомендуется. Уточнить наличие серверов с более новой версией Ubuntu можно у технической поддержки.
Если вы установили несколько версий, то посмотреть их список можно командой:
$ nvm ls
v14.20.0
v16.15.0
-> v16.16.0
Чтобы затем переключиться на другую версию, используйте команду:
nvm use v14.20.0
Пакетный менеджер npm будет доступен после установки одной из версий. Чтобы его обновить, используйте команду:
npm update npm -g
Установка и настройка Node.js
Если вы используете Node.js как средство серверной разработки для своего сайта или web-приложения, то эта статья для вас, поскольку в ней мы рассмотрим настройку данной программной платформы и правильную организацию структуры папок для корректного функционирования вашего проекта.
Для начала вам необходимо установить Node.js на свой аккаунт. Скачать любую версию Node.js можно с официального репозитория https://nodejs.org/dist/. На момент написания данного руководства, последним релизом являлась версия v10.6.0, скачать её можно здесь.
Выбирать нужно версию для Linux, битность x64, архиватор GZIP. Скачиваем файл https://nodejs.org/dist/v10.6.0/node-v10.6.0-linux-x64.tar.gz
Для нужной версии вы сможете также установить и необходимые модули (см. ниже).
На хостинге функционирование Node.js реализовано через специальную библиотеку Passenger, которая осуществляет взаимодействие Вашего сайта с обработчиком Node.js
Рассмотрим структуру папок и файлов. Мы предлагаем реализовать ее примерно следующим образом:
- site-name.com (корневая папка вашего сайта)
- htdocs
- www
- nodejs_app
- www
- nodejs_tmp
- www
Ваша цель — создать идентичную структуру и разместить файлы в соответствующих схеме директориях. Далее мы наполним их содержимым.
Установка Node.js
Чтобы сразу начать пользоваться необходимой вам версией Node (при условии, что Вы уже получили доступ по SSH), можете ввести следующие команды в терминале для загрузки и распаковки архива с файлами:
Работа с .htaccess файлом
Чтобы Passenger мог взаимодействовать с Node.js, в файле .htaccess (мы рекомендуем располагать его здесь ./site-name.com/htdocs/www/.htaccess) необходимо прописать следующее:
PassengerAppRoot /home/hostXXXXXXX/site-name.com/nodejs_app/www PassengerAppType node PassengerStartupFile app.js PassengerNodejs /home/hostXXXXXXX/node/bin/node PassengerRestartDir /home/hostXXXXXXX/site-name.com/nodejs_tmp/www PassengerFriendlyErrorPages on
- Вместо hostXXXXXXX вы прописываете номер своего аккаунта
- site-name.com — это имя папки с вашим проектом
- app.js — название файла, который запускает работу серверной части (вы можете назвать его как захотите, главное, пропишите соответствующее имя в .htaccess)
- PassengerNodejs — путь до исполняемого файла Node.js
- PassengerFriendlyErrorPages — опция для отображения ошибок, в случае, когда приложение работает не корректно, или не запускается (по умолчанию — PassengerFriendlyErrorPages off). Данная опция выводит сообщения об ошибке, некоторые предложения по решению проблемы, трассировку и дамп переменных среды выполнения. Рекомендуется включать эту опцию только на этапе разработки. После её окончания удалите или закомментируйте в .htaccess эту опцию.
Включение лога ошибок
При разработке любого сайта или приложения разработчики допускают ошибки. По умолчанию, они записываются в папку logs, которая находится в корне сайта. Также, убедитесь, что у вас включена данная опция в панели управления. Во вкладке «Домены»→«Прикрепление домена», рядом с надписью «Лог-файлы веб сервера» есть переключатель, который включает/выключает данную опцию. После включения, логи начнут писаться в течение 5 минут (при обычной загруженности сервера).
Перезапуск приложения
Файлы restart.txt и always_restart.txt необходимы для того, чтобы при внесении вами каких-либо изменений в рабочие файлы (к примеру, app.js) Passenger, применяя правила записанные в .htaccess, мог перехватывать их и применять в работе сайта. Отличие заключается в том, что restart.txt сработает только один раз, а always_restart.txt перезапускает процесы веб-сервера при каждом поступившем запросе. Рекомендуется использовать always_restart.txt только при разработке. После того, как разработка проекта будет завершена, не забудьте удалить этот файл, чтобы избежать задержек при отображении страницы посетителям.
Если Вы уверены в том, что ваш код работает без багов, но всё-равно видите ошибки на странице, можно принудительно завершить все процессы с помощью следующей команды через SSH-соединение:
killall -2 "Passenger NodeApp"
После чего перезагрузить страницу.
Код для app.js
И напоследок, осталось добавить скрипт для запуска Node в app.js. Ниже представлен код с официального сайта Node.js (в дальнейшем вы можете изменять его по своему усмотрению, сейчас мы лишь хотим убедиться, что всё работает):
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => < res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); >); server.listen(port, hostname, () => < console.log(`Server running at http://$:$/`); >);
Итак, все настройки произведены. Откройте сайт в новой вкладке. Если выводится Hello world, то всё работает, как и ожидалось. В противном случае, ещё раз пройдите по вышеприведённому алгоритму действий. Возможно, вы что то упустили.
Пример подключения модуля
Чтобы установить какой-либо модуль в директорию с файлами приложения, при этом используя установленную версию Node.js, необходимо для начала прописать путь до исполняемого файла node в .bash_profile (он лежит в корне вашего аккаунта). После этого вы сможете обращаться к нему из любой директории вашего проекта.
Итак, откройте .bash_profile и допишите следующую строку:
PATH=$HOME/.local/bin:$HOME/bin:$HOME/site-name.com/node/bin:$PATH
Для примера, рассмотрим подключение модуля mysql для работы с базой данных (предварительно, создайте таблицу под любым названием и поместите туда несколько записей). Чтобы установить даный модуль, зайдите через SSH-соединение в директорию «nodejs_app/www» и введите в терминале команду:
npm init --force
Таким обазом создастся файл package.json с данными о вашем приложении. После этого наберите команду:
npm install mysql --save-dev
Вы увидите, что автоматически создастся новая директория «node_modules» и подгрузятся необходимые нам для работы файлы.
Также, рекомендуем загрузить 2 часто используемых модуля — fs (для работы с файлами) и util (для красивого вывода объектов в консоль)
npm install fs util --save-dev
Далее, открываем файл нашего приложения app.js и добавляем следующий код:
const fs = require('fs'); const util = require('util'); var log_file = fs.createWriteStream(__dirname + '/debug.log', ); var log_stdout = process.stdout; console.log = function(d) < log_file.write(util.format(d) + '\n'); log_stdout.write(util.format(d) + '\n'); >; const mysql = require('mysql'); const connection = mysql.createConnection(< host : 'localhost', user : 'hostXXXXXXX', password : 'your_password', database : 'your_database_name' >); connection.connect(); connection.query('SELECT * FROM my_table', function (error, results, fields) < if (error) throw error; results.forEach(function(obj) < console.log( util.inspect(obj) ); >); >); connection.end();
В коде выше мы, с помощью модуля fs, создаём новый файл debug.log, в который будем помещать вывод функции console.log
Далее, переопределяем саму функцию console.log, задействуя поток на запись.
Теперь, при помощи модуля mysql, подключаемся к своей БД и выбираем все записи из нужной нам таблицы, прописывая их в созданный нами файл.
Проверим, всё ли сработало: перезагрузите страницу своего сайта и откройте файл debug.log — вы должны увидеть вывод всех записей из таблицы.
Запуск приложений через crontab
Для запуска приложений Node.js через crontab создайте shell скрипт и определите в нём переменную окружения PATH исходя из ваших требований, или можно указать полный путь к бинарному файлу nodejs и скрипту. Простейший Shell скрипт для запуска nodejs приложения:
#!/usr/bin/env sh env PATH=/home/hostXXXXXXX/node-vXX.ZZ.YY/bin:/home/hostXXXXXXX/node-vXX.ZZ.YY/bin:$PATH node example.js
Или команда для запуска целиком:
/home/hostXXXXXX/nodejs/bin/node /home/hostXXXXXX/nodeproject/example.js
Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Помощь и поддержка».