Как развернуть Node.js-приложение

В этой статье мы расскажем, что такое Node.js и как его развернуть на вашем сервере.  

Что такое Node.js 

Node.js – это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, которая создана на базе JavaScript-движка Chrome V8. 

Цель Node – предоставить разработчикам JavaScript возможность использовать полный стек, позволяя им кодировать операции на стороне сервера. 

Сценарии его использования включают скрипты на стороне сервера, системы реального времени, потоковые веб-приложения, одностраничные приложения, инструменты для совместной работы и веб-игры.

Node имеет событийно-ориентированную архитектуру с возможностью асинхронного ввода-вывода. Он невероятно быстр благодаря способности компилировать JavaScript в собственный машинный код. Кроме того, Node может обрабатывать огромное количество активных соединений и позволяет разработчикам легко создавать масштабируемые высокопроизводительные приложения.

Основные плюсы Node.js

  • Серверное программирование. Node.js позиционируется как идеальное решение для создания высокопроизводительных серверных приложений. Он предоставляет среду выполнения для создания веб-серверов, API, чат-серверов, приложений реального времени и других серверных приложений.
  • Асинхронное программирование. Одной из главных особенностей Node.js является его асинхронная среда. Он использует неблокирующий ввод-вывод (non-blocking I/O), что позволяет обрабатывать множество запросов одновременно без блокирования других операций. Это делает Node.js эффективным для обработки большого количества запросов в режиме реального времени.
  • Высокая производительность. Как упоминалось ранее, Node работает на высокопроизводительном движке JavaScript от Google. V8 может компилировать и выполнять JavaScript с молниеносной скоростью, главным образом, потому что он компилирует JavaScript в собственный машинный код.

Node также использует цикл событий, который позволяет ему выполнять неблокирующие операции ввода-вывода, несмотря на то что JavaScript – это однопоточный язык программирования. 

Все эти параметры делают Node одним из самых быстрых вариантов на рынке.

  • Масштабируемость. Одним из ключевых преимуществ Node.js является его способность масштабироваться. 

Приложения Node могут масштабироваться как по горизонтали, так и по вертикали. Горизонтальное масштабирование достигается за счет добавления дополнительных узлов к существующей системе, а вертикальное масштабирование означает добавление дополнительных ресурсов к конкретному узлу. 

Отличные возможности масштабирования платформы делают ее подходящей как для стартапов, так и для крупных компаний с десятками миллионов ежедневных пользователей – например, LinkedIn, Netflix и PayPal.

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

  • Легко обучаема. Основа Node на JavaScript позволяет чрезвычайно легко освоить его разработчикам, которые уже знают основы JavaScript. Он не требует сложного обучения, и его можно освоить всего за несколько недель. Простота Node делает его идеальным для всех типов проектов.
  • Ускоренный выход на рынок. Простота Node и огромное количество пакетов npm значительно сокращают время выхода на рынок. На GitHub и других платформах есть множество проектов с открытым исходным кодом, которые можно использовать в качестве шаблонов для максимально быстрого запуска вашего проекта.

Деплой Node.js-приложения: этапы

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

Это финальная часть в разработке, когда ваше приложение готово к использованию в боевой среде.

Деплой включает в себя несколько основных этапов:

  1. Перенос кода. Код вашего приложения переносится на сервер. Обычно это делается с использованием системы контроля версий (например, Git) и клонирования репозитория на сервер.
  2. Установка зависимостей. Все необходимые пакеты и библиотеки, которые используются в приложении, должны быть установлены на сервере. Это позволяет приложению корректно работать.
  3. Запуск приложения. После переноса и установки зависимостей, приложение запускается на сервере и становится доступным для пользователей.

Шаг 1. Подготовьте хост для деплоя

Прежде всего необходимо подготовить хост для деплоя веб-приложения. 

Если у вас ещё нет подходящего сервера, то обратите внимание на компанию RU-CENTER, которая предоставляет мощные виртуальные серверы на Linux, обеспечивая высочайший уровень производительности и надежности. 

Наши серверы оснащены SSD-дисками для быстрой загрузки и обработки данных, а аппаратная виртуализация KVM гарантирует эффективное использование ресурсов. 

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

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

Важно! В этом руководстве мы будем использовать машину с операционной системой Ubuntu.

  1. Перед началом установки Node.js и npm важно убедиться, что пакеты вашей операционной системы актуальны. Выполните следующую команду для обновления списка доступных пакетов:

sudo apt-get update

  1. Далее установим Node.js. 

Чтобы установить Node.js в Ubuntu, можно воспользоваться командой apt-get. Однако стоит учесть, что в стандартных репозиториях Ubuntu может быть устаревшая версия Node.js. 

В таком случае вы можете установить более новую версию с помощью пакета «nodejs», который включает в себя движок Node.js и утилиту npm:

sudo apt-get install nodejs

  1. Если вы установили Node.js через стандартный репозиторий, то вам потребуется отдельно установить npm.  

Важно! npm (Node Package Manager) используется для управления пакетами Node.js.

Установите npm, прописав следующую команду:

sudo apt-get install npm

  1. Чтобы убедиться, что установка прошла успешно, введите:

nodejs -v

npm -v

Или: 

node --version  

npm --version

В выводе вы получите версии Node.js и npm.

Теперь ваш сервер готов к выполнению Node.js-приложений. Вы можете приступить к установке зависимостей и развертыванием вашего приложения.

Шаг 2. Перенесите код на сервер

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

  1. Прежде всего, убедитесь, что Git установлен на вашем сервере Ubuntu. Вы можете выполнить команду:

git --version

Если Git уже установлен, в выводе появится номер версии. Если же нет, то пропишите следующую команду для его установки:

sudo apt install git

  1. Приступите к клонированию репозитория.

Предположим, что код вашего проекта хранится на GitHub (или на другой платформе управления версиями). Для клонирования репозитория на ваш сервер используйте команду git clone, указав адрес репозитория после нее. 

Например, для клонирования репозитория с GitHub:

git clone https://github.com/имя_пользователя/ваш-репозиторий

Здесь https://github.com/имя_пользователя/ваш-репозиторий – это URL вашего репозитория на GitHub. Команда git clone клонирует весь код проекта на ваш сервер.

  1. Перейдите в директорию проекта с помощью команды cd:

cd путь-к-вашему-проекту

Теперь код вашего проекта успешно клонирован на сервер. 

Шаг 3. Установка зависимостей

После успешного клонирования вашего Node.js-проекта на сервер и перехода в его директорию, необходимо установить зависимости. Под этим подразумевается установка всех необходимых пакетов для вашего проекта. 

Это можно сделать с помощью npm, которую вы установили в шаге 1.  

Важно! Вы обязательно должны находиться в той директории, где расположены файлы вашего Node.js-проекта, включая файл package.json.

  1. Установите зависимости, прописав:

npm install

Эта команда просматривает файл «package.json», который находится в корневой директории вашего проекта, и устанавливает все пакеты из раздела «Dependencies». Они будут загружены и установлены в папку «node_modules».

В зависимости от количества зависимостей установка может занять некоторое время.

  1. Теперь, когда все зависимости установлены, вы можете запустить ваше приложение: 

node myapp.js

Где «myapp.js» – это имя вашего корневого файла приложения.

После выполнения этих шагов ваше Node.js-приложение успешно запустится на сервере и будет готово к обслуживанию запросов.

Шаг 4. Управление запуском и обновлением приложения

Используя менеджер процессов pm2, вы можете решить две распространенные проблемы: остановку приложения при закрытии терминала и необходимость ручного перезапуска приложения после внесения изменений в код. 

Вот как выполнить эту настройку:

  1.  Выполните следующую команду, чтобы установить pm2:

sudo npm install pm2 -g

Она позволит использовать pm2 в любом месте на вашем сервере.

  1. Для запуска вашего Node.js-приложения с использованием pm2 пропишите:

sudo pm2 start myapp.js --name "myweb-app" --watch

Где:

  • «myapp.js» – это имя вашего основного файла приложения. Замените его на фактическое имя вашего файла, если оно отличается.
  • «--name "myweb-app"» – это имя, под которым процесс будет запущен. Вы можете выбрать любое имя, которое вам удобно.
  • «--watch» – это директива, которая указывает pm2 следить за изменениями файлов и автоматически перезапускать приложение при их обнаружении. С помощью неё вы сможете мгновенно видеть изменения в коде.
  1. Чтобы ваше Node.js-приложение автоматически запускалось при старте или перезагрузке сервера, выполните следующие команды:

   sudo pm2 startup

   sudo pm2 save

Что делают эти команды:

  • «pm2 startup» генерирует команду, которую нужно выполнить, чтобы настроить автозапуск pm2.
  • «pm2 save» сохраняет текущий список запущенных процессов pm2.

Теперь ваше Node.js-приложение работает в фоновом режиме, а pm2 следит за ним. Оно будет автоматически перезапускаться при изменениях в коде и запускаться после перезагрузки сервера, даже если вы закроете терминал. Это делает процесс деплоя и управления Node.js-приложением более удобным и надежным.

В статье мы рассмотрели важные шаги и методы для успешного деплоя Node.js-приложения. 

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

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

Всё ещё остались вопросы?