Хостинг node js: Лучшие хостинги с поддержкой Node.js

Содержание

хостинг, REPL, работа с консолью, модули / Хабр

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

[Советуем почитать] Другие части цикла

Часть 1: Общие сведения и начало работы
Часть 2: JavaScript, V8, некоторые приёмы разработки
Часть 3: Хостинг, REPL, работа с консолью, модули
Часть 4: npm, файлы package.json и package-lock.json
Часть 5: npm и npx
Часть 6: цикл событий, стек вызовов, таймеры
Часть 7: асинхронное программирование
Часть 8: Руководство по Node.js, часть 8: протоколы HTTP и WebSocket
Часть 9: Руководство по Node.js, часть 9: работа с файловой системой
Часть 10: Руководство по Node.js, часть 10: стандартные модули, потоки, базы данных, NODE_ENV

Полная PDF-версия руководства по Node. js


Хостинг для Node.js-приложений

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

▍Самый простой вариант хостинга: локальный туннель

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

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

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

Используя ngrok, достаточно выполнить команду вида ngrok PORT и указанный вами порт будет доступен из интернета. У вас при этом, если вы пользуетесь бесплатной версией сервиса, будет адрес в домене ngrok.io. Если же вы решите оформить платную подписку, вы сможете использовать собственные доменные имена, и, кроме того, сможете повысить безопасность решения (пользуясь ngrok, вы открываете доступ к своему компьютеру всему интернету).

Ещё один инструмент, который можно использовать для организации локальных туннелей, называется localtunnel.

▍Среды для развёртывания Node.js-проектов, не требующие настройки


Glitch

Glitch — это интерактивная среда и платформа для быстрой разработки приложений, которая позволяет разворачивать их в поддоменах glitch.com. Собственные домены пользователей эта платформа пока не поддерживает, при работе с ней существуют некоторые ограничения, но она отлично подходит для работы над прототипами приложений. Дизайн Glitch выглядит довольно забавно (пожалуй, это можно записать в плюсы данной платформы), но это не некая «игрушечная», ограниченная донельзя среда. Здесь к вашим услугам возможность работы с Node.js, CDN, защищённое хранилище для конфиденциальной информации, возможности обмена данными с GitHub и многое другое.

Проектом Glitch занимается та же компания, которая стоит за FogBugz и Trello (она же является одним из создателей StackOverflow). Я часто использую эту платформу для демонстрации приложений.

Codepen

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

▍Бессерверные среды

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

Подобный подход к развёртыванию приложений ещё называют FAAS (Functions As A Service, функция как услуга).

Вот пара популярных решений в этой области:

  • Фреймворк Serverless.
  • Библиотека Standard.

Оба эти проекта предоставляют разработчику некий уровень абстракции, позволяющий публиковать приложения на различных FAAS-платформах, например, на Amazon AWS Lambda, на Microsoft Azure и на Google Cloud.

▍PAAS-решения

PAAS (Platform As A Service, платформа как услуга) — это платформы, которые берут на себя заботу обо многих вещах, о которых, в обычных условиях, должен заботиться разработчик, развёртывающий приложение.

Zeit Now

Zeit — это интересный вариант для развёртывания приложений. Развёртывание, при использовании этой платформы, сводится к вводу в терминале команды now. Существует бесплатная версия Zeit, при работе с ней действуют некоторые ограничения. Есть и платная, более мощная версия этой платформы. Пользуясь Zeit, вы можете попросту не думать о том, что для работы вашего приложения нужен сервер. Вы просто разворачиваете приложение, а всё остальное находится в ведении этой платформы.

Nanobox

Создатели платформы Nanobox, в возможности которой входит развёртывание Node.js-приложений, называют её PAAS V2.

Heroku

Heroku — это ещё одна замечательная платформа для размещения Node.js-приложений. Вот хорошая статья о том, как с ней работать.

Microsoft Azure

Azure — это облачная платформа от Microsoft. В её документации есть раздел, посвящённый Node.js-приложениям.

Платформа Google Cloud

Google Cloud представляет собой замечательную среду для развёртывания Node.js-приложений. Вот соответствующий раздел её документации.

▍VPS-хостинг

Существует множество платформ, предоставляющих услуги VPS-хостинга. Общей чертой таких платформ является тот факт, что разработчик получает в своё распоряжение виртуальный сервер, самостоятельно устанавливает на него операционную систему (Linux или Windows), самостоятельно развёртывает приложения.

Среди платформ, предоставляющих VPS-услуги, которых существует великое множество, можно отметить следующие, которыми я пользовался и которые мог бы порекомендовать другим:

  • Digital Ocean
  • Linode
  • Amazon Web Services (в частности, хотелось бы отметить сервис AWS Elastic Beanstalk, облегчающий развёртывание приложений и управление ресурсами AWS).

От себя добавим, что компания RUVDS тоже оказывает услуги VPS-хостинга. Мы лицензированы ФСТЭК, наши клиенты застрахованы AIG, у нас есть четыре дата-центра в разных странах. Есть собственный дата-центр RUCLOUD уровня TIER 3 в г. Королеве, Московская область, а также гермозоны в дата-центрах Deltalis (Швейцария), Лондоне Equinix LD8 (Великобритания), и ММТС-9 (Москва, Россия). Все гермозоны отвечают уровню надежности не ниже TIER 3.

Партнерами компании являются АО «ФИНАМ», финансовая группа «БКС», Национальный расчетный депозитарий (Московская биржа), АО «ВЦИОМ», компания «Гарс-Телеком», оператор такси Gett, оператор доставки Delivery Club и многие другие.

▍Обычный сервер

Ещё одно решение в области хостинга представляет собой покупку (или аренду, например, с помощью службы Vultr Bare Metal) обычного сервера, установку на него Linux и другого ПО, подключение его к интернету и размещение на нём Node.js-приложений.

Хостинг — тема огромная, но, надеемся, материалы этого раздела позволят вам выбрать именно то, что вам нужно. Теперь переходим к рассказу о работе с Node.js в режиме REPL.

Использование Node.js в режиме REPL

Аббревиатура REPL расшифровывается как Read-Evaluate-Print-Loop (цикл «чтение — вычисление — вывод»). Использование REPL — это отличный способ быстрого исследования возможностей Node. js.

Как вы уже знаете, для запуска скриптов в Node.js используется команда node, выглядит это так:

node script.js

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

node

Если вы попробуете сейчас ввести такую команду в своём терминале, то в результате увидите примерно следующее:

> node
>

Node.js теперь находится в режиме ожидания. Система ждёт, что мы введём в командной строке какой-нибудь JavaScript-код, который она будет выполнять.

Для начала попробуем что-нибудь очень простое:

> console.log('test')
test
undefined
>

Тут мы предложили Node.js выполнить команду, используемую для вывода данных в консоль. Первое значение, test, представляет собой то, что вывела команда console.log('test'). Второе значение, undefined, это то, что возвратила функция console.log().

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

▍Автозавершение команд с помощью клавиши Tab

REPL — это интерактивная среда. Если в процессе написания кода нажать клавишу Tab на клавиатуре, REPL попытается автоматически завершить ввод, подобрав, например, подходящее имя уже объявленной вами переменной или имя некоего стандартного объекта.

▍Исследование объектов JavaScript

Введите в командную строку имя какого-нибудь стандартного объекта JavaScript, например — Number, добавьте после него точку и нажмите клавишу Tab.

REPL выведет список свойств и методов объекта, с которыми может взаимодействовать разработчик:

Исследование объекта Number

▍Исследование глобальных объектов

Для того чтобы узнать, с какими глобальными объектам Node. js вы можете работать, введите в терминале команду

global. и нажмите Tab.

Исследование глобальных объектов

▍Специальная переменная _

Переменная _ (знак подчёркивания) хранит результат последней выполненной операции. Эту переменную можно использовать в составе команд, вводимых в консоль.

▍Команды, начинающиеся с точки

В режиме REPL можно пользоваться некоторыми специальными командами, которые начинаются с точки. Вот они:

  • Команда .help выводит справочные сведения по командам, начинающимся с точки.
  • Команда .editor переводит систему в режим редактора, что упрощает ввод многострочного JavaScript-кода. После того, как находясь в этом режиме, вы введёте всё, что хотели, для запуска кода воспользуйтесь командой Ctrl+D.
  • Команда .break позволяет прервать ввод многострочного выражения.
    Её использование аналогично применению сочетания клавиш Ctrl+C.
  • Команда .clear очищает контекст REPL, а так же прерывает ввод многострочного выражения.
  • Команда .load загружает в текущий сеанс код из JavaScript-файла.
  • Команда .save сохраняет в файл всё, что было введено во время REPL-сеанса.
  • Команда .exit позволяет выйти из сеанса REPL, она действует так же, как два последовательных нажатия сочетания клавиш Ctrl+C.

Надо отметить, что REPL распознаёт ввод многострочных выражений и без использования команды .editor.

Например, мы начали вводить код итератора:

[1, 2, 3].forEach(num => {

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

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

... console.log(num)
... })

Нажатие на Enter после ввода последней скобки приведёт к выполнению выражения. Если ввести в этом режиме .break, ввод будет прерван и выражение выполнено не будет.

Режим REPL — полезная возможность Node.js, но область её применения ограничена небольшими экспериментами. Нас же интересует нечто большее, чем возможность выполнить пару команд. Поэтому переходим к работе с Node.js в обычном режиме. А именно, поговорим о том, как Node.js-скрипты могут принимать аргументы командной строки.

Работа с аргументами командной строки в Node.js-скриптах

При запуске Node.js-скриптов им можно передавать аргументы. Вот обычный вызов скрипта:

node app.js

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

node app.js flavio

Во втором — так:

node app.js name=flavio

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

Так, для того, чтобы получить доступ к аргументам командной строки, используется стандартный объект Node.js process. У него есть свойство argv, которое представляет собой массив, содержащий, кроме прочего, аргументы, переданные скрипту при запуске.

Первый элемент массива argv содержит полный путь к файлу, который выполняется при вводе команды node в командной строке.

Второй элемент — это путь к выполняемому файлу скрипта.

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

Перебор аргументов, имеющихся в argv (сюда входят и путь к node, и путь к выполняемому файлу скрипта), можно организовать с использованием цикла forEach:

process. argv.forEach((val, index) => {
  console.log(`${index}: ${val}`)
})

Если два первых аргумента вас не интересуют, на основе argv можно сформировать новый массив, в который войдёт всё из argv кроме первых двух элементов:

const args = process.argv.slice(2)

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

node app.js flavio

Обратиться к этому аргументу можно так:

const args = process.argv.slice(2)
args[0]

Теперь попробуем воспользоваться конструкцией вида ключ-значение:

node app.js name=flavio

При таком подходе, после формирования массива args, в args[0] окажется строка name=flavio. Прежде чем пользоваться аргументом, эту строку надо разобрать. Самый удобный способ это сделать заключается в использовании библиотеки minimist, которая предназначена для облегчения работы с аргументами командной строки:

const args = require('minimist')(process.argv.slice(2))
args['name'] //flavio

Теперь рассмотрим вывод данных в консоль.

Вывод данных в консоль с использованием модуля console

Стандартный модуль Node.js console даёт разработчику массу возможностей по взаимодействию с командной строкой во время выполнения программы. В целом, это — то же самое, что объект console, используемый в браузерном JavaScript. Пожалуй, самый простой и самый широко используемый метод модуля console — это console.log(), который применяется для вывода передаваемых ему строковых данных в консоль. При этом, если передать ему объект, то он, перед выводом, будет преобразован к своему строковому представлению.

Методу console. log() можно передавать несколько значений:

const x = 'x'
const y = 'y'
console.log(x, y)

После выполнения этой последовательности инструкций в консоль попадёт и значение x, и значение y.

Для формирования сложных строк команда console.log() поддерживает использование подстановочных символов, которые, при выводе данных, заменяются на соответствующие им значения в порядке очерёдности.

Например, вот команда, которая выводит текст My cat has 2 years:

console.log('My %s has %d years', 'cat', 2)

Рассмотрим особенности подстановочных символов:

  • %s форматирует значение в виде строки.
  • %d или %i форматируют значение в виде целого числа.
  • %f форматирует значение в виде числа с плавающей точкой.
  • %O используется для вывода строковых представлений объектов.

Вот ещё один пример использования подстановочных символов:

console.log('%O', Number)

▍Очистка консоли

Для очистки консоли используется команда console.clear() (её поведение в разных терминалах может различаться).

▍Подсчёт элементов

Сейчас мы рассмотрим полезный метод console.count(). Взгляните на этот код:

const x = 1
const y = 2
const z = 3
console.count(
  'The value of x is ' + x + ' and has been checked .. how many times?'
)
console.count(
  'The value of x is ' + x + ' and has been checked .. how many times?'
)
console.count(
  'The value of y is ' + y + ' and has been checked .. how many times?'
)

Метод count() подсчитывает количество выводов строк и выводит результат рядом с ними.
Используя этот метод можно, в следующем примере, посчитать яблоки и апельсины:

const oranges = ['orange', 'orange']
const apples = ['just one apple']
oranges. forEach(fruit => {
  console.count(fruit)
})
apples.forEach(fruit => {
  console.count(fruit)
})

▍Вывод в консоль результатов трассировки стека

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

console.trace()

Вот пример её использования:

const function2 = () => console.trace()
const function1 = () => function2()
function1()

Вот что произошло, когда я запустил этот код в режиме REPL:

Trace
    at function2 (repl:1:33)
    at function1 (repl:1:25)
    at repl:1:1
    at ContextifyScript.Script.runInThisContext (vm.js:44:33)
    at REPLServer.defaultEval (repl.js:239:29)
    at bound (domain.js:301:14)
    at REPLServer.runBound [as eval] (domain.js:314:12)
    at REPLServer. onLine (repl.js:440:10)
    at emitOne (events.js:120:20)
    at REPLServer.emit (events.js:210:7)

▍Измерение времени, затраченного на выполнение некоего действия

Измерить время, которое занимает, например, выполнение некоей функции, можно с использованием методов console.time() и console.timeEnd(). Выглядит это так:

const doSomething = () => console.log('test')
const measureDoingSomething = () => {
  console.time('doSomething()')
  //вызываем функцию и замеряем время, необходимое на её выполнение
  doSomething()
  console.timeEnd('doSomething()')
}
measureDoingSomething()

▍Работа с stdout и stderr

Как мы уже видели, команда console.log() отлично подходит для вывода сообщений в консоль. При её применении используется так называемый стандартный поток вывода, или stdout.

Команда console.error() выводит данные в стандартный поток ошибок, stderr. Данные, отправляемые в stderr, попадают в консоль, хотя то, что выводится в этот поток, можно, например, перенаправить в файл журнала ошибок.

▍Использование цвета при выводе данных в консоль

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

console.log('\x1b[33m%s\x1b[0m', 'hi!')

Если выполнить эту команду, например, в режиме REPL, текст hi будет выведен жёлтым цветом.
Такой подход, однако, не особенно удобен. Для вывода в консоль цветных надписей удобно будет воспользоваться специализированной библиотекой, например — chalk. Эта библиотека, помимо цветового форматирования текстов, поддерживает и другие способы их стилизации. Например, с её помощью можно оформить текст полужирным, курсивным или подчёркнутым шрифтом.

Для её установки из npm воспользуйтесь такой командой:

npm install chalk

Пользоваться ей можно так:

const chalk = require('chalk')
console. log(chalk.yellow('hi!'))

Пользоваться командой chalk.yellow() гораздо удобнее, чем escape-последовательностями, да и текст программы при таком подходе читать гораздо легче.

Для того чтобы узнать подробности о chalk, посмотрите страницу этой библиотеки на GitHub.

▍Создание индикатора выполнения операции

Индикатор выполнения операции (progress bar) может пригодиться в разных ситуациях. Для создания индикаторов выполнения, работающих в консоли, можно воспользоваться пакетом progress. Установить его можно так:

npm install progress

Ниже показан пример кода, в котором создаётся индикатор, который можно использоваться для вывода сведений о некоей задаче, состоящей из 10 шагов. В нашем случае на выполнение каждого шага уходит 100 мс. После того, как индикатор заполнится, вызывается команда clearItnerval() и выполнение программы завершается.

const ProgressBar = require('progress')
const bar = new ProgressBar(':bar', { total: 10 })
const timer = setInterval(() => {
  bar.tick()
  if (bar.complete) {
    clearInterval(timer)
  }
}, 100)

▍Приём пользовательского ввода из командной строки

Как сделать приложения командной строки, написанные для платформы Node.js, интерактивными? Начиная с 7 версии Node.js содержит модуль readline, который позволяет принимать данные из потоков, которые можно читать, например, из process.stdin. Этот поток, во время выполнения Node.js-программы, представляет собой то, что вводят в терминале. Данные вводятся по одной строке за раз.

Рассмотрим следующий фрагмент кода:

const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
})
readline.question(`What's your name?`, (name) => {
  console.log(`Hi ${name}!`)
  readline.close()
})

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

Метод question() выводит то, что передано ему в качестве первого параметра (то есть — вопрос, задаваемый пользователю) и ожидает завершения ввода. После нажатия на Enter он вызывает коллбэк, переданный ему во втором параметре и обрабатывает то, что было введено. В этом же коллбэке мы закрываем интерфейс readline.

Модуль readline поддерживает и другие методы, подробности о них вы можете узнать в документации, ссылка на которую приведена выше.

Если вам, с использованием этого механизма, надо запросить у пользователя пароль, то лучше не выводить его, в ходе ввода, на экран, а показывать вместо введённых символов символ звёздочки — *.

Для того чтобы это сделать, можно воспользоваться пакетом readline-sync, устройство которого похоже на то, как устроен модуль readline, и который поддерживает подобные возможности сразу после установки.

Есть и ещё один пакет, предоставляющий более полное и абстрактное решение подобной проблемы. Это пакет inquirer. Установить его можно так:

npm install inquirer

С его использованием вышеприведённый пример можно переписать следующим образом:

const inquirer = require('inquirer')
var questions = [{
  type: 'input',
  name: 'name',
  message: "What's your name?",
}]
inquirer.prompt(questions).then(answers => {
  console.log(`Hi ${answers['name']}!`)
})

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

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

Система модулей Node.js, использование команды exports

Поговорим о том, как использовать API module.exports для того, чтобы открывать доступ к возможностям модулей другим файлам приложения. В Node.js имеется встроенная система модулей, каждый файл при этом считается самостоятельным модулем. Общедоступный функционал модуля, с помощью команды require, могут использовать другие модули:

const library = require('./library')

Здесь показан импорт модуля library.js, файл которого расположен в той же папке, в которой находится файл, импортирующий его.

Модуль, прежде чем будет смысл его импортировать, должен что-то экспортировать, сделать общедоступным. Ко всему, что явным образом не экспортируется модулем, нет доступа извне. Собственно говоря, API module.exports позволяет организовать экспорт того, что будет доступно внешним по отношению к модулю механизмам.

Экспорт можно организовать двумя способами.

Первый заключается в записи объекта в module.exports, который является стандартным объектом, предоставляемым системой модулей. Это приводит к экспорту только соответствующего объекта:

const car = {
  brand: 'Ford',
  model: 'Fiesta'
}
module.exports = car
//..в другом файле
const car = require('./car')

Второй способ заключается в том, что экспортируемый объект записывают в свойство объекта exports. Такой подход позволяет экспортировать из модуля несколько объектов, и, в том числе — функций:

const car = {
  brand: 'Ford',
  model: 'Fiesta'
}
exports.car = car

То же самое можно переписать и короче:

exports.car = {
  brand: 'Ford',
  model: 'Fiesta'
}

В другом файле воспользоваться тем, что экспортировал модуль, можно так:

const items = require('. /items')
items.car

Или так:

const car = require('./items').car

В чём разница между записью объекта в module.exports и заданием свойств объекта exports?

В первом экспортируется объект, который записан в module.exports. Во втором случае экспортируются свойства этого объекта.

Итоги

Сегодня мы поговорили о хостингах для Node.js-приложений, о REPL, о работе с командной строкой, о системе модулей Node.js. В следующий раз мы начнём обстоятельный разговор об npm, и, в частности, рассмотрим особенности файлов package.json и package-lock.json.

Уважаемые читатели! Какие хостинги вы используете для своих Node.js-приложений?

Развёртывание приложения на Node.js

Node или Node.js — серверная реализация языка программирования JavaScript, основанная на движке V8.  

Поддержка Node.js стала доступна вместе с Node.js-селектором на всех тарифных планах на новых серверах (пожалуйста, о наличии python-селектора на вашем сервере уточняйте у специалистов технической поддержки). 

Рассмотрим развёртывание приложения на Node.js, использующего веб-фреймворк Express.js и БД MySQL (при помощи модуля mysql). 

1. В панели управления хостингом (cPanel) выбираем в разделе «Программное обеспечение» пункт «Настройка Node.js приложений»: 


2. В появившемся окне нажимаем на кнопку “Создать приложение”: 


3. Выбираем требуемую версию Node.js, режим работы приложения (development или production), указываем корневой каталог приложения (будет создан в корне вашего аккаунта), URL приложения (адрес, на котором будет запущено приложение), а также файл запуска приложения. После нажимаем на кнопку “Создать”: 


Попадаем в окно редактирования настроек приложения, к нему вернёмся позже.

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

5. Если ваше приложение использует базу данных MySQL, то создаём её в cPanel в пункте «Мастер баз данных MySQL» раздела «Базы данных»: 


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

6. Переходим обратно на страницу редактирования Node.js приложения (если закрыли её после пункта 3, то можно нажать на соответствующий значок справа от приложения в списке): 


7. Устанавливаем модули, требуемые для запуска приложения, указанные в файле package.json в директории с проектом (тут же при необходимости можем и отредактировать этот файл), нажатием на кнопку “Установить NPM пакеты”: 


Если при установке вы получаете ошибку о нехватке ОЗУ (в связи с превышение лимита ресурсов вашего тарифного плана), то установку можно выполнить по SSH командой следующего вида:
cloudlinux-selector install-modules —json —interpreter nodejs —user имя_вашего_системного_пользователя —app-root /полный/путь/к/приложению

8. Если вам требуется выполнить какие-либо дополнительные команды в консоли, требующие интерпретатор node, то после подключения по SSH сначала следует ввести команду для входа в виртуальное окружение, указанную в верхней части страницы настроек приложения. После всех действий перезапускаем приложение: 


9. Ваше приложение доступно по адресу, который вы указали при его создании: 


Итоговая структура директории проекта, используемого в этом примере: 

.
├── index.js
├── node_modules -> /home/yourdoma/nodevenv/test_app/12/lib/node_modules
├── package.json
├── public
│   ├── favicon.ico
│   └── images
│       └── hosterlogo.png
├── tmp
│   └── restart.txt
└── views
    └── index.pug

Код проекта доступен в архиве.

К спискуНазад

10 лучших хостинговых платформ Node.js на 2023 год (бесплатно + платно)

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

Всего мы рассмотрим следующие варианты:

  1. Хостинг A2 #
  2. HostGator #
  3. Героку #
  4. Веб-сервисы Amazon #
  5. DigitalOcean #
  6. Глюк #
  7. Облачная платформа Google #
  8. Microsoft Azure #
  9. Платформа.sh #
  10. NodeChef #

Продолжайте читать, чтобы узнать больше о каждой платформе!

Торопитесь? Вот краткое изложение наших выводов:

Лучший хостинг Node.js на рынке
Хост Цена от Платить за использование? * Облачная?
Хостинг A2 5,99 $
ХостГатор 23,95 $
Героку $5
АВС $0
DigitalOcean $4
Глюк $0
Облачная платформа Google $0
Microsoft Azure $0
Платформа. ш н/д
NodeChef $9

Вас интересуют другие темы веб-хостинга?:

1. A2 Hosting (www.A2Hosting.com)

A2 Hosting — один из немногих «традиционных» хостингов, предлагающих выделенный пакет хостинга Node.js. То есть вы обычно ищете облачные или выделенные варианты для Node.js, но хостинг A2 позволяет вам использовать их общие планы.

Это делает A2 Hosting весьма доступным вариантом, с планами, начинающимися с $5,99 в месяц для:

  • Неограниченное количество веб-сайтов
  • Неограниченное количество баз данных
  • Неограниченное хранение и передача
  • Бесплатный SSL-сертификат
  • cPanel для управления сервером

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

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

2. HostGator (www.HostGator.com)

HostGator — имя нарицательное, когда речь заходит о веб-хостинге в целом, но, несмотря на его популярность, вы можете не ассоциировать его конкретно с лучшими провайдерами хостинга Node.js. Вероятно, это связано с тем, что HostGator не рекламирует свой хостинг Node.js в той же степени, что и другие пакеты хостинга. Возможно, они не видят в этом большой привлекательности, но независимо от их собственного бизнес-обоснования они предлагают хостинг Node.js как часть своих планов VPS — и их планы VPS первоклассны!

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

План Snappy 2000 — это их вариант VPS начального уровня, поддерживающий Node.js, и он предоставит вам некоторые из следующих преимуществ:

  • 2 ГБ ОЗУ
  • Твердотельный накопитель на 120 ГБ
  • SSL-сертификат LetsEncrypt
  • Выносное резервное копирование данных вашего частного сервера каждую неделю
  • Размещайте неограниченное количество доменов, создавайте неограниченное количество адресов электронной почты, баз данных, FTP-аккаунтов и т. д.

HostGator также упрощает масштабирование по мере роста, добавляя больше ОЗУ, ЦП или дискового пространства, но план Snappy 2000 является хорошим стартом для большинства людей. Он начинается с 23,95 долларов в месяц и поставляется с 30-дневной гарантией возврата денег.

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

3. Heroku (www.Heroku.com)


Heroku — это платформа облачных приложений, которая предлагает дешевых хостингов Node.js всего за 5 долларов в месяц. Это довольно большая ничья сама по себе. Конечно, вы получаете то, за что платите, и есть некоторые ограничения. Если вы хотите заняться серьезным проектом Node.js, вам стоит рассмотреть один из их планов более высокого уровня. Однако, если вы просто ищете дешевый хостинг Node.js, чтобы поиграть с ним, это хорошее место для начала!

Итак, каковы ограничения для плана хостинга Heroku Node.js начального уровня? А именно:

  • 512Мб памяти
  • Засыпает после 30 минут бездействия
  • Нет бесплатного сертификата SSL
  • Поставляется с ограничением в 1000 «динамических часов»

Если эти ограничения мешают вашим планам, планы более высокого уровня Heroku по-прежнему могут быть доступными, начиная всего с 7 долларов за следующий план выше начального уровня. За эти дополнительные 2 доллара в месяц количество типов процессов увеличивается с двух до десяти, и вы получаете бесплатный SSL-сертификат для своего личного домена.

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

Вы, наверное, слышали об Amazon Web Services, потому что они работают так же, как… весь Интернет. Ладно, это немного преувеличение, но это очень, очень популярно.

Благодаря множеству интегрированных сервисов AWS является отличным вариантом для размещения приложений Node.js.

Несмотря на то, что существует множество различных сервисов, вы, скорее всего, захотите начать с Elastic Beanstalk, который «упрощает развертывание, управление и масштабирование веб-приложений Node.js с помощью Amazon Web Services».

Вам просто нужно загрузить свой код, а затем AWS выполнит развертывание и подготовку. Кроме того, за сервис Elastic Beanstalk не взимается дополнительная плата — вы по-прежнему платите только за фактически используемые сервисы AWS.

Еще одним интересным вариантом является Lambda, который предлагает бессерверный хостинг.

Если вы еще не очень хорошо знакомы с AWS, вы можете ознакомиться с руководством по проекту «Развертывание веб-приложения Node.js», чтобы изучить основы и запустить свое приложение.

5. DigitalOcean (www.DigitalOcean.com)

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

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

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

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

6. Глюк (Glitch.com)


Если вы ищете бесплатный хостинг Node.js для интересного проекта, то вам может подойти бесплатный план Glitch. Это отлично подходит для забавных приложений или прототипирования. Для более серьезных проектов вы можете рассмотреть их план Pro, который стоит 8 долларов в месяц (оплачивается ежегодно).

Бесплатный план даже позволяет создавать приложения анонимно, хотя вам нужно будет войти в систему через GitHub или Facebook, если вы хотите, чтобы проект оставался активным ( срок действия анонимных приложений истекает через пять дней ).

Дополнительные ограничения бесплатного плана включают:

  • Проекты переходят в спящий режим после 5 минут бездействия
  • Ограничение дискового пространства 200 МБ
  • 512 МБ ОЗУ
  • Ограничено до 4000 запросов в час
  • Любой, у кого есть URL-адрес вашего проекта, может просматривать ваше приложение и код

Glitch был приобретен Fastly в 2022 году и вскоре после этого начал предлагать план Pro как способ расширить ограничения, перечисленные выше. Первоначально он был создан той же командой, что и Stack Overflow, Stack Exchange и Trello ( до того, как Trello был приобретен Atlassian ), поэтому за ним стоит определенное влияние.

Если вы хотите разместить свое приложение Node.js в той же инфраструктуре, что и Google Search и YouTube, Google Cloud Platform может стать для вас лучшим хостингом Node.js.

Как и Amazon Web Services, у вас будет выбор из множества различных продуктов и услуг. Один из них, который вы определенно захотите рассмотреть, — это Google App Engine, который позволяет вам «сосредоточиться только на написании кода, не беспокоясь об управлении базовой инфраструктурой».

И, как и в AWS, вы будете платить только за те ресурсы, которые фактически используете.

Руководство по началу работы с хостингом приложений Node.js на Google Cloud Platform см. в кратком руководстве Google Node.JS App Engine.


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

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

Еще одна привлекательная черта Microsoft Azure заключается в том, что она предлагает 12 месяцев бесплатных основных услуг, а также кредит в размере 200 долларов, который вы можете использовать для дополнительных услуг в течение первых 30 дней. Так что пока это не бесплатно навсегда , вы можете получить много пробега, прежде чем вам нужно будет платить.


Если вы ненавидите управлять инфраструктурой для своих приложений Node.js, Platform.sh может стать лучшим хостингом Node.js для вашего приложения.

Как следует из названия, это платформа как услуга (PaaS), которая управляет всей инфраструктурой вашего приложения.

Технически не является хостингом самого , потому что Platform.sh сотрудничает с AWS, Google Cloud Platform, Microsoft Azure и т. д. Но вам намного проще запускать приложения Node. js в этой облачной инфраструктуре.

У Platform.sh есть несколько основных планов, начальный уровень предлагает бесплатную 30-дневную пробную версию. Вам также не нужно вводить кредитную карту, чтобы принять участие в вращении. Однако они перестали рекламировать цены на свои основные планы, поэтому вам нужно связаться с ними, чтобы спросить.

10. NodeChef (www.NodeChef.com)

С планами, начинающимися всего с 9 долларов в месяц, NodeChef предлагает недорогой хостинг Node.js для вашего приложения с использованием контейнеров Docker на физических серверах в одном из четырех центров обработки данных на выбор. четыре континента:

  • Восток США
  • ЕС-Запад (Париж)
  • Сингапур
  • Сидней

Вы можете выбирать между базами данных SQL и NoSQL, а NodeChef также предлагает простое масштабирование и автоматическую подготовку сертификатов SSL.

План начального уровня NodeChef за 9 долларов в месяц дает вам:

  • 1 ЦП
  • 128 МБ памяти приложения
  • 100 МБ памяти базы данных
  • 1 ГБ для хранения базы данных
  • Неизмеряемая пропускная способность

Затем вы можете масштабировать отдельные ресурсы по мере необходимости.

Наверх

Какой хостинг Node.js лучше всего подходит для ваших нужд?

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

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

Конечно, здесь у вас есть большая тройка:

  • AWS вместе с Elastic Beanstalk
  • Google Cloud Platform вместе с App Engine
  • Microsoft Azure вместе со службой приложений

DigitalOcean и Heroku также предлагают хорошие варианты, а Platform.sh предлагает PaaS, чтобы помочь вам в комплексной разработке.

Если вы специально ищете бесплатный хостинг Node.js, бесплатный план Glitch — хороший вариант для некритичных вещей.

Наконец, если вы не хотите идти по облачному маршруту, A2 Hosting предлагает доступную точку входа за 5,9 доллара США. 9 в месяц и является одним из немногих хостингов, которые позволяют вам запускать Node.js, не приобретая собственный VPS или выделенный сервер. Кроме того, NodeChef предлагает доступную цену благодаря контейнерному подходу Docker на серверах без операционной системы.

Вот еще раз сводная таблица:

Лучший хостинг Node.js на рынке
Хост Цена от Платить за использование? * Облачная?
Хостинг A2 5,99 $
ХостГатор 23,95 $
Героку $5
АВС $0
DigitalOcean $4
Глюк $0
Облачная платформа Google $0
Microsoft Azure $0
Платформа. ш н/д
NodeChef $9

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

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

Не забудьте присоединиться к нашему ускоренному курсу по ускорению вашего сайта WordPress. Узнайте больше ниже:

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

Лучший хостинг для Node.js в 2023 году

Содержание

  • Лучший хостинг для Node.

    js
  • Сравните услуги хостинга для Node.js

  • Как мы выбрали хостинги Node5

    7 90

  • Что такое Node.js?

  • Лучшие хостинг-провайдеры Node.js

  • Часто задаваемые вопросы о Node.js

Сравнить услуги хостинга Node.js
Hosting service Best for Starting price Best features
Kamaterra

Best Node.js hosting service

Why it’s best: Глобальные центры обработки данных, бесплатная миграция сайтов, отличное обслуживание клиентов

4 доллара в месяц

См. цены

  • Бюджетные высококлассные варианты хостинга
  • Центры обработки данных
  • Выбор панелей веб -хостинга
  • Неограниченное масштаб и выход
A2 Hosting

BEST. , круглосуточная поддержка клиентов и политика возврата средств

2,99 долл. США в месяц

См. цены

  • Поддержка 24/7
  • SSL-сертификат
  • Резервное копирование базы данных
Siteground

Лучший узел. ценообразование

  • Неограниченное количество баз данных
  • Уровень бесплатных защищенных сокетов (SS) и сеть доставки контента (CDN)
  • Неограниченное количество баз данных
LiquidWeb

Лучший для выделенного хостинга для Node.js

Почему это лучше: Планы с высокой производительности, 100% гарантия времени на работу, отличная команда поддержки

$ 99 в месяц

. 7 (действующий представитель), онлайн

  • Управление подписями
  • Архивирование/хранение
  • Как мы выбирали лучшие хосты для Node. js?

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

    Что такое Node.js?

    Node.js — это среда выполнения JavaScript, управляемая событиями, построенная на движке Chrome V8 JavaScript, разработанном для обеспечения скорости и гибкости. Он переносит JavaScript на серверную часть, позволяя развиваться так называемым «полным стеком JavaScript-приложений».

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

    Тем не менее, безусловно, есть варианты, как традиционные, так и облачные.

    Оставить комментарий

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *