Node.js — среда выполнения JavaScript, которая используется для запуска кода на стороне сервера. С её помощью вы можете написать любой серверный скрипт для веб-приложений. В этом руководстве мы покажем, как приложение Node.js можно развернуть на сервере Timeweb Cloud с Linux.
Прежде всего необходимо подготовить хост для деплоя веб-приложения. На облачные серверы устанавливаются разные ОС. В этом руководстве мы будем использовать в качестве примера машину с Ubuntu.
Cloud
Сначала получите последние обновления:
sudo apt-get update
Затем установите Node.js:
sudo apt-get install nodejs
И установите npm
для управления пакетами Node.js:
sudo apt-get install npm
Чтобы убедиться в том, что инсталляция ПО прошла успешно, проверьте версии Node.js и npm:
nodejs -v
npm -v
Подробнее о разных методах установки Node.js на Ubuntu мы писали здесь.
Деплой Node.js-приложения начинается с переноса кода проекта на хост. Самый удобный способ сделать это — использовать систему контроля версий Git.
Убедитесь, что на Ubuntu установлен Git:
git --version
Если гита нет, установите его:
sudo apt install git
Допустим, код проекта хранится на GitHub. Клонируйте его на сервер:
git clone https://github.com/contentful/the-timeweb-app.nodejs
После команды git clone
укажите адрес репозитория, в котором хранится проект, чтобы выполнить его клонирование.
Для нормальной работы приложения Node.js деплой должен включать также развёртывание зависимостей — всех пакетов, которые используются в проекте.
Перейдите в корневой каталог вашего проекта и выполните:
npm install
Эта команда проверит файл package.json
в проекте и установит пакеты, которые нужны на продакшене. После их добавления на сервер вы можете запустить приложение с помощью команды:
node app.js
Вместо app.js
укажите имя корневого файла приложения Node.js.
Ваше Node.js-приложение уже работает на сервере. Но стоит вам закрыть терминал, как оно остановится. Есть и другая проблема — когда вы меняете код приложения, эти изменения не отражаются автоматически на сайте.
Решить эту проблему можно с помощью менеджера процессов pm2
. Этот пакет заставит приложение работать в фоновом режиме. Кроме того, менеджер будет отслеживать код и автоматически перезапускать сервер всякий раз, когда вы применяете изменения с помощью директивы --watch
.
Установите pm2
командой:
sudo npm install pm2 -g
Затем запустите сервер Node.js, используя pm2
:
sudo pm2 start app.js --name "web-app" --watch
В примере мы использовали имя "web-app"
. Так будет называться запущенный процесс. Вы можете придумать любое другое имя. Директива --watch
указывает на то, что pm2
необходимо перезапустить приложение при изменении исходного файла. Теперь все обновления, которые вы принесёте в код проекта, будут сразу отображаться в продакшене.
Осталось разобраться ещё с одним моментом — автоматическим стартом веб-приложения при запуске/перезагрузке сервера. Для этого выполните следующие команды:
sudo pm2 startup
sudo pm2 save
Вам нужно только один раз запустить команду startup
, чтобы сгенерировать нужные параметры старта. Команда save
указывает pm2
на необходимость сохранить текущие запущенные процессы.
Теперь сервер будет продолжать работать вне зависимости от того, закроете ли вы терминал. После перезапуска системы все необходимые процессы также будут запускаться в автоматическом режиме.
Вы можете узнать больше о работе pm2
из официальной документации.
Выгодные тарифы на облачные серверы
В этой статье мы успешно выполнили деплой Node.js на хостинг с Ubuntu. Проект работает без сбоев и автоматически обновляется всякий раз при внесении изменений. Однако это был очень простой пример использования Node.js. Он подходит для развёртывания домашних и учебных проектов.
При деплое вам также может понадобиться дополнительная настройка — например, установка SSL-сертификатов или изменение конфигурации Nginx. Окончательный список действий, которые необходимо выполнить для развёртывания приложения на продакшене, зависит от того, какой стек оно использует, какие зависимости и связи имеет — базы данных, веб-серверы, утилиты для автоматизации.
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
Добрый вечер, почему-то не получается обновить версии node.js.
как я вижу по умолчанию ставиться вот такая версия 8.10.0 :((
Добрый день! Возможно, вы используете Ubuntu 18.04? В ее репозиториях последняя версия Node.js как раз 8.10. Попробуйте поставить нужную версию Node.js по этой инструкции. Она написана для Ubuntu 20.04, но должна подойти и для 18 версии.