Как установить Node.js в Ubuntu 20.04
Разбираем 4 способа установки Node.js на Ubuntu 20.04.
Вступление
Node.js — основанная на javascript-движке V8 от Google серверная среда выполнения javascript, ставшая в последние годы очень популярной. Первый ее выпуск датируется 2010 годом. За это время Node.js прошла путь от смелого эксперимента к одному из лидеров рынка, который поддерживается Microsoft, Google, IBM, linkedIn, NASA и многими другими.
- Причина популярности № 1 — простота в освоении, ведь это все тот же javascript с прикрученными сетевым и файловым модулями. На Node.js пишут огромные распределенные сервисы, крошечные локальные демоны для собственных нужд, системы сборки современного фронтенда зависимы от Node.js.
На Node.js основан Electron — фреймворк, который применяется в разработке десктопных приложений на javascript.
Все это делает javascript, на котором и базируется Node.js, универсальным языком. Конечно, как и у любого универсального решения, у него есть свои недостатки. Он однопоточный, хоть и асинхронный. У него относительно низкая производительность из-за особенностей архитектуры. «Числодробилки» на нем точно писать не стоит. Зато его конек — фронтенд (вне конкуренции по причине отсутствия конкуренции) и быстрое прототипирование сервисов для proof of concept — проверки концепции на жизнеспособность. Часто Node.js-микросервисы используются как прокси для других микросервисов.
- Причина популярности № 2 — огромное сообщество. Ода из производных огромного сообщества — https://npmjs.com — библиотека готовых модулей для использования в своих проектах. С большой вероятностью задача, которая перед вами стоит, уже решена полностью или частично в модулях из npm. Все опубликованные модули являются open source.
Управлять зависимостями очень легко с помощью npm. Для того, получить какой-то модуль в свой проект, можно просто сделать:
npm install packagename
А дальше подключить его в своем приложении. Npm входит в Node.js, так что, в большинстве случаев установка npm на наш Ubuntu не требуется.
Несмотря на то, что сборки Node.js есть под огромное число платформ, лучшим выбором будет установка Node.js на linux.
В этом руководстве мы расскажем как установить Node.js на сервер под управлением Ubuntu 20.04.
Перед установкой — подготовить сервер
Залогинимся в личном кабинете https://my.selectel.ru/login/, нажав на вкладку «Облачная платформа». Там вы сможете создать виртуальный сервер.
Необходимо выбрать зону размещения сервера исходя из его близости к пользователям. Пинг выше, если сервер дальше.
Нажмем «Создать сервер».
В разделе «Источник» убеждаемся, что выбран образ Ubuntu 20.04.
Конфигурацию можно настроить по своим потребностям.
В разделе «Сеть» стоит выбрать «Подсеть — Плавающий IP-адрес».
В разделе «Доступ» загрузите SSH-ключ и не забудьте сохранить root-пароль. Подробнее об этом рассказано в этой статье.
Теперь можно создать сервер кнопкой «Создать» в самом низу.
Будет отображена страница статуса сервера, надо дождаться индикации ACTIVE вверху справа.
Теперь на вкладке «Порты» можно посмотреть IP-адрес, присвоенный серверу.
Облачные серверы
Виртуальные машины с моментальным масштабированием и соответствием 152‑ФЗ.
Удаление старых версий
Если у вас уже был готовый сервер, то на нем, возможно, присутствуют старые версии. Их стоит удалить во избежание конфликтов, которые бывает крайне сложно отследить в дальнейшем. При создании сервера несколько минут назад, можно сразу начать установку, иначе надо проверить предыдущие инсталляции Node.js:
dpkg --get-selections | grep node
В ответ на команду могут появиться пакеты/пакет, их можно удалить:
sudo apt purge nodejs && sudo apt autoremove
Способ №1: NVM
Для управления установленной версией Node.js и внесения изменений необходима утилита NVM (Node Version Manager). Она будет приоритетна для работы на локальной машине разработчика, для dev-систем и тестирования новых фич в экспериментальных версиях. Возможность быстро сменить версию может очень пригодиться во всех этих вариантах. NVM на Ubuntu устанавливается без проблем. Приступим к установке.
Сперва зададим команду сбора списка пакетов из репозиториев:
sudo apt update
Некоторые версии Node.js нужно собирать, поэтому нужные для этого пакеты важно установить:
sudo apt install build-essential checkinstall libssl-dev
Если требуется установка или обновление NVM, команда должна выглядеть так:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | sudo bash
Убедитесь в актуальности устанавливаемых версий. Вся информация есть в официальном репозитории NVM.
Как только установка завершится, необходимо осуществить перезапуск сессии (переподключиться или перелогиниться), или задать команду:
. .bashrc
После всех исполненных команд нам стала доступна утилита nvm. Перед устанавкой Node.js нужно ознакомиться со списком доступных версий:
nvm ls-remote
Список большой, так как Node.js существует с 2010 года и какое-то время даже существовала двумя параллельными проектами, которые через какое-то время снова слились в один проект.
Для знакомства с серверной средой Node.js стоит выбрать LTS. Она будет отмечена в списке соответствующим комментарием.
v14.10.0
v14.10.1
v14.11.0
v14.12.0
v14.13.0
v14.13.1
v14.14.0
v14.15.0 (LTS: Fermium)
v14.15.1 (LTS: Fermium)
v14.15.2 (LTS: Fermium)
v14.15.3 (LTS: Fermium)
v14.15.4 (LTS: Fermium)
v14.15.5 (LTS: Fermium)
v14.16.0 (LTS: Fermium)
v14.16.1 (LTS: Fermium)
v14.17.0 (LTS: Fermium)
v14.17.1 (LTS: Fermium)
v14.17.2 (LTS: Fermium)
v14.17.3 (Latest LTS: Fermium)
v15.0.0
v15.0.1
v15.1.0
v15.2.0
Вы можете установить любую нужную вам версию, например, нам нужна 14.16.1.
nvm install 14.16.1
root@bria:~# nvm install 14.16.1
Downloading and installing node v14.16.1...
Downloading https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.xz...
################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.16.1 (npm v6.14.12)
Creating default alias: default -> 14.16.1 (-> v14.16.1)
Обратите внимание на строку Now using node v14.16.1 (npm v6.14.12) при установке, эта версия сразу становится активной.
root@bria:~# nvm install 14.16.1
Downloading and installing node v14.16.1...
Downloading https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.xz...
################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.16.1 (npm v6.14.12)
Creating default alias: default -> 14.16.1 (-> v14.16.1)
root@bria:~# node -v
v14.16.1
root@bria:~# npm -v
6.14.12
root@bria:~#
root@bria:~# nvm install 14.16.0
Downloading and installing node v14.16.0...
Downloading https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.xz...
################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.16.0 (npm v6.14.11)
root@bria:~# node -v
v14.16.0
root@bria:~# nvm install 16.1.0
Downloading and installing node v16.1.0...
Downloading https://nodejs.org/dist/v16.1.0/node-v16.1.0-linux-x64.tar.xz...
################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v16.1.0 (npm v7.11.2)
root@bria:~# node -v
v16.1.0
root@bria:~# nvm install 15.14.0
Downloading and installing node v15.14.0...
Downloading https://nodejs.org/dist/v15.14.0/node-v15.14.0-linux-x64.tar.xz...
################################################################################################################################################################################ 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v15.14.0 (npm v7.7.6)
root@bria:~# node -v
v15.14.0
Если вы захотите посмотреть версии, которые установили, это легко сделать с помощью команды:
nvm list
Вывод:
root@bria:~# nvm list
v14.16.0
v14.16.1
-> v15.14.0
v16.1.0
default -> 14.16.1 (-> v14.16.1)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.1.0) (default)
stable -> 16.1 (-> v16.1.0) (default)
lts/* -> lts/fermium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.3 (-> N/A)
lts/fermium -> v14.17.3 (-> N/A)
Активная версия подсвечена в самом начале указателем ->
Если вы хотите сделать активной какую-то другую версию, укажите команду:
nvm use 14.16.1
Проверяем, что у нас получилось:
node -v
npm -v
Вывод:
root@bria:~# nvm list
v14.16.0
v14.16.1
-> v15.14.0
v16.1.0
default -> 14.16.1 (-> v14.16.1)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.1.0) (default)
stable -> 16.1 (-> v16.1.0) (default)
lts/* -> lts/fermium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.3 (-> N/A)
lts/fermium -> v14.17.3 (-> N/A)
root@bria:~# nvm use 14.16.1
Now using node v14.16.1 (npm v6.14.12)
root@bria:~# node -v
v14.16.1
root@bria:~# npm -v
6.14.12
Перед удалением определенной версии надо сначала ее деактивировать:
nvm deactivate 14.16.1
А потом удалить командой:
nvm uninstall 14.16.1
В системе ее больше не видно.
root@bria:~# nvm deactivate 14.16.1
/root/.nvm/*/bin removed from ${PATH}
root@bria:~# nvm uninstall 14.16.1
Uninstalled node v14.16.1
root@bria:~# nvm list
v14.16.0
v15.14.0
v16.1.0
default -> 14.16.1 (-> N/A)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.1.0) (default)
stable -> 16.1 (-> v16.1.0) (default)
lts/* -> lts/fermium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.3 (-> N/A)
lts/fermium -> v14.17.3 (-> N/A)
root@bria:~# node -v
Command 'node' not found, but can be installed with:
apt install nodejs
Способ №2: репозитории Ubuntu
Самый простой способ установки Node.js на Ubuntu 20.04. Использовать в production не рекомендуется, но для знакомства, можно использовать.
Сначала обновляем список пакетов, доступных к установке:
sudo apt update
Теперь устанавливаем Node.js:
sudo apt install nodejs
Устанавливаем npm:
sudo apt install npm
Проверяем, что у нас получилось:
node -v
npm -v
Вывод:
root@bria:~# node -v
v10.19.0
root@bria:~# npm -v
6.14.4
Обратите внимание, что хоть способ установки и прост, версия очень старая. Для боевых целей вам этот вариант не подойдет. Он больше подходит для новичков, которые только начинают знакомиться с Node.js. Об актуальных версиях серверной среды от Google мы рассказали в способах установки NVM и из официального репозитория.
Способ №3: Установка из официального репозитория Node.js (PPA)
Для production-систем лучше использовать официальные репозитории Node.js, они есть для всех популярных linux-дистрибутивов. Репозиторий позволит буквально двумя командами обновиться до актуальной версии вместе со всей системой.
sudo apt update && sudo apt upgrade
В этой инструкции вы найдете специальный скрипт. Он поможет с добавлением репозитория в систему:
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
Следующий шаг — выполнение команды установки Node.js:
sudo apt install -y nodejs
В скрипте также указано, что для сборки некоторых пакетов npm, стоит установить gcc, g++ и make:
sudo apt-get install gcc g++ make
Проверяем:
node -v
npm -v
Вывод:
root@bria:~# node -v
v14.16.1
root@bria:~# npm -v
6.14.12
Способ №4: Установка из бинарных файлов
Этот способ довольно редкий, он применим для уникальных ситуаций. Например, в подготовке embedded, т.е. встроенной системы без доступа к ней снаружи для администрирования.
В остальных случаях — в этому способу стоит относиться с осторожностью во избежание проблем с обновлениями и управлением зависимостями.
Кроме того, такую установку очень сложно отменить, ее следы могут остаться в системе навсегда.
Сперва узнаем, какая архитектура у вашей системы:
arch
Вывод:
root@bria:~# arch
x86_64
На официальном сайте нужно выбрать версию и архив для архитектуры.
В нашем случае команда на скачивание:
wget https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.gz
Скачанный архив нужно распаковать:
sudo tar -C /usr/local --strip-components 1 -xf ./node-v14.16.1-linux-x64.tar.gz
И проверить:
node -v
npm -v
Вывод:
root@bria:~# arch
x86_64
root@bria:~# wget https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.gz
--2021-07-26 03:09:42-- https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.gz
Resolving nodejs.org (nodejs.org)... 104.20.22.46, 104.20.23.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.22.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 33545521 (32M) [application/gzip]
Saving to: ‘node-v14.16.1-linux-x64.tar.gz’
node-v14.16.1-linux-x64.tar.gz 100%[================================================================================================>] 31.99M 8.77MB/s in 3.7s
2021-07-26 03:09:46 (8.75 MB/s) - ‘node-v14.16.1-linux-x64.tar.gz’ saved [33545521/33545521]
root@bria:~# tar -C /usr/local --strip-components 1 -xf ./node-v14.16.1-linux-x64.tar.gz
root@bria:~# node -v
v14.16.1
root@bria:~# npm -v
6.14.12
Все готово, дальше — обновить npm
Node.js установлен, пора приступать к его использованию. Перед этим стоит обновить ваш пакетный менеджер npm. Как правило, версия пакетного менеджера довольно устаревшая.
Смотрим, какая версия установлена сейчас:
npm -v
Вывод:
root@bria:~# npm -v
6.14.12
Обновляем:
npm install npm -g
С помощью npm мы устанавливаем npm (обновляем по сути) и делаем мы это глобально (ключ -g).
Смотрим версию:
npm -v
Вывод:
root@bria:~# npm -v
6.14.12
root@bria:~# npm install npm -g
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
+ npm@7.20.1
added 68 packages from 26 contributors, removed 244 packages and updated 191 packages in 7.872s
root@bria:~# npm -v
6.14.13
root@bria:~# npm -v
7.20.1
Теперь можем создать первое приложение, чтобы убедиться в работоспособности инсталляции.
Сначала создаем ему директорию:
mkdir -p ~/helloWorld
Переходим:
cd ~/helloWorld
Инициализируем проект:
npm init -y
Без использования ключа -y вам будет задано несколько вопросов о названии проекта, авторе, лицензии, репозитории и так далее. Команда создала в директории файл package.json, который является описанием всего проекта. Там прописываются зависимости, метаинформация, скрипты запуска, тестов и сборки проекта и так далее.
root@bria:~/helloWorld# npm init -y
Wrote to /root/helloWorld/package.json:
{
"name": "helloworld",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
Теперь установим какую-нибудь библиотеку из npmjs.com, например, пакет ip. Этот пакет позволяет удобно работать с IP-адресами.
npm install ip -s
Ключ -s указывает npm сохранить пакет как зависимость в package.json. Без него пакет будет установлен, но не будет запомнен в рамках проекта.
Создадим ваше первое приложение:
nano index.js
И вставим вот эту программу в файл:
const ip = require('ip');
console.log("Hello, World!")
console.log(`Server's IP is ${ip.address()}`)
Сохраняем (CTRL + O), закрываем (CTRL + X) nano. Запускаем первую программу:
node index.js
Будет выведено сообщение:
root@bria:~/helloWorld# node index.js
Hello, World!
Server's IP is 192.168.0.100
Вот и все, программа сработала.
Заключение
В этой инструкции мы рассмотрели 4 способа установки Node.js на Ubuntu 20.04 и ситуации, когда лучше стоит применять тот или иной вариант. Теперь вы знаете, что устанавливать Node.js — быстро и несложно.
Есть еще и 5 способ. Он для тех, кто планирует вносить изменения в код. В таких случаях нужен способ установки Node.js из исходного кода. В этой инструкции мы его не рассмотрели намеренно, возможно, на эту тему появится отдельная инструкция.