Установка Node.js нужной версии
Версия Node из стандартного репозитория обычно устарела на несколько релизов. Разберём два надёжных способа поставить именно нужную версию — через NodeSource и через nvm — и запустим приложение как сервис.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Какой способ выбрать
Есть три подхода: пакет из дистрибутива (старый и негибкий), репозиторий NodeSource (одна актуальная LTS на систему) и nvm (несколько версий рядом, переключение на лету).
- NodeSource — для боевого сервера с одним приложением: чисто, обновляется через apt.
- nvm — для разработки и нескольких проектов на разных версиях.
Проверьте текущую LTS-линейку перед установкой — обычно это чётные мажорные версии (20, 22).
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для Node.jsСпособ 1: NodeSource
Подключаем официальный репозиторий нужной ветки (пример — 20.x) и ставим пакет:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
npm ставится вместе с Node. Для сборки нативных модулей (bcrypt, sharp) понадобится компилятор:
apt install -y build-essential
Проверяем версии:
node -v
npm -v
Способ 2: nvm для нескольких версий
nvm ставит Node в домашнюю директорию пользователя — без sudo и без конфликтов с системой:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
Теперь можно ставить и переключать версии:
nvm install 20
nvm install 22
nvm use 20
nvm alias default 20
nvm ls
Внутри проекта создайте файл .nvmrc со строкой вроде 20 — тогда nvm use подхватит нужную версию автоматически.
Запуск приложения как сервиса
Приложение не должно работать в терминале через nohup — оно упадёт при разрыве SSH. Оформите systemd-юнит /etc/systemd/system/myapp.service:
[Unit]
Description=My Node App
After=network.target
[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node server.js
Restart=always
User=www-data
Environment=NODE_ENV=production
Environment=PORT=3000
[Install]
WantedBy=multi-user.target
Включаем и запускаем:
systemctl daemon-reload
systemctl enable --now myapp
systemctl status myapp
Альтернатива: pm2
pm2 — популярный менеджер процессов Node с автоперезапуском, логами и кластеризацией по ядрам:
npm install -g pm2
pm2 start server.js --name myapp -i max
pm2 save
pm2 startup
Флаг -i max поднимает по процессу на ядро CPU. На тарифах MAATRIX с AMD EPYC это заметно повышает пропускную способность Node-приложения без правки кода.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для Node.jsОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Ставить Node под root или под пользователем?
Приложение запускайте под непривилегированным пользователем (www-data или отдельным). nvm вообще не требует root. Это снижает риск при компрометации.
Как обновить версию Node позже?
С NodeSource — подключите новый setup_XX.x и apt upgrade nodejs. С nvm — nvm install новой версии и nvm alias default.
Нужен ли nginx перед Node?
Да, как reverse proxy: он терминирует TLS, отдаёт статику и балансирует. Node слушает localhost:3000, nginx проксирует на него.