Как установить 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 на Linux-сервере
Узнать последнюю актуальную версию Node.JS можно на официальном сайте:

Установка Node.JS из репозиториев операционной системы
При установке из стандартного репозитория вы получите неактуальную версию — ту, которая была доступна на момент выпуска вашей операционной системы. Для разработки или подготовки сервера под боевой проект этот способ установки не подойдёт. Но для обучения или экспериментов с кодом использовать можно.
Чтобы проверить доступную для установки версию, используйте команду:
apt show nodejs

Centos:
yum info nodejs
Установка выполняется за один шаг:
apt install -y nodejs npm
yum install -y nodejs
Чтобы убедиться, что установка прошла корректно, проверьте версию Node.JS и пакетного менеджера npm :
nodejs -v npm -v
node -v npm -v

Установка Node.JS из репозиториев NodeSource
При этом способе установки можно установить актуальную версию Node.JS. Список поддерживаемых операционных систем можно увидеть здесь.
Для установки потребуется curl . Во многих современных дистрибутивах Linux-систем он установлен по умолчанию. При необходимости можно выполнить ручную установку:
apt install -y curl
yum install -y curl
Для примера выполним установку последней стабильной версии Node.JS. Для этого нужно выполнить команды:
curl -sL https://deb.nodesource.com/setup_12.x | bash - apt install -y nodejs
curl -sL https://rpm.nodesource.com/setup_12.x | bash - yum install -y nodejs
Чтобы убедиться, что установка прошла корректно, проверим версию Node.JS и пакетного менеджера npm :
nodejs -v npm -v
node -v npm -v

Установка Node.JS с помощью менеджера версий nvm
Node Version Manager, или nvm , позволяет устанавливать любые версии Node.JS и при необходимости переключаться между ними. Инструкция по установке последней версии nvm доступна в описании официального Github-репозитория.
Для примера установим текущую актуальную версию nvm . Для этого, как в предыдущем случае, нам понадобится curl . С его помощью мы скачаем и запустим скрипт установки:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash
Скрипт установит nvm в домашнюю папку текущего пользователя (в примере это пользователь root и его папка /root ) и добавит алиас для вызова менеджера в конфигурационный файл пользователя. Чтобы обновить терминал с учётом этих изменений, введите команду:
source ~/.bashrc
После этого проверим версию nvm , чтобы убедиться, что установка выполнена корректно:
nvm -v

Теперь мы можем использовать весь функционал nvm .
Просмотреть полный список доступных к установке версий Node.JS можно с помощью команды:
nvm ls-remote
Установить самую последнюю версию Node.JS можно следующим образом:
nvm install node
node в примере — это алиас к последней актуальной версии.
Установить конкретную версию из списка доступных можно так:
nvm install v12.19.0
где v12.19.0 — номер необходимой версии Node.JS, который можно скопировать в выводе команды nvm ls-remote .
После установки проверьте, что Node.JS установлен корректно, с помощью команды:
node -v
Для проверки списка уже установленных версий Node.JS введите в терминале:
nvm ls

Между установленными версиями можно переключаться. Например, в примере с помощью nvm у нас используется версия v12.19.0 . Помимо неё мы можем переключиться на ранее установленную системную версию (которую можно установить одним из предыдущих способов установки Node.JS) или любую другую:
nvm use system

Удалить установленную с помощью nvm версию Node.JS можно в два шага:
-
Проверяем, какая версия Node.JS сейчас используется:
nvm current
nvm deactivate nvm uninstall v12.19.0
Если используется другая версия, удаление можно запустить сразу:
nvm uninstall v12.19.0
Как запустить Node.js на обычном хостинге

Вам нравится Node.js ? Хотите использовать Gulp 4 / Grunt / Webpack на обычном хостинге? Но как сделать это? Ведь на стандартных хостингах нет возможности самостоятельной установки программ. Т.е. Вы не можете запустить установку ни одной программы, даже из официальных репозиториев Linux. Есть выход — nvm (Node Version Manager) . С помощью данной утилиты Вы сможете установить и запустить Node.js, npm и любой сборщик, типа Gulp или Grunt на любом стандартном хостинге (даже тех, которые утверждают, что для запуска Node.js требуется покупка тарифа с выделенным сервером). Для установки nvm не требуются права администратора, нужна лишь стандартная оболочка bash и программа wget , а всё это входит в любой дистрибутив Linux, на любом хостинге.
Как установить Node.js, npm на обычном хостинге без прав администратора
Первым делом подключаемся через ssh к серверу . Для этого достаточно команды:
ssh логин@хост
Там где логин и хост ставьте логин, который Вы используете для FTP / SFTP , а хост Вы можете узнать у Вашего хостинг-провайдера. Всё это всегда даётся при регистрации хостинга, либо можно посмотреть в панели управления. Обращаю внимание, что хост для FTP и SFTP может отличаться .
Далее нужно понять, есть ли в домашней директории Вашего аккаунта права на создание файлов и папок . Это можно понять, попробовав создать любую папку в домашней директории аккаунта. Обращаю Ваше внимание, что домашняя директории аккаунта — это НЕ домашняя директория сайта. Домашняя директория аккаунта всегда располагается на один уровень выше и в ней нет никаких файлов и папок, относящихся к Вашему сайту. Так вот. Попробуйте создать там любой файл или папку. Для создания файла / папки Вы можете использовать в консоли команду:
cd ~ && touch test.txt && mkdir test
Если не будет никаких сообщений об ошибках, то всё ОК. Удалите тестовый каталог и файл командой:
rm -r test.txt test
Но если у Вас будет ошибка, значит создание файлов и папок в домашней директории аккаунта запрещено. Тогда ищем ту папку, в которой у нас есть возможность создавать файлы и папки. Обычно это папка с названием типа private и тому подобным. В данной папке хостинг провайдер разрешает хранить Вам бекапы, логи и любую другую информацию. Сделаем эту директорию домашней, чтобы корректно выполнялись все команды nvm и Node.js. Первым делом давайте запишем себе текущий путь данной директории (это пригодится нам в дальнейшем). Для этого, находясь в директории, где у Вас есть права на создание файлов и папок, выполним команду:
и запишем себе куда-нибудь тот путь, который нам показала консоль.
Затем в домашней директории аккаунта ищем файл .bashrc . Этот файл отвечает за выполнении пользовательских команд во время работы командной оболочки. Чтобы увидеть список файлов, которые есть, выполните команду:
cd ~ && ls -la
Если данного файла там нет, создаём его и сразу запускаем его редактирование связкой команд:
touch .bashrc && nano .bashrc
Запускается текстовый редактор nano и мы можем вносить туда данные. А именно, нам нужно переопределить системную переменную HOME . На работу Вашего сайта это никак не повлияет, это лишь задаст системную домашнюю директории Вашего аккаунта. Нам необходимо вписать следующее:
HOME=полный_путь_на_новую_домашнюю_директорию (мы записывали этот путь себе ранее)
Сохраняем файл. Для этого сначала нажимаем Ctrl+X , затем Y , затем Enter .
Затем ищем файл .bash_profile (он обязательно будет в домашней директории) и открываем его на редактирование командой:
nano .bash_profile
Вписываем туда строки:
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
Теперь нам нужно закрыть терминал, открыть его заново и снова подключиться к серверу через SSH. Это необходимо для того, чтобы новые настройки вступили в силу при новом подключении к серверу.
После подключения выполняем:
cd ~ && pwd
Если мы всё сделали правильно — мы должны увидеть путь на нашу директорию, в которой мы имеем право создавать файлы и папки.
Теперь нам осталось скачать и запустить nvm (Node Version Manager) :
wget -qO- https://cdn.rawgit.com/creationix/nvm/master/install.sh | bash
После завершения скачивания и установки nvm перезапускаем терминал, заново подключаемся по SSH.
Затем открываем на редактирование файл .bashrc (как это сделать я писал ранее), и вписываем туда две строки:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Перезапускаем терминал, заново подключаемся по SSH.
Затем устанавливаем Node.js и пакетный менеджер npm:
cd ~ && nvm install stable
После выполнения данной команды у нас установится последняя версия Node.js и npm.
После завершения установки проверим это. Выполним команду:
node -v
В консоли появится номер актуальной версии Node.js
Теперь мы можем использовать Gulp 4 / Grunt / Webpack и все другие возможности Node. В том числе, мы можем настроить автоматическую сборку пакетов, автоматическую минификацию и сборку стилей, сжатие изображений при их загрузке и многое другое.
Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
W e b d e v e l o p m e n t b l o 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
Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Помощь и поддержка».
