Установка Node.js нужной версии
Версия Node из стандартного репозитория обычно устарела на несколько релизов. Разберём два надёжных способа поставить именно нужную версию — через NodeSource и через nvm — и запустим приложение как сервис.
Содержание
Какой способ выбрать
['Есть три подхода: пакет из дистрибутива (старый и негибкий), репозиторий NodeSource (одна актуальная LTS на систему) и nvm (несколько версий рядом, переключение на лету).', '- NodeSource — для боевого сервера с одним приложением: чисто, обновляется через apt.
- nvm — для разработки и нескольких проектов на разных версиях.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для Node.jsСпособ 1: NodeSource
['Подключаем официальный репозиторий нужной ветки (пример — 20.x) и ставим пакет:', 'curl -fsSL https://deb.nodesource.com/setup_20.x | bash -\napt install -y nodejs', 'npm ставится вместе с Node. Для сборки нативных модулей (bcrypt, sharp) понадобится компилятор:', 'apt install -y build-essential', 'Проверяем версии:', 'node -v\nnpm -v']
Способ 2: nvm для нескольких версий
['nvm ставит Node в домашнюю директорию пользователя — без sudo и без конфликтов с системой:', 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash\nsource ~/.bashrc', 'Теперь можно ставить и переключать версии:', 'nvm install 20\nnvm install 22\nnvm use 20\nnvm alias default 20\nnvm ls', 'Внутри проекта создайте файл .nvmrc со строкой вроде 20 — тогда nvm use подхватит нужную версию автоматически.']
Запуск приложения как сервиса
['Приложение не должно работать в терминале через nohup — оно упадёт при разрыве SSH. Оформите systemd-юнит /etc/systemd/system/myapp.service:', '[Unit]\nDescription=My Node App\nAfter=network.target\n\n[Service]\nWorkingDirectory=/var/www/myapp\nExecStart=/usr/bin/node server.js\nRestart=always\nUser=www-data\nEnvironment=NODE_ENV=production\nEnvironment=PORT=3000\n\n[Install]\nWantedBy=multi-user.target', 'Включаем и запускаем:', 'systemctl daemon-reload\nsystemctl enable --now myapp\nsystemctl status myapp']
Альтернатива: pm2
['pm2 — популярный менеджер процессов Node с автоперезапуском, логами и кластеризацией по ядрам:', 'npm install -g pm2\npm2 start server.js --name myapp -i max\npm2 save\npm2 startup', 'Флаг -i max поднимает по процессу на ядро CPU. На тарифах MAATRIX с AMD EPYC это заметно повышает пропускную способность Node-приложения без правки кода.']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для Node.jsЧастые вопросы
Ставить 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 проксирует на него.