Как установить Node.js: полное техническое руководство для всех платформ
Node.js — это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, построенная на движке V8 от Chrome, которая выполняет JavaScript-код вне браузерной среды. Её неблокирующая, событийно-ориентированная модель ввода-вывода делает её доминирующим выбором для создания высокопроизводительных API, приложений реального времени, микросервисов и серверного инструментария. Правильная установка Node.js — с использованием подходящего метода для вашей ОС и рабочего процесса — является основой стабильной, воспроизводимой среды разработки.
Это руководство охватывает все основные способы установки: официальные установщики, встроенные менеджеры пакетов ОС, бинарные дистрибутивы NodeSource и nvm (Node Version Manager). В нём также рассматриваются управление версиями, работа с глобальными пакетами и особенности производственных серверов, которые большинство руководств полностью игнорируют.
Выбор правильного метода установки
Прежде чем выполнять какую-либо команду, разберитесь, что именно даёт каждый метод — поскольку неправильный выбор создаёт реальные операционные проблемы в дальнейшем.
| Метод | Лучше всего подходит для | Гибкость версий | Требуются права root | Примечания |
|---|---|---|---|---|
| — | — | — | — | — |
| Официальный установщик `.pkg` / `.msi` | Быстрая локальная настройка, начинающие пользователи | Только одна версия | Да | Загрязняет системный PATH; сложно переключать версии |
| Менеджер пакетов ОС (`apt`, `brew`, `yum`) | Общесистемные установки, CI-серверы | Ограниченная | Да | Часто поставляет устаревшие версии |
| Бинарный репозиторий NodeSource | Linux-серверы, предсказуемая привязка к LTS | На каждую установку | Да | Поддерживается NodeSource; хорошо подходит для продакшена |
| `nvm` (Node Version Manager) | Разработка нескольких проектов | Полная, на уровне оболочки | Нет | Золотой стандарт для рабочих станций разработчиков |
| `fnm` (Fast Node Manager) | CI-пайплайны, чувствительные к производительности | Полная | Нет | Написан на Rust, значительно быстрее nvm |
| Docker / образ контейнера | Изолированные, воспроизводимые сборки | Полная, на уровне контейнера | Зависит от ситуации | Лучший вариант для микросервисов и CI/CD |
Ключевое правило выбора: На рабочей станции разработчика всегда используйте nvm или fnm. На производственном Linux-сервере используйте репозиторий NodeSource или образ контейнера. Никогда не используйте пакет Node.js из стандартного менеджера пакетов ОС на Ubuntu/Debian — он регулярно поставляет версии, отстающие от текущего LTS на годы.
Установка Node.js на Linux
Linux — это платформа, на которой фактически выполняется большинство производственных нагрузок Node.js. Здесь правильная настройка важнее, чем где-либо ещё. Если вы выполняете развёртывание в среде VPS Хостинг, следующие методы применимы непосредственно к вашему удалённому серверу.
Метод 1: Бинарные дистрибутивы NodeSource (рекомендуется для серверов)
NodeSource поддерживает актуальные, подписанные пакеты .deb и .rpm, которые точно отслеживают ветки выпусков Node.js LTS и Current. Это наиболее надёжный подход для производственных Linux-серверов.
Ubuntu / Debian:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejsFedora / CentOS / RHEL / Rocky Linux:
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejsПосле установки проверьте как среду выполнения, так и встроенный менеджер пакетов:
node -v
npm -vКритическая ошибка: Шаблон curl | bash выполняет удалённый скрипт от имени root. В средах с повышенными требованиями к безопасности сначала загрузите скрипт, проверьте его, а затем выполните:
curl -fsSL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh
less nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt-get install -y nodejsМетод 2: nvm — Node Version Manager (рекомендуется для разработчиков)
nvm устанавливает Node.js полностью в вашем домашнем каталоге (~/.nvm), не требует sudo и позволяет переключать версии для каждого проекта или сеанса оболочки. Это правильный инструмент для любой рабочей станции или многопользовательского сервера, где разным приложениям требуются разные версии Node.js.
Установка nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashУстановщик добавляет необходимую инициализацию оболочки в ~/.bashrc, ~/.zshrc или ~/.profile. Перезагрузите оболочку:
source ~/.bashrcУстановка последнего LTS-релиза:
nvm install --ltsУстановка конкретной версии по номеру:
nvm install 20.14.0Переключение между установленными версиями:
nvm use 18
nvm use 20Установка постоянной версии по умолчанию для новых сеансов оболочки:
nvm alias default 20Список всех локально установленных версий:
nvm lsПроверка активной версии:
node -v
npm -vОсобый случай — файлы .nvmrc: Поместите файл .nvmrc в корень вашего проекта, содержащий только строку версии (например, 20.14.0). Запуск nvm use внутри этого каталога автоматически выбирает правильную версию. Это необходимо для командных сред, где расхождение версий вызывает трудноуловимые ошибки.
echo "20.14.0" > .nvmrc
nvm useМетод 3: Системный менеджер пакетов (допустимо для инструментария, но не для продакшена)
Стандартные репозитории apt или dnf поставляют версии Node.js, которые нередко устарели. Используйте это только для некритичного инструментария:
sudo apt-get update
sudo apt-get install -y nodejs npmНа Fedora / RHEL 9+:
sudo dnf install nodejsУстановка Node.js на macOS
Метод 1: Homebrew (рекомендуется)
Homebrew — де-факто менеджер пакетов для сред разработки на macOS. Если Homebrew ещё не установлен, следуйте инструкциям на brew.sh.
brew install nodeДля установки конкретной мажорной версии (например, Node.js 20 LTS):
brew install node@20
brew link --overwrite node@20Проверка:
node -v
npm -vПодводный камень Homebrew: brew upgrade node выполнит обновление до последней версии, что может нарушить работу проектов, привязанных к более старому релизу. Если вы управляете несколькими проектами, используйте nvm и на macOS — рабочий процесс идентичен Linux.
Метод 2: nvm на macOS
Команды установки и использования nvm идентичны Linux. Пользователям macOS с Zsh (по умолчанию начиная с Catalina) следует убедиться, что ~/.zshrc содержит блок инициализации nvm после установки:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"Метод 3: Официальный установщик .pkg
Загрузите установщик .pkg с nodejs.org, запустите его и следуйте инструкциям мастера. Это самый простой путь для пользователей, которым нужна одна версия Node.js и которые не планируют переключаться. После установки откройте Terminal и подтвердите:
node -v
npm -vУстановка Node.js на Windows
Метод 1: Официальный установщик .msi
Загрузите установщик Windows (.msi) с nodejs.org. Выберите сборку LTS для работы, близкой к продакшену, или Current для экспериментов с новейшими функциями. Установщик автоматически регистрирует Node.js в системном PATH.
После установки откройте командную строку или PowerShell и проверьте:
node -v
npm -vВажно: В процессе работы мастера установки есть необязательный шаг для установки Chocolatey и инструментов сборки для нативных модулей (аддонов C++). Включите его, если зависимости вашего проекта включают пакеты типа bcrypt, sharp или модули, зависящие от node-gyp. Пропуск этого шага приводит к непонятным ошибкам сборки в дальнейшем.
Метод 2: Chocolatey
Chocolatey — менеджер пакетов для Windows, обеспечивающий скриптовые, воспроизводимые установки, что ценно при подготовке машин разработчиков.
Откройте командную строку или PowerShell с повышенными привилегиями (от имени администратора):
choco install nodejs-ltsПроверка:
node -v
npm -vМетод 3: nvm-windows
Обратите внимание, что nvm для Linux/macOS не работает на Windows. Эквивалентом для Windows является nvm-windows — отдельный проект со схожим интерфейсом.
Загрузите установщик со страницы релизов nvm-windows на GitHub. После установки:
nvm install lts
nvm use lts
node -vWindows Subsystem for Linux (WSL2): Разработчикам, серьёзно работающим с Node.js на Windows, настоятельно рекомендуется рассмотреть WSL2 с Ubuntu. Внутри WSL2 установка Linux nvm работает идентично нативному Linux, а опыт разработки значительно более согласован с производственными серверными средами.
Понимание LTS и Current: какую версию устанавливать
Node.js следует предсказуемому расписанию выпусков, которое напрямую влияет на то, какую версию следует развёртывать.
| Тип релиза | Периодичность | Срок поддержки | Сценарий использования |
|---|---|---|---|
| — | — | — | — |
| **LTS (Long Term Support)** | Чётные мажорные версии (18, 20, 22) | 30 месяцев всего (12 активная + 18 техническое обслуживание) | Производственные приложения, корпоративные нагрузки |
| **Current** | Нечётные мажорные версии (19, 21, 23) | Только 6 месяцев | Тестирование функций, авторы библиотек |
| **Maintenance LTS** | Устаревающие LTS-релизы | Только исправления безопасности | Устаревшие системы в процессе миграции |
Практическое правило: Всегда развёртывайте LTS в продакшене. Используйте Current только в изолированных средах разработки, когда вам нужно протестировать совместимость с предстоящими функциями Node.js.
Поддержание Node.js в актуальном состоянии
Устаревшие версии Node.js подвергают ваше приложение известным уязвимостям движка V8, устаревшим конфигурациям TLS и нарушенной совместимости зависимостей. Относитесь к обновлениям Node.js как к обслуживанию безопасности, а не к необязательным улучшениям.
С nvm (все платформы):
nvm install --lts
nvm reinstall-packages <old-version>
nvm alias default nodeКоманда nvm reinstall-packages переносит глобально установленные пакеты со старой версии на новую — деталь, которую большинство руководств упускает и которая экономит значительное время.
С NodeSource на Debian/Ubuntu:
sudo apt-get update && sudo apt-get upgrade nodejsС Homebrew на macOS:
brew update && brew upgrade nodeС Chocolatey на Windows:
choco upgrade nodejs-ltsУправление глобальными пакетами npm
Глобальные пакеты npm устанавливают CLI-инструменты, доступные во всей системе. Держите список глобальных установок минимальным — инструменты, специфичные для проекта, должны находиться в devDependencies, а не в глобальных установках, чтобы обеспечить воспроизводимые сборки в разных средах.
Установка глобального пакета:
npm install -g yarn
npm install -g pm2
npm install -g typescriptСписок всех глобально установленных пакетов:
npm list -g --depth=0Удаление глобального пакета:
npm uninstall -g yarnРаспространённые глобальные пакеты, актуальные для продакшена:
pm2 — менеджер процессов для приложений Node.js; обеспечивает кластеризацию, автоматический перезапуск и управление журналами на Linux-серверах
typescript — компилятор TypeScript (tsc)
nodemon — инструмент отслеживания файлов для разработки, автоматически перезапускающий процесс Node.js при изменении кода
dotenv-cli — загружает файлы .env для конфигурации, специфичной для среды
nvm и глобальные пакеты: При переключении версий Node.js с помощью nvm глобальные пакеты, установленные в предыдущей версии, автоматически недоступны. Либо переустановите их, либо используйте nvm reinstall-packages <previous-version> для их переноса.
После установки: настройка npm для производственных сред
Чистая установка Node.js требует нескольких дополнительных шагов настройки, прежде чем она будет готова к продакшену.
Установка реестра npm (необязательно, для частных реестров или зеркал):
npm config set registry https://registry.npmjs.org/
Настройка каталога кэша npm (актуально на серверах с ограниченным пространством /tmp):
npm config set cache /path/to/custom/cache
Отключение генерации package-lock.json (только если ваша команда использует исключительно yarn.lock):
npm config set package-lock false
Установка переменной среды Node.js для продакшена:
export NODE_ENV=production
Добавьте это в /etc/environment или файл юнита systemd вашего приложения на Linux-серверах, чтобы гарантировать активацию производственных оптимизаций в Express.js, Next.js и других фреймворках.
Если вы запускаете приложения Node.js на Выделенном сервере, настройте pm2 как службу systemd, чтобы гарантировать перезапуск вашего приложения после перезагрузок:
pm2 start app.js --name "my-app"
pm2 startup systemd
pm2 save
Запуск Node.js за обратным прокси
На производственных серверах приложения Node.js никогда не должны быть напрямую доступны на порту 80 или 443. Используйте Nginx или Apache в качестве обратного прокси и завершайте TLS на уровне прокси. Это критически важное архитектурное решение, которое непосредственно обеспечивается шагом установки.
Минимальная конфигурация Nginx для приложения Node.js, работающего на порту 3000:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Дополните это действительным TLS-сертификатом. SSL-сертификаты необходимы для любого приложения Node.js, обрабатывающего пользовательские данные, токены аутентификации или API-запросы — это не опция. Let’s Encrypt через certbot является стандартным бесплатным вариантом; коммерческие сертификаты подходят для корпоративных развёртываний.
Node.js на общем хостинге и VPS
Вопрос, который возникает часто: может ли Node.js работать на общем хостинге?
Стандартные среды Общего веб-хостинга не поддерживают Node.js в каком-либо значимом смысле. Общий хостинг предназначен для PHP-приложений и не предоставляет доступ к оболочке, постоянное управление процессами или возможность привязки к пользовательским портам — всё это требуется Node.js.
Для любого реального развёртывания Node.js вам нужен как минимум план VPS Хостинга. VPS предоставляет root-доступ, постоянный менеджер процессов, такой как pm2, и полный контроль над версией Node.js и конфигурацией среды выполнения. Если вам нужна управляемая панель управления вместе со средой Node.js, VPS с cPanel обеспечивает промежуточный вариант между чистым доступом к VPS и управляемым хостингом.
Для вычислительно-интенсивных нагрузок Node.js — вывода моделей машинного обучения, транскодирования видео или крупномасштабной обработки данных — стандартного VPS может быть недостаточно. GPU Хостинг обеспечивает аппаратное ускорение, которого процессы Node.js, ограниченные CPU, не могут достичь самостоятельно.
Технический контрольный список ключевых выводов
Используйте это как контрольный список перед развёртыванием:
Выбор версии: убедитесь, что вы используете активный LTS-релиз (node -v должна возвращать чётный мажорный номер в активном окне поддержки)
Метод установки соответствует среде: nvm на машинах разработчиков; NodeSource или контейнер на серверах
Версия npm актуальна: запустите npm install -g npm@latest после установки Node.js — встроенный npm часто не является последним
NODE_ENV установлена: убедитесь, что echo $NODE_ENV возвращает production во всех серверных средах
Менеджер процессов настроен: pm2 list показывает работающее приложение и выполнена команда pm2 startupnpm list -g --depth=0 показывает только необходимые CLI-инструменты.nvmrc зафиксирован в репозитории: обеспечивает использование одной и той же версии Node.js всеми членами команды и CI-пайплайнамиЧасто задаваемые вопросы
В чём разница между Node.js LTS и Current и какую из них следует устанавливать?
LTS (Long Term Support) — это релизы с чётными мажорными номерами (18, 20, 22), поддерживаемые в течение 30 месяцев с патчами безопасности и стабильности. Релизы Current — это нечётные мажорные версии, поддерживаемые только 6 месяцев. Устанавливайте LTS для любой производственной или командной разработки. Используйте Current только для краткосрочных экспериментов с функциями.
Почему nvm показывает «command not found» после установки?
Установщик nvm добавляет код инициализации в RC-файл вашей оболочки (~/.bashrc или ~/.zshrc), но текущий сеанс терминала не перезагрузил его. Выполните source ~/.bashrc (или source ~/.zshrc для Zsh) или откройте новое окно терминала. Если проблема сохраняется, вручную убедитесь, что блок инициализации nvm существует в конце вашего RC-файла.
Можно ли одновременно запускать несколько версий Node.js на одном сервере?
Да, с помощью nvm. Каждая версия устанавливается в собственный каталог в ~/.nvm/versions/. Вы можете переключать активную версию для каждого сеанса оболочки с помощью nvm use <version> или для каждого проекта с помощью файла .nvmrc. Различные процессы, работающие с разными версиями Node.js, могут сосуществовать без конфликтов.
Почему не следует устанавливать Node.js из стандартного репозитория apt Ubuntu/Debian?
Стандартные репозитории Ubuntu и Debian поставляют версии Node.js, которые нередко отстают от текущего LTS на два-четыре мажорных версии. Например, Ubuntu 22.04 по умолчанию поставляет Node.js 12 — версию, достигшую конца жизненного цикла в 2022 году. Всегда используйте репозиторий NodeSource или nvm для получения поддерживаемого актуального релиза.
Как полностью удалить Node.js и начать заново?
Метод зависит от способа установки. Для установок через NodeSource: sudo apt-get remove nodejs && sudo apt-get autoremove. Для nvm: nvm uninstall <version> для конкретных версий или полностью удалите каталог ~/.nvm и удалите строки инициализации из RC-файла. Для Homebrew: brew uninstall node. Для официального установщика на macOS/Windows используйте стандартный деинсталлятор приложений системы и вручную удалите все остаточные каталоги в /usr/local/lib/node_modules или %AppData%npm.
