6.18 Как установить и развернуть проект на NodeJS

Банер Node.js представляет собой мощную платформу для создания быстрых и масштабируемых сетевых приложений. Основанная на движке V8 от Google Chrome, эта технология позволяет использовать JavaScript на стороне сервера, что открывает новые возможности для разработчиков.

В современном мире Node.js стал неотъемлемой частью экосистемы, позволяя создавать все: от простых веб-серверов до сложных микросервисных архитектур. Его событийно-ориентированная архитектура и неблокирующий ввод/вывод делают его особенно эффективным для приложений реального времени.

Важным преимуществом Node.js является огромное сообщество разработчиков и богатая экосистема пакетов npm (Node Package Manager), что существенно ускоряет процесс разработки и внедрения новых функций.

Что такое Node.js и зачем он нужен?

Node.js используется для:

  • Создания веб-серверов и API.
  • Разработки real-time приложений (чаты, игры).
  • Создания инструментов командной строки.
  • Обработки потоковых данных.
  • Микросервисной архитектуры.

Важно: перед установкой Node.js убедитесь, что у Вас есть права администратора root на сервере. Также рекомендуется создать резервную копию важных данных перед внесением существенных изменений в систему.

Установка Node.js

Node.js можно установить несколькими способами. Самый простой метод – через стандартные репозитории операционной системы. Этот способ подходит для быстрого старта и тестирования, но может предоставить не самую последнюю версию Node.js. Разберем пример установки для ОС Ubuntu/Debian и CentOS.

В процессе установки будут установлены два основных компонента:

  • Node.js – среда выполнения JavaScript.
  • npm (Node Package Manager) – менеджер пакетов, который позволяет устанавливать дополнительные модули.

Самый простой способ установки через стандартные репозитории. Разберем пример установки для разных ОС.

Ubuntu/Debian:

Обновление списка пакетов

  1. sudo apt update

Установка Node.js и npm

  1. sudo apt install nodejs npm -y

Проверка версии:

  1. node --version
  2. npm --version
CentOS/AlmaLinux/RockyLinux:

Обновление системы:

  1. sudo yum update

Установка epel-release:

  1. sudo yum install epel-release

Установка Node.js и npm:

  1. sudo yum install nodejs npm

Проверка версий

  1. node --version
  2. npm --version

Информируем: при установке через apt или yum Вы можете получить не самую последнюю версию Node.js. Если Вам нужна конкретная или самая свежая версия, рекомендуется использовать nvm.

Установка через nvm (Node Version Manager) предоставляет более гибкий подход к управлению версиями Node.js. Этот инструмент особенно полезен, когда Вам нужно:

  • Работать с разными проектами, требующими разные версии Node.js.
  • Тестировать код на разных версиях Node.js.
  • Легко обновляться до новых версий.
  • Избежать проблем с правами доступа при установке глобальных пакетов.

Процесс установки nvm включает следующие этапы:

  1. Загрузка установочного скрипта.
  2. Настройка переменных окружения.
  3. Установка необходимой версии Node.js.

Процедура установки через nvm (Node Version Manager).

Преимущества использования nvm:

  • Легкое переключение между версиями Node.js.
  • Возможность установки последних версий.
  • Изолированные окружения для разных проектов.
  • Не требует sudo для установки пакетов.
Ubuntu/Debian:

Установка nvm:

  1. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

Перезагрузка профиля shell:

  1. source ~/.bashrc

Просмотр доступных версий:

  1. nvm list-remote

Установка последней версии Node.js:

  1. nvm install node

Установка конкретной версии:

  1. nvm install 22

Переключение между версиями:

  1. nvm use 22

Установка версии по умолчанию:

  1. nvm alias default 22
CentOS/AlmaLinux/RockyLinux:

Установка необходимых зависимостей:

  1. sudo yum install curl git -y

Загрузка и установка nvm:

  1. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

Добавление nvm в текущую сессию:

  1. export NVM_DIR="$HOME/.nvm"
  2. [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
  3. [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

Перезагрузка профиля:

  1. source ~/.bashrc

Проверка установки nvm:

  1. nvm --version

Установка последней версии Node.js:

  1. nvm install node

Или установка конкретной версии:

  1. nvm install 22

Развертывание проекта

Напоминаем: при разработке коммерческих проектов рекомендуется использовать LTS (Long Term Support) версии Node.js для обеспечения стабильности и безопасности.

Настройка веб-сервера (Nginx)

Для работы Node.js приложения в продакшене рекомендуется использовать веб-сервер в качестве обратного прокси. Существует несколько популярных вариантов:

  • Nginx – легковесный и производительный веб-сервер.
  • Apache – надежный и проверенный временем веб-сервер.
  • Caddy – современный веб-сервер с автоматической поддержкой HTTPS.
  • HAProxy – специализированное решение для балансировки нагрузки.

В нашем примере мы рассмотрим настройку Nginx, как одного из самых популярных решений.

Установка Nginx:

Ubuntu/Debian:
  1. sudo apt install nginx -y
CentOS/AlmaLinux/RockyLinux:
  1. sudo yum install nginx -y

Настройка проксирования

  1. sudo nano /etc/nginx/sites-available/your-app

Пример конфигурации Nginx:

server {
    # Указываем порт, на котором Nginx будет слушать входящие соединения
    listen 80;
    
    # Указываем доменное имя сервера
    server_name your-domain.com;

    # Настройка логирования
    # access_log - записывает все успешные обращения к серверу
    access_log /var/log/nginx/your-app.access.log;
    # error_log - записывает ошибки и предупреждения
    error_log /var/log/nginx/your-app.error.log;

    location / {
        # Указываем адрес, куда Nginx будет перенаправлять запросы
        # В данном случае на локальный Node.js сервер на порту 3000
        proxy_pass http://localhost:3000;

        # Указываем версию протокола HTTP
        proxy_http_version 1.1;

        # Настройки для поддержки WebSocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';

        # Передача оригинального хоста в заголовке
        proxy_set_header Host $host;

        # Отключение кеширования
        proxy_cache_bypass $http_upgrade;
        
        # Настройки таймаутов
        # Максимальное время для установки соединения
        proxy_connect_timeout 60s;
        # Максимальное время ожидания отправки данных клиенту
        proxy_send_timeout 60s;
        # Максимальное время ожидания чтения данных от сервера
        proxy_read_timeout 60s;
    }
}

Важно понимать ключевые моменты конфигурации:

  • Проксирование позволяет Node.js приложению работать на внутреннем порту, в то время как Nginx обрабатывает все внешние запросы.
  • Настройки WebSocket необходимы для работы real-time функционала.
  • Правильная настройка логов поможет в отладке проблем.
  • Таймауты защищают сервер от зависших соединений.

Напоминаем: в продакшен-окружении рекомендуется также настроить.

  • Сжатие ответов (gzip).
  • Кеширование статических файлов.
  • SSL/TLS сертификат.
  • Ограничение размера запросов.

Запуск приложения

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

PM2 предоставляет следующие возможности:

  • Автоматический перезапуск приложения при сбоях.
  • Мониторинг ресурсов и логов.
  • Балансировка нагрузки.
  • Управление переменными окружения.
  • Автозапуск при перезагрузке сервера.

Установка PM2:

  1. sudo npm install -g pm2

Запуск приложения:

  1. cd /path/to/your/app
  2. pm2 start app.js

Настройка автозапуска:

  1. pm2 startup
  2. pm2 save

Дополнительно: после настройки автозапуска через PM2 мы рекомендуем.

  1. Перезагрузить сервер и проверить что приложение запустилось.
  2. Проверить статус процесса через pm2 list.
  3. Просмотреть логи через pm2 logs.

Далее будут продемонстрированы основные команды PM2 для управления Node.js приложением.

Запуск приложения:

  1. pm2 start app.js --name "your-app"

Остановка:

  1. pm2 stop "your-app"

Перезапуск:

  1. pm2 restart "your-app"

Просмотр логов:

  1. pm2 logs "your-app"

Мониторинг процессов:

  1. pm2 monit

Заключение

Node.js предоставляет мощный инструментарий для создания современных веб-приложений. При правильной настройке и обслуживании Ваше приложение будет работать стабильно и эффективно. Регулярное обновление компонентов и мониторинг производительности помогут обеспечить безопасность и надежность Вашего сервиса.

Для обеспечения стабильной работы Вашего приложения рекомендуется:

  • Регулярно обновлять Node.js и npm пакеты.
  • Использовать логирование для отслеживания ошибок.
  • Настроить мониторинг системных ресурсов.
  • Регулярно создавать резервные копии.