Гид по технологиям

Установка Node.js и настройка Nginx на Debian 10

• 5 min read • Инфраструктура • Обновлено 23 Nov 2025
Node.js + Nginx на Debian 10 — установка и настройка
Node.js + Nginx на Debian 10 — установка и настройка

Кратко

В этой статье пошагово показано, как установить Node.js на Debian 10, запустить приложение через PM2 и настроить Nginx как обратный прокси для публичного доступа. Подойдёт для тестовой и начальной продакшен-эксплуатации с рекомендациями по безопасности и альтернативами.

Иллюстрация сервера с запущенным Node.js и Nginx

Введение

Node.js — это свободная платформа на базе движка V8, которая позволяет запускать JavaScript вне браузера. Её используют для создания серверных приложений с низкой задержкой и высокой масштабируемостью. Nginx часто ставят перед Node.js как фронтенд-прокси для обработки TLS, статики и балансировки нагрузки.

Краткие определения:

  • Node.js: среда выполнения JavaScript на сервере.
  • Nginx: высокопроизводительный веб-сервер и обратный прокси.
  • PM2: менеджер процессов для запуска Node.js в фоне.
  • NPM: пакетный менеджер для Node.js.

Требования

  • Сервер с Debian 10 (buster).
  • Доступ root или пользователь с sudo.
  • Открытый порт 80 (и 443 при необходимости).

Важно: перед началом рекомендуем выполнить резервную копию и тестировать команды в тестовой среде, если вы работаете в продакшене.

Шаг 1 — Обновление системы

Обновите пакеты и ядро до актуального состояния:

apt-get update -y
apt-get upgrade -y

После обновления перезагрузите сервер, если обновления это требуют.

Шаг 2 — Установка Node.js (через NodeSource)

В стандартном репозитории Debian 10 может не быть требуемой версии Node.js. Удобный способ — использовать скрипт NodeSource.

Установите curl, если он отсутствует:

apt-get install curl -y

Затем скачайте и выполните установочный скрипт (пример для ветки 12.x):

curl -sL https://deb.nodesource.com/setup_12.x | bash -

После этого установите Node.js:

apt-get install nodejs -y

Проверьте версии:

nodejs --version

Ожидаемый вывод (пример):

v12.16.1

Проверьте npm:

npm --version

Пример вывода:

6.13.4

Примечание: если вы планируете управлять несколькими версиями Node.js, рассмотрите nvm (Node Version Manager) как альтернативу.

Альтернативы установке Node.js

  • nvm — удобен для разработки и переключения версий per-user.
  • Docker — изолированное окружение, упрощает деплой в контейнерах.
  • Официальные пакеты Debian — проще, но могут быть старее.

Шаг 3 — Создание простого Node.js приложения

Создайте директорию для приложения и установите express:

mkdir nodeapp
cd nodeapp
npm install express

Создайте файл app.js:

nano app.js

Вставьте содержимое:

var express = require('express');
var app = express();
app.get('/', function(req, res){
   res.send("Nginx as Frontend Server for Node.js!");
});
app.listen(8000, '127.0.0.1');

Сохраните и закройте редактор. Запустите приложение:

node app.js

В отдельном терминале проверьте, что приложение слушает на 127.0.0.1:8000:

netstat -antup | grep 8000

Пример вывода:

tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      26193/node

Проверьте ответ приложения локально:

curl http://127.0.0.1:8000

Ожидаемый вывод:

Nginx as Frontend Server for Node.js!

Шаг 4 — Запуск приложения в фоне с PM2

PM2 поможет держать приложение запущенным и восстанавливать его при падениях.

Установите PM2 глобально:

npm install pm2 -g

Запустите приложение через PM2:

cd nodeapp
pm2 start app.js

Пример стартового баннера и информации (сокращённый):

[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /root/nodeapp/app.js in fork_mode (1 instance)
[PM2] Done.

Список процессов PM2 покажет PID, статус, время и потребление памяти/CPU.

Сделайте автозапуск PM2 при старте системы:

pm2 startup

Пример создаваемого systemd-сервиса и команд (в выводе pm2 будет указано, какую команду выполнить, например systemctl enable pm2-root). Затем сохраните список процессов, чтобы PM2 их восстанавливал:

pm2 save

Запустите сервис systemd, если это требуется:

systemctl start pm2-root
systemctl status pm2-root

Пример статуса (сокращённый):

? pm2-root.service - PM2 process manager
   Loaded: loaded (/etc/systemd/system/pm2-root.service; enabled; vendor preset: enabled)
   Active: active (running)

Важно: убедитесь, что pm2_home и пути в unit-файле соответствуют вашему пользователю. Для продакшена часто создают systemd-юнит под выделенным системным пользователем, а не root.

Альтернатива PM2: systemd unit для прямого запуска node (проще и надёжней для небольшой инфраструктуры).

Шаг 5 — Установка и настройка Nginx как обратного прокси

Установите Nginx:

apt-get install nginx -y

Создайте конфигурацию виртуального хоста:

nano /etc/nginx/sites-enabled/myapp.conf

Вставьте:

server {
    listen 80;
    server_name node.myserver.tld;
    location / {
        proxy_pass http://127.0.0.1:8000;
        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;
     }
}

Сохраните файл и перезапустите Nginx:

systemctl restart nginx
systemctl status nginx

Пример статуса:

? nginx.service - A high performance web server and a reverse proxy server
   Active: active (running)

Теперь Nginx принимает внешние запросы и проксирует их на ваш Node.js, который слушает только localhost.

Скриншот страницы Node.js, обслуживаемой через Nginx

Проверка доступа

Откройте в браузере:

http://node.myserver.tld

Вы должны увидеть содержимое, которое возвращает ваш Node.js-приложение.

Если используете DNS-имя, убедитесь, что запись A указывает на IP сервера. Для теста можно временно прописать /etc/hosts локально.

Безопасность и рекомендации для продакшена

  • TLS: используйте Certbot/LetsEncrypt для SSL и включите 443. Nginx удобно управляет сертификатами.
  • Права: не запускайте приложение от root; создайте отдельного пользователя для сервиса.
  • Ограничения: примените лимиты systemd и ulimit для процессов.
  • Фаервол: закройте прямой доступ к порту 8000/127.0.0.1 он уже локальный; в firewall разрешите только 80/443.
  • Логи: настройте логирование и ротацию (logrotate) для /var/log/nginx и PM2-логов.
  • Мониторинг: используйте инструменты мониторинга (Prometheus, Grafana, PM2 monit).

Трублешутинг — распространённые проблемы

  • «Connection refused» при обращении извне: проверьте что Nginx запущен и server_name/hosts настроены.
  • PM2 не восстанавливает процессы после перезагрузки: выполните pm2 save и убедитесь, что systemd-юнит включён (systemctl enable pm2-root).
  • Пустой ответ или 502 Bad Gateway: проверьте, что Node.js слушает на том адресе и порту, который указан в proxy_pass, и что нет SELinux/фаервола, блокирующего связь.
  • Порт занят: проверьте netstat или ss на предмет процессов, использующих порт.

Критерии приёмки

  • Node.js успешно возвращает ожидаемый контент по curl на localhost:8000.
  • PM2 показывает приложение в статусе online и процессы сохраняются (pm2 list, pm2 save).
  • Nginx отвечает на запросы по домену и проксирует их на Node.js (curl http://node.myserver.tld).
  • При рестарте сервера приложение автоматически поднимается.

Мини-методология развёртывания (быстрое руководство)

  1. Обновить систему.
  2. Установить Node.js (NodeSource или nvm).
  3. Развернуть приложение, пройти smoke-тесты локально.
  4. Запустить приложение через PM2 или systemd.
  5. Настроить Nginx как обратный прокси и SSL.
  6. Настроить мониторинг и бэкапы конфигураций.

Чек-лист по ролям

  • DevOps / Системный администратор:
    • Установил Node.js и Nginx; настроил firewall и TLS.
    • Настроил автозапуск PM2/systemd, логирование и мониторинг.
  • Разработчик:
    • Подготовил package.json, проверил работу в localhost.
    • Предоставил инструкции для запуска и переменных окружения.
  • Менеджер проекта:
    • Утвердил политику восстановления после падения и время отклика SLA.

Когда этот подход не подходит

  • Большое микросервисное окружение — лучше использовать балансировщик и контейнеризацию (Kubernetes).
  • Нужна строгая изоляция — предпочтительно Docker/VM.

Миграция и совместимость

  • При переходе на Debian 11 или более новые версии Node.js проверьте совместимость зависимостей.
  • При обновлении Node.js используйте nvm или проводите миграцию через тестовый деплой.

Заключение

Вы научились устанавливать Node.js на Debian 10, запускать приложение через PM2 и настраивать Nginx как фронтенд-прокси. Этот набор шагов обеспечивает простую и надёжную схему развертывания для небольших и средних сервисов. Для продакшена дополнительно настройте TLS, мониторинг, ротацию логов и процедуры отката.

Ключевые команды и конфигурации в статье пригодны для быстрого старта и дальнейшей адаптации под ваши требования.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро