Установка Node.js на Rocky Linux: AppStream и NVM

О чём эта статья
В статье объясняются два основных подхода к установке Node.js на Rocky Linux:
- Установка из репозитория AppStream — для долгосрочных серверных развёртываний и производственного окружения.
- Установка с помощью NVM (Node Version Manager) — для гибкости и работы с несколькими версиями на одной машине.
Также вы найдёте рекомендации по проверке установки, управлению версиями, устранению проблем, безопасной настройке и шаблоны задач для ролей разработчика и администратора.
Кому это нужно
- Системным администраторам, которые разворачивают Node.js в production.
- Разработчикам, которым важно переключаться между версиями.
- Командам поддержки, которым нужно задокументировать процедуру установки и отката.
Краткие определения
Node.js — серверная среда выполнения JavaScript на базе движка V8. NVM — утилита для установки и управления несколькими версиями Node.js в пользовательской среде.
Предварительные требования
- Сервер с Rocky Linux или совместимой RHEL-дистрибутивом. Обновите пакеты перед началом.
- Пользователь с привилегиями root или sudo для установки пакетов и изменения системных настроек.
- Доступ в Интернет для загрузки репозиториев и пакетов.
Метод 1 — Установка Node.js из репозитория AppStream
Когда применять этот метод:
- Вы настраиваете сервер для длительной работы в production.
- Приложение рассчитано на конкретную LTS-версию, поставляемую дистрибутивом.
- Вам важна поддержка безопасности и удобство обновлений через системный менеджер пакетов.
Почему AppStream
AppStream предоставляет управляемые модули с версиями Node.js, отфильтрованными и протестированными для совместимости с вашей системой. Это упрощает автоматизацию обновлений и интеграцию с системными инструментами.
Настройка модуля репозитория
- Посмотрите доступные модули Node.js:
sudo dnf module list | grep nodejsВы увидите список модулей с версиями и профилями.

- Включите модуль нужной версии, например 14:
sudo dnf module enable nodejs:14Подтвердите ввод “y” при необходимости.

Опционально можно указать профиль установки (development, minimal, s2i):
sudo dnf module enable nodejs:14/minimal- Проверьте состояние модуля:
sudo dnf module list nodejsВ выводе вы должны увидеть версию 14 с меткой включено [e].
Установка Node.js и npm
- Установите пакеты:
sudo dnf install nodejs npmПодтвердите установку.

- Проверьте установленные бинарники и версии:
which node
which npm
node --version
npm --versionЕсли всё успешно, команды покажут пути к /usr/bin и версии Node.js и npm.

Когда этот метод не подходит
- Если вам нужно иметь несколько параллельных версий Node.js для разных проектов на одном сервере.
- Если нужны самые свежие функции из новых мажорных релизов, отсутствующие в репозитории дистрибутива.
В этом случае используйте NVM или контейнеры.
Метод 2 — Установка Node.js с помощью NVM
Когда применять этот метод:
- Вы разработчик или тестировщик и часто переключаетесь между версиями.
- Вы хотите изолировать версии Node.js per-user, не влияя на системный Node.
NVM устанавливается в домашний каталог пользователя и не требует прав root для управления версиями.

Установка NVM
- Скачайте и запустите установочный скрипт:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bashСкрипт добавит конфигурацию в ~/.bashrc.
- Примените изменения:
source ~/.bashrc- Проверьте, что команда nvm доступна:
command -v nvm
nvm --version
nvm --helpВы должны увидеть вывод команды nvm и её версию.

Просмотр доступных версий Node.js
Список всех версий из удалённого репозитория:
nvm ls-remoteФильтрация только LTS-релизов:
nvm ls-remote --ltsПример вывода включает записи вида v14.17.6 (LTS: Fermium).
Установка конкретной версии Node.js
Установите нужную версию:
nvm install v16.8.0Эта версия станет текущей активной для вашего пользователя. Проверьте версии:
node --version
npm --version
Установка последней LTS:
nvm install --ltsТакже можно устанавливать по коду релиза, например dubnium (v10.x):
nvm install lts/dubnium
Управление несколькими версиями
Просмотр установленных версий:
nvm lsСмена активной версии:
nvm use v16.8.0
nvm currentУстановка LTS как текущей версии:
nvm use --lts
Практические рекомендации для разработчика
- Для каждого проекта храните файл .nvmrc с содержимым, например
14или16.8.0, чтобы команда могла выполнитьnvm useи получить нужную версию. - Не используйте npm install -g для глобальных пакетов, если хотите избежать конфликтов между версиями; при необходимости устанавливайте пакеты локально в проект.
- В CI используйте тот же nvm или Docker-образ с нужной версией Node.js для консистентности сборок.
Когда NVM не подходит
- Если вам нужен Node.js на уровне всей системы и вы хотите управлять обновлениями централизованно.
- Если вы разворачиваете сервисы systemd, которые ожидают системный node в PATH. Для сервисов лучше использовать системную установку или явные пути в unit-файлах.
Альтернативные подходы
- NodeSource binary distributions — репозиторий с актуальными релизами Node.js, часто используют для production, когда требуется свежая версия, а не та, что есть в AppStream.
- Сборка из исходников — даёт максимальный контроль, но требует больше времени и навыков.
- Использование контейнеров Docker — изолирует окружение и фиксирует версии в образах.
Пример добавления репозитория NodeSource (альтернативный метод):
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo dnf install -y nodejsЭтот подход устанавливает Node.js на уровне системы, но не через модуль AppStream.
Безопасность и жёсткая конфигурация
- Запускайте Node.js-приложения от отдельного непривилегированного пользователя.
- Ограничьте права файловой системы только необходимыми каталогами.
- Используйте systemd для управления процессами и настроек рестарта, лимитов памяти и CPU.
- Обновляйте npm-пакеты и следите за уязвимостями через
npm audit.
Краткий чеклист безопасности:
- Отдельный пользователь для сервиса
- systemd unit с Restart=on-failure
- Ограничение ресурсов через systemd или cgroups
- Регулярные обновления и проверка
npm audit
Советы по миграции и совместимости
- Проверьте совместимость кода с новыми версиями Node.js, особенно при переходе через мажорные релизы.
- Используйте утилиты типа nvm для тестирования приложения на нескольких версиях локально.
- Для production сначала разверните новую версию в staging и прогоните набор тестов.
Тесты и критерии приёмки
Критерии приёмки установки:
- node и npm доступны в PATH и возвращают ожидаемые версии.
- Сервис успешно стартует и проходит smoke-тесты приложения.
- Логи приложения не показывают ошибок инициализации, связанных с версией Node.js.
Минимальные тест-кейсы:
- Проверка бинарников:
which node,node --version. - Запуск простого HTTP-сервера на выбранной версии.
- Запуск unit/интеграционных тестов приложения в окружении новой версии.
Руководство действий для ролей
Администратор сервера:
- Выбирает AppStream или NodeSource для системной установки.
- Настраивает unit-файлы systemd.
- Контролирует обновления через dnf.
Разработчик:
- Устанавливает NVM в пользовательской среде.
- Помещает .nvmrc в корень проекта.
- Обновляет зависимости и проверяет совместимость.
Восстановление и откат
Если новая версия вызывает ошибки в production:
- Остановите обновлённый сервис.
- Откатитесь на предыдущую версию Node (AppStream:
sudo dnf module reset nodejs+ включение нужной версии; NVM:nvm use). - Перезапустите сервис и выполните smoke-тесты.
Шаблон SOP для установки Node.js в production
- Подготовка: резервное копирование конфигураций и проверка зависимости.
- Тестирование: развернуть на staging и выполнить полный набор тестов.
- Внедрение: на production применить выбранный способ установки.
- Верификация: проверить доступные endpoint, логи и метрики.
- Мониторинг: следить за производительностью и ошибками в первые 24–72 часа.
Технические уловки и подсказки
- Если PATH не обновляется после установки nvm, выполните
source ~/.bashrcили перезапустите терминал. - Для system-wide node при использовании nvm в service file указывайте абсолютный путь к бинарнику, например
/home/deploy/.nvm/versions/node/v16.8.0/bin/node. - Для CI лучше использовать Docker-образ с фиксированной версией Node.js.
Частые ошибки и их исправления
Проблема: команда nvm не найдена в non-interactive shell. Решение: убедитесь, что инициализация nvm добавлена в файл, который читается non-interactive shell, или используйте явный source ~/.bashrc в скриптах.
Проблема: systemd-сервис не видит node из nvm. Решение: systemd запускает процессы вне пользовательской среды. Указывайте абсолютный путь к node или запустите через специальный пользовательский сервис с EnvironmentFile, содержащим нужные переменные.
Сравнение подходов — матрица
- AppStream: безопасность и управляемость, ограниченная свежесть пакетов.
- NodeSource: более свежие системные пакеты, установка на уровне системы.
- NVM: гибкость, per-user изоляция, не подходит для system-wide служб без дополнительной настройки.
- Docker: максимальная изоляция и повторяемость образов.
Показатели зрелости подхода
- Установка AppStream — зрелый подход для продакшна на RHEL-подобных системах.
- NVM — зрелый инструмент для разработчиков, широко используется в сообществе.
Краткий глоссарий
- LTS — Long Term Support, версия с длительной поддержкой.
- AppStream — модульный репозиторий пакетов в RHEL-подобных системах.
- NVM — Node Version Manager.
Заключение
Оба метода установки имеют свои сильные стороны. Для серверов и production отвечает AppStream или системные репозитории. Для разработки и быстрого переключения версий удобен NVM. Выберите подход, основываясь на роли, задачах и требованиях к поддержке. Всегда тестируйте обновления в staging-пространстве перед развертыванием в production.
Важно: поддерживайте копии конфигураций и роллаут-план на случай отката.
Контрольный список перед установкой
- [ ] Обновлены системные пакеты
sudo dnf update. - Выполнен бэкап конфигураций.
- Выбрана версия Node.js и способ установки.
- Подготовлены smoke-тесты и процедуры отката.
Дополнительные ресурсы
- Официальный сайт Node.js: https://nodejs.org
- Документация nvm: https://github.com/nvm-sh/nvm
Итог
- AppStream подходит для стабильных серверных установок и централизованного управления пакетами.
- NVM подходит для разработчиков и ситуаций, где необходимо переключаться между версиями.
- Для production рассмотрите также NodeSource или контейнеры Docker при необходимости более свежих релизов.
Спасибо за внимание. Если нужна помощь с конкретной конфигурацией systemd, файлом .nvmrc или CI-пайплайном — опишите окружение, и я помогу составить пошаговую инструкцию.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента