Развертывание бэкенда Node.js бесплатно

Deploy Your Node.js Backend for Free
Deploy Your Node.js Backend for Free

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

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

1. Контейнеры Back4app

Back4app – это облачная платформа Platform-as-a-Service (PaaS), которая позволяет создавать и размещать веб-приложения различных стеков с помощью интуитивно понятного пользовательского интерфейса, специального инструмента CLI и агента искусственного интеллекта.

Платформа предлагает различные услуги, включая платформу Containers-as-a-Service (CaaS), известную как Back4app Containers.

Контейнеры Back4app – это CaaS-сервис, предлагаемый компанией Back4app, который позволяет управлять и развертывать веб-приложения с помощью контейнеров Docker.

Контейнеры Back4app предлагают мониторинг приложений в режиме реального времени с такими важными показателями, как CPU, RAM, Bandwith, а также журналы приложений, которые помогут вам выявить узкие места и оптимизировать производительность приложения.

Она также предлагает автоматическое развертывание, которое сводит к нулю время простоя при обновлениях. Это достигается за счет того, что новые контейнеры готовы к работе, когда вы развертываете новый коммит или изменяете конфигурацию контейнера, исключая любые перерывы в обслуживании во время развертывания.

Развертывание с помощью контейнеров Back4app – это простой процесс, который включает в себя подключение GitHub-репозитория вашего приложения (Dockerfile включен) к приложению Back4app Github, добавление переменных окружения и нажатие кнопки развертывания.

Как развернуть бэкенд Node.js на контейнерах Back4app?

Чтобы развернуть ваше приложение Node.js в контейнерах Back4app, вам нужно

После того как вы вошли в свой аккаунт Back4app и установили приложение GitHub на свой аккаунт GitHub, предоставьте приложению Back4app доступ к репозиторию, который вы хотите развернуть.

Убедитесь, что ваш репозиторий содержит Dockerfile; ниже приведен пример Dockerfile, который вы можете использовать для вашего приложения Node.js:

# Specify base image
FROM node:18-alpine

# Specify working directory
WORKDIR /app

# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy source code
COPY . .

# Expose port 8080
EXPOSE 8080

# Run the app
CMD ["npm", "start"]

Затем создайте новое приложение Back4app, нажав на кнопку “NEW APP” в правом верхнем углу экрана. Затем выберите опцию Containers as a Service, как показано на изображении ниже.

Создайте новое приложение на Back4app

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

Выберите репозиторий GitHub

Заполните переменные окружения, связанные с вашим приложением, и нажмите кнопку Create App (Создать приложение ).

Заполнение переменных окружения Back4app

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

Если в процессе развертывания возникла ошибка, вы можете позволить агенту Back4app AI проанализировать ошибки из журналов и предложить возможные решения. Кроме того, вы можете обратиться к руководству Back4app по устранению неполадок.

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

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

Бесплатный уровень контейнера Back4app предлагает вам 0,25 процессора, 256 МБ оперативной памяти и 100 ГБ трансфера, что идеально подходит для разработки и обучения. Для производственных приложений лучше перейти на один из платных тарифных планов.

2. Render

Render – это облачная платформа, которая представляет собой решение типа “платформа как услуга” (PaaS) для развертывания веб-приложений различных стеков разработки, включая Node.js.

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

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

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

Render также включает множество функций, среди которых среды предварительного просмотра, специальный REST API, постоянные диски, частные сети и многое другое.

Развертывание приложения на Render включает в себя подключение вашего аккаунта GitHub/GitLab к платформе и настройку деталей развертывания, включая переменные окружения для вашего приложения.

Как развернуть бэкенд Node.js на Render

Чтобы развернуть свое приложение на Render, вам нужна активная учетная запись; если у вас ее нет, вы можете зарегистрироваться бесплатно.

Войдите в свою учетную запись и перейдите на приборную панель. На приборной панели нажмите “Веб-сервисы“.

создать новый веб-сервис

Далее вам будет предложено подключить свой аккаунт GitHub/GitLab к Render или предоставить публичный Git-репозиторий.

Подключение GitHub/GitLab к Render

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

настроить рендеринг

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

Журналы развертывания рендера

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

Бесплатный тарифный план Render предлагает 512 МБ оперативной памяти и 0,1 CPU для ваших веб-сервисов. Если вашему приложению требуется больше ресурсов, вы можете рассмотреть их платные тарифные планы.

3. Fly

Fly – это облачная платформа, обеспечивающая глобальную сеть доставки приложений.

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

Fly предлагает полноценные микро-VM с Linux, известные как “Fly Machines”. Машины Fly имеют относительно быстрое время загрузки – около 300 мс. Вы также можете приостановить работу своих машин, когда они находятся в режиме ожидания, что позволяет оплачивать только те услуги, которые вы потребляете.

Развертывание приложения на Fly включает в себя выполнение нескольких команд с помощью специального инструмента CLI.

Как развернуть бэкенд Node.js на Fly?

Чтобы развернуть свое приложение Node.js на Fly, вам понадобятся:

  • Аккаунт Fly, если у вас его нет, можно зарегистрировать бесплатно.
  • Инструмент командной строки flyctl, установленный на вашем локальном компьютере.

Если в вашей системе не установлен инструмент flyctl CLI, вы можете установить его с помощью следующей команды:

#macOS/Linux
curl -L https://fly.io/install.sh | sh

#windows
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"

Затем войдите в свою учетную запись Fly, выполнив следующую команду:

fly auth login

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

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

fly launch

Когда вы выполните приведенную выше команду, Fly автоматически определит, что вы пытаетесь развернуть приложение Node.js, и настроит развертывание.

Инструмент Fly CLI

Перед развертыванием приложения инструмент CLI отобразит конфигурацию приложения для утверждения. Если конфигурация вас устраивает, вы можете продолжить, ответив на запрос “Y”, или ответить “N”.

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

Конфигурация полета

Однако, в отличие от некоторых других вариантов, о которых пойдет речь в этой статье, Fly требует, чтобы вы добавили информацию о своей карте перед развертыванием приложения. Тем не менее, с вас не будут снимать деньги, пока вы не превысите объем ресурсов в 5 долларов.

4. Amazon Web Services (AWS)

Amazon Web Services (AWS) – провайдер инфраструктуры как услуги (IaaS), предоставляющий основные компоненты вычислительной инфраструктуры через Интернет.

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

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

Это также самая безопасная среда для облачных вычислений, подкрепленная широким набором инструментов для обеспечения безопасности облачных вычислений, включающим более 300 служб и функций безопасности, соответствия и управления, а также поддержку 143 стандартов безопасности и сертификатов соответствия.

Кроме того, AWS – это зрелая платформа с проверенной историей (17 лет) надежности, безопасности и производительности.

Однако развертывание приложения на AWS сложнее, чем на других платформах, таких как Back4app и Render.

Этого можно добиться различными способами, однако в данном руководстве мы рассмотрим самый популярный – Amazon Elastic Compute Cloud (Amazon EC2).

Как развернуть бэкенд Node.js на AWS?

EC2 – это веб-сервис, предоставляемый компанией Amazon, который позволяет арендовать виртуальные серверы, известные как экземпляры, в облаке.

Чтобы создать экземпляр EC2, вам нужна учетная запись AWS; если у вас ее нет, вы можете зарегистрироваться бесплатно.

Войдя в свою учетную запись Amazon, создайте экземпляр EC2 (последний шаг в статье по ссылке выше можно пропустить – он требует подключения к экземпляру EC2 с помощью SSH).

Вы можете проверить только что созданный экземпляр на панели управления EC2 в разделе “Экземпляры”.

Экземпляр AWS EC2

Затем подключитесь к своему экземпляру EC2 с помощью консоли экземпляров EC2. После того как вы выполните шаги, описанные в инструкции по ссылке выше, в вашем браузере должен открыться веб-терминал.

Консоль AWS EC2

Затем перейдите в права пользователя root, выполнив следующую команду:

sudo su -

Выполнение приведенной выше команды переключит пользовательский контекст на пользователя root с повышенными привилегиями.

Эта команда, состоящая из “sudo” для возможностей суперпользователя, “su” для переключения пользователей и дефиса (“-“), обеспечивает загрузку переменных окружения и конфигураций пользователя root.

Затем установите Node Version Manager (NVM), выполнив следующую команду:

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

Затем активируйте NVM в текущем сеансе терминала, выполнив следующую команду:

. ~/.nvm/nvm.sh

Затем установите Node.js с помощью NVM, выполнив следующую команду:

nvm install node

Затем установите Git, выполнив следующую команду:

sudo yum update
sudo yum install git

Вы можете убедиться, что Node.js и Git были успешно установлены на ваш экземпляр EC2, выполнив приведенную ниже команду:

node -v && git -v

Если установка прошла успешно, вы должны увидеть номера версий, выведенные на консоль, как показано на рисунке ниже.

Успешная установка Git и Node.js

Затем подключите SSH-ключ GitHub к вашему экземпляру EC2. После того как вы успешно настроили и добавили SSH-ключ, выполните приведенную ниже команду, чтобы клонировать ваш репозиторий в ваш экземпляр EC2:

git clone <YOUR_APPLICATION_URL>

Приведенная выше команда клонирует ваше приложение в ваш экземпляр EC2.

AWS: добавить github ssh

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

npm install

Затем добавьте переменные окружения, выполнив следующую команду:

nano .env

Приведенная выше команда создаст и откроет пустой файл .env, скопирует ваши переменные окружения, вставит их в файл и нажмет control + X, затем Y, чтобы сохранить и закрыть файл.

Наконец, запустите сценарий запуска вашего приложения, который обычно представляет собой следующую команду:

npm start

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

Бесплатный уровень для экземпляров EC2 в AWS предоставляет 750 часов в месяц для экземпляров t2.micro или t3.micro, работающих под управлением Linux, RHEL или SLES, в зависимости от региона.

Аналогично, для экземпляров Windows предлагается 750 часов в месяц для экземпляров t2.micro или t3.micro в зависимости от региона.

Кроме того, независимо от типа экземпляра, он включает 750 часов в месяц для публичного IPv4-адреса.

Однако бесплатный уровень доступен только для новых клиентов AWS в течение 12 месяцев после даты регистрации в AWS.

5. DigitalOcean

DigitalOcean – это платформа инфраструктуры как услуги (IaaS), которая предоставляет доступ к базовым виртуальным машинам, поддерживающим ваши приложения, позволяя вам настраивать дисковое пространство, выделять память и настраивать сеть.

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

DigitalOcean также обеспечивает сетевую безопасность с помощью облачных брандмауэров, балансировщиков нагрузки, виртуального частного облака, плавающих IP-адресов, DNS, IPv6 и защиты от DDoS.

Развертывание вашего приложения Node.js на DigitalOcean – относительно простой процесс по сравнению с другими вариантами IaaS.

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

Развертывание бэкенда Node.js на дроплексе DigitalOcean?

Чтобы развернуть свое приложение Node.js на платформе, вам потребуется учетная запись DigitalOcean; если у вас ее нет, вы можете зарегистрироваться бесплатно.

Затем войдите в систему и создайте новый проект (или используйте уже существующий).

Создайте новый проект DigitalOcean

На приборной панели проекта нажмите на выпадающий список “Создать” в правом верхнем углу экрана и выберите “Капли“, чтобы создать новую каплю.

Создайте новый дроплет

Затем выберите ближайший к вам регион развертывания для своего дроплета.

Далее выберите ОС “Ubuntu” в качестве образа и “Basic” в качестве типа капли.

Затем выберите желаемые параметры процессора.

Затем выберите “пароль” в качестве метода аутентификации. Также вы можете выбрать SSH в качестве метода аутентификации.

Наконец, выберите “1” в качестве номера вашего дроплета и задайте ему имя хоста.

После заполнения необходимых данных нажмите кнопку “Create Droplet“. Это перенаправит вас на панель управления.

На приборной панели выберите только что созданный дроплет и запустите консоль дроплета, как показано на рисунке ниже.

Запустите консоль дроплета

Запустив консоль дроплета, вы откроете в браузере веб-терминал Ubuntu, как показано на изображении ниже.

DigitalOcean Droplet Console

Затем установите сценарий настройки Node.js, выполнив приведенную ниже команду:

curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

Затем установите Node.js, выполнив приведенную ниже команду:

apt-get install nodejs -y

Затем клонируйте свой репозиторий GitHub с помощью следующей команды:

git clone <YOUR_GITHUB_REPOSITORY_LINK>

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

npm install

Затем добавьте переменные окружения, выполнив следующую команду:

nano .env

Приведенная выше команда создаст и откроет пустой файл .env, скопирует ваши переменные окружения, вставит их в файл и нажмет control + X, затем Y, чтобы сохранить и закрыть файл.

Затем установите PM2, чтобы ваш сервер работал в фоновом режиме:

sudo npm i pm2 -g

Затем запустите свой сервер с PM2, выполнив следующую команду:

pm2 start main.js

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

pm2 startup ubuntu

Теперь ваше приложение запущено и прослушивается на вашем дроплексе (localhost). Чтобы сделать его общедоступным, вы настроите Nginx в качестве обратного прокси.

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

sudo apt install nginx

Прежде чем использовать Nginx, необходимо настроить ufw (Uncomplicated Firewall) в Ubuntu, чтобы обеспечить безопасность приложения и гарантировать, что только авторизованный трафик сможет достичь вашего веб-сервера.

Выполните приведенную ниже команду, чтобы включить ufw:

ufw enable

Затем выполните приведенную ниже команду, чтобы разрешить SSH, HTTP и HTTPS:

ufw allow ssh && ufw allow http && ufw allow https

Приведенная выше команда позволяет брандмауэру (UFW) на вашем сервере Ubuntu разрешить входящие соединения по портам 22 (для SSH), 80 (для HTTP) и 443 (для HTTPS).

Затем выполните приведенную ниже команду, чтобы открыть стандартный файл конфигурации Nginx:

sudo nano /etc/nginx/sites-available/default

Внутри файла конфигурации найдите объект location и замените его блоком кода, приведенным ниже:

location / {
    try_files $uri $uri/ =404;
    proxy_pass http://localhost:5050;#Replace with the port your app is running on
    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;
}

Примечание: Для proxy_pass вы можете заменить значение на любой порт, на котором работает ваше приложение.

Закройте и сохраните файл(control + X, Y, ENTER). Редактирование конфигурационного файла с помощью приведенного выше блока кода настроит ваш обратный прокси таким образом, что при запросах на порт 80 (для HTTP) ваше приложение, работающее на порту 5050 (или порту по умолчанию), будет обрабатывать эти запросы.

Далее выполните приведенную ниже команду, чтобы проверить, правильно ли настроен файл конфигурации Nginx.

sudo nginx -t

Если ваш файл конфигурации настроен правильно, вы должны получить ответ, показанный на изображении ниже.

Тест Nginx

Наконец, перезапустите Nginx, выполнив приведенную ниже команду, чтобы убедиться, что изменения в файле конфигурации вступили в силу:

sudo service nginx restart

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

Бесплатный уровень DigitalOcean предоставляет новым пользователям 200 долларов в виде кредитов для доступа ко всем доступным сервисам.

Сравнение вариантов развертывания

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

ПлатформаКатегорияСредства разработкиРесурсы бесплатного уровняИнформация об оплате
Контейнеры Back4appPaaSDocker, GitHub App, Back4app AI Agent.– 0,25 ПРОЦЕССОР
– 256 МБ оперативной памяти
– Передача данных 100 ГБ
Не требуется
RenderPaaSПриложение GitHub/GitLab, ссылка на публичный репозиторий– 512 МБ оперативной памяти
– 0,1 ПРОЦЕССОР
Не требуется
FlyPaaSИнструмент Fly CLIРесурсы/пользование стоимостью $5Требуется
Amazon Web Services (AWS)IaaSЭкземпляр AWS EC2– 750 часов в месяц работы с экземплярами Linux, RHEL или SLES t2.micro или t3.micro.
– 750 часов в месяц работы экземпляров Windows t2.micro или t3.micro, в зависимости от региона.
– 750 часов в месяц публичного IPv4-адреса.
Требуется
DigitalOceanIaaSКапелька цифрового океана$200 бесплатных кредитов для новых пользователей.Требуется

В целом, PaaS-платформы, такие как Back4app, Render и Fly, лучше всего подходят для приложений, требующих масштабируемости, гибкости и быстрых циклов разработки и развертывания.

С другой стороны, платформы IaaS, такие как DigitalOcean и AWS, лучше всего подходят для приложений, которым требуется больший контроль над базовой инфраструктурой, настраиваемые конфигурации и масштабируемость без необходимости управлять физическим оборудованием.

Заключение

В этой статье вы изучили и узнали, как развернуть приложение Node.js с помощью контейнеров Back4app, Render, Fly, AWS и DigitalOcean.

У каждого из рассмотренных вариантов есть свои преимущества и недостатки. Для платформ PaaS процесс развертывания проще.

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

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

Если вам понравилась эта статья, узнайте также Как создать веб-приложение с базой данных PostgresSQL.


Leave a reply

Your email address will not be published.