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 пакети.
  • Використовувати логування для відстеження помилок.
  • Налаштувати моніторинг системних ресурсів.
  • Регулярно створювати резервні копії.