Хостинг js: Рейтинг хостингов с Node js 2020

хостинг, REPL, работа с консолью, модули / Блог компании RUVDS.com / Хабр
Перед вами третья часть перевода руководства по 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, функция как услуга).

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


Оба эти проекта предоставляют разработчику некий уровень абстракции, позволяющий публиковать приложения на различных 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-услуги, которых существует великое множество, можно отметить следующие, которыми я пользовался и которые мог бы порекомендовать другим:


От себя добавим, что компания 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 хостинг на VPS / Хабр

По ходу изучения Node.js я создал много маленьких проектов. В дальнейшем мне понадобилось развернуть некоторые из них на сервере, чтобы иметь возможность развивать их в дальнейшем. Существующие хостинги Appfog и Heroku имеют ряд серьезных ограничений на бесплатных аккаунтах. На Appfog'е можно запускать одновременно не больше 2-х приложений, и бесплатная регистрация у них уже отключена. На Heroku можно создать только 5 приложений (без базы данных) без подтверждения аккаунта привязкой банковской карты. Платные аккаунты стоят очень дорого для меня (я ведь не зарабатываю на этих маленьких проектах): $20 долларов на Appfog, а heroku еще дороже. Коллеги порекомендовали попробовать хостинг на Digital Ocean — виртуальный сервер за $5 доларов в месяц, на котором можно легко настроить собственный хостинг node.js-проектов.

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

Создаем VPS


1. Регистрация на DigitalOcean

Первым делом регистрируемся на сайте DigitalOcean. Здесь мы купим VPS — виртуальный сервер. После удачной регистрации и входа в свою админку жмем на большую зеленую кнопку "Create" и нам предложат активировать свой аккаунт, внеся $5 долларов. Ниже на странице есть место для указания счастливого купона на $10, вводите OMGSSD10 или поищите свежий купон. Так как моя банковская карточка не подошла хостеру, я оплатил пейпалом и у меня на счету оказалось $15. Этого должно хватить на 3 месяца.
2. Создаем SSH-ключ

Доступ к удаленным серверам обычно делается по ssh. Это такая технология защищенных соединений. Зайти в нашу будущую VPS можно по паролю или по SSH-ключу. Я настоятельно рекомендую второй вариант, не придется все время вводить пароль. Также, SSH-ключ все равно нужно будет указать при создании нашего нового "дроплета" (словом "droplet" DigitalOcean называет виртуальный сервер).

Выполните следующие две команды в терминале, чтобы сгенерировать ssh-ключ:

$ cd ~/.ssh
$ ssh-keygen -t rsa -C "[email protected]"

И тут нас просят ввести имя файла ключа. Рекомендую использовать что-нибудь вроде id_rsa_digitalocean_dropletname, где имя дроплета — это либо имя домена, на который мы привяжем наш сервер, либо просто какое-нибудь осмысленное название. Парафразу можно оставить пустой, и так сойдет.

После этого будет создано два файла: ssh-ключ и public-ключ. Скопируем публичный ключ в буфер обмена модным способом:

$ cat ~/.ssh/id_rsa_digitalocean_dropletname.pub | pbcopy

Теперь зайдем в админку в digitaloceans в раздел SSH-keys и создадим там новый ключ, вставив его из буфера обмена.
3. Создаем дроплет

Теперь настало время купить виртуальный сервер. Нажимаем на большую зеленую кнопку «Create» и вводим следующую информацию:
  • В качестве hostname укажите доменное имя или что-нибудь осмысленное, это название роли не играет
  • Размер выбирайте самый маленький, его потом можно будет увеличить из терминала
  • Регион любой, я выбрал Амстердам
  • Образ выберите на вкладке Applications, c названием "Dokku v0.2.3 on Ubuntu..." или похожим
  • Укажите SSH-ключ, который мы создали на предыдущем шаге

Жмем "Create Droplet" и ждем 2-10 минут. В результате мы увидим панель управления дроплетом, и там будет виден его IP-адрес.

Выбранный образ помимо операционной системы Ubuntu 14.04 содержит самое главное: Dokku. Это готовая система для хостинга node.js-проектов, очень похожая на Heroku. Использование образа с предустановленным Dokku избавит нас от необходимости устанавливать и настраивать систему для хостинга Node.js.

4. Настройка Дроплета и DNS

Теперь нужно настроить новосозданный сервер. Зайдите в браузере по IP-адресу дроплета и вы увидете экран настройки. Если такой страницы нет, смотрите что делать в конце статьи.

Здесь вы должны убедится, что поле "Public Key" заполнено. Если нет — укажите свой public key из недавно сгенерированного ключа. Однако практика показала, что лучше вообще удалить такой дроплет и создать новый, правильно указав SSH-ключ.

Если у вас нет доменного имени, то оставьте все, как есть, жмите "Finish setup" и переходите к следующему пункту. Ваше приложение будет доступно примерно так: "19.19.197.19:46667", по IP адресу и номеру порта. Если вас это не устраивает — срочно купите доменное имя. В любом случае, настроить доменное имя можно будет позже, о чем я расскажу в конце.

Если вы укажете доменное имя, у вас будет возможность настроить доступ к приложениям через поддомены. Например, если ваше доменное имя mydomain.com, тогда ваше приложение будет доступно по адресу app.mydomain.com. Также есть возможность привязать приложение на главный домен, но об это я в данной статье не расскажу.

Укажите в поле Hostname ваше доменное имя и поставьте галочку "Use virtualhost naming for apps". Теперь идите в панель управления вашим доменным именем и впишите две новые настройки примерно так:

apps.mydomain.com. IN A [Droplet IP address]
*.apps.mydomain.com. IN A [Droplet IP address]

Или так:
mydomain.com. IN A [Droplet IP address]
*.mydomain.com. IN A [Droplet IP address]

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

Теперь возвращайтесь на страницу настройки дроплета и жмите "Finish setup".

5. Настраиваем использование SSH

Давайте попробуем соединиться с нашим новым сервером. Чтобы получить доступ дроплету через SSH-ключ, нужно еще одно маленькое действие. Откройте терминал и передите в папку с ssh-ключами:
$ cd ~/.ssh/

Если у вас еще нет файла "config" в этой папке (проверка — $ ls), то его необходимо создать:
$ touch config

Теперь открываем config($ open config) и записываем в него следующие данные:
Host YOUR.DROPLET.IP.ADDRESS
    IdentityFile ~/.ssh/id_rsa_digitalocean_dropletname

Где в первой строчке IP адрес или доменное имя, на второй строчке — имя созданного ssh-ключа для этого дроплета.

Проверяем соединение:

$ ssh [email protected]

Где после "@" надо указать или доменное имя, или IP.

Если вы пропустили создание SSH-ключа, войти можно по паролю, который пришел к вам на почту. Для этого выполните ту же команду:

$ ssh [email protected]

и на вопрос о продолжении соединения напишите "yes". После этого введите пароль.

Если вы увидели приветственный экран, значит все хорошо. Закроем соединение командой exit и перейдем к следующему пункту.

Деплоим приложение


Сервер готов, теперь пришла очередь развернуть тестовое приложение и проверить его работу.
1. Подготавливаем проект

Возьмите простой проект, типа Hello, world, без mongodb и прочего. Проверьте, что в проекте есть самое главное: "package.json", "Procfile" и какой-нибудь "app.js". "Package.json" должен выглядеть примерно так:
{
   "name": "dokku-demo-application",
   "version": "1.0.0",
   "engines": {
       "node": ">=0.10.*",
       "npm": ">=1.3"
   },
   "dependencies": {
       "express": "~3.0"
   }
}

Содержание файла package.json важно, так как по нему dokku будет устанавливать модули для приложения. А Procfile должен выглядеть так:
web: node server.js

Инициализируем в папке проекта репозиторий (если его не было), добавляем все файлы и коммитим:
$ git init && git add -A && git commit -m "Initial commit"

Теперь наш проект готов к разворачиванию на сервере.
2. Заливаем и запускаем проект

Деплоить приложение будем с помощью команды git push. И для этого добавим ссылку на удаленный репозиторий нашего дроплета:
$ git remote add dokku [email protected]:application_name

Если у нас было доменное имя для дроплета, то пишем его после "[email protected]", иначе — указываем IP. После двоеточия мы указываем имя приложения. Этот индификатор будет использоваться внутри dokku.

Теперь вызываем команду push:

$ git push dokku master

И начинается загрузка приложения, установка модулей. В конце на экране покажется url, по которому можно запустить проект. Это будет ссылка вида 192.88.67.168:46567 или app1.mydomain.com, в зависимости от настроек dokku.

По идее проект должен быть запущен после этого. Но если нет, то заходим в по ssh в наш дроплет и выполняем две команды

$ cd /home/dokku/YOUR-APP-NAME
$ dokku run YOUR-APP-NAME node app.js

Запускаем в браузере ссылку, полученную ранее, и радуемся!

Проблемы и их устранение


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

Они такие, да. Даже Visa Classic им не нравится. Оплатите через PayPal, это не трудно.
2. Создал дроплет, но по IP адресу нет страницы настройки dokku

Значит, у DigitalOcean что-то пошло не так. Надо зайти на страницу управления дроплетом, и на вкладке Destroy/Rebuild:
  • указать образ с Dokku
  • нажмите кнопку "Rebuild from Image".

Тогда, после перестройки, страница настройки dokku должна быть видна по IP-адресу. Если нет — попросите помощи у DigitalOcean.
3. Не могу получить доступ к дроплету ни по паролю, ни по SSH

  1. Наверное, вы как-то пропустили шаг настройки dokku, или dokky создался не правильно.
  2. Проверьте, если доступна страница настройки dokku по IP адресу дроплета, то вернитесь к шагу 4 создания VPS.
  3. Если страницы настроек нет, тогда попробуйте сбросить пароль и повторить попытку доступа через терминал. Если даже в этом случае доступ по паролю будет неудачным, тогда переустановите дроплет, как описано в предыдущем пункте.
4. Я не знаю пароля от дроплета

Если у вас нет пароля, зайдите на страницу управления дроплетом, вкладка "Access" и сделайте reset пароля. Тогда на почту придет новый пароль.
5. Проект не запускается по указанной ссылке

Если настройки dokku верны, такая ситуация возможна, если приложение запустилось с ошибкой и было закрыто. Зайтиде по ssh в дроплет и проверьте логи:
$ dokku logs <app_name>

Возможно, ошибка будет понятна. Или же вы забыли запустить ваш проект после push'а:
$ cd /home/dokku/YOUR-APP-NAME
$ dokku run YOUR-APP-NAME node app.js
6. Я пропустил создание SSH, и теперь хочу сделать авторизацию по SSH-ключу

Я пытался создать новый дроплет без указания ssh-ключа на странице создания дроплета, но на странице настроек dokku все равно просят ввести паблик-ключ. После этого я принял некоторые действия, но все равно зайти по ssh-ключу у меня не вышло, только пароль. Так что я не знаю, как лучше действовать в данной ситуации. Возможно, ошибка происходила при команде копирования ssh ключа в дроплет. Гуглите. В крайнем случае создайте новый дроплет с самого начала, по уму, как в этом руководстве. Пример поиска.
7. Как добавить доменное имя к уже существующему дроплету

Это делается совсем не трудно, всего в несколько шагов. В настройках DNS вашего доменного имени указать настройки:
apps.mydomain.com. IN A [Droplet IP address]
*.apps.mydomain.com. IN A [Droplet IP address]

В дроплете зайти в папку dokku и открыть для редактирования HOSTNAME:
$ cd /home/dokku/
$ vim HOSTNAME

Нажать клавишу "i" и записать в файле "HOSTNAME" доменное имя вместо IP адреса; затем нажать Esc, кнопки :wq и Enter. Ура! Мы только что успешно использовали легендарный Vim!
Чтобы проекты запускались на поддоменах, нужно создать файл VHOST:
$ touch VHOST

И записать в файле доменное имя таким же способом, как это было в предыдущем пункте. В противном случае проекты будут доступны через порт. Теперь надо перезалить проект, а перед этим удалить его из dokku:
$ dokku delete app_name

Удалить в репозитории предыдущий remote с IP-адресом в названии:
$ git remote remove dokku

И добавить новый remote под старым именем:
$ git remote add dokku [email protected]:app_name

Настраиваем SSH-ключ на новый хостинг, дописывая в ~/.ssh/config новые строчки:
Host YOUR.DROPLET.IP.ADDRESS
    IdentityFile ~/.ssh/id_rsa_digitalocean_dropletname

Смело пушаем проект:
$ git push dokku master

Теперь проекты будут доступны на поддоменах.

Всем спасибо за внимание, хороших выходных!

Использование nodejs на виртуальном хостинге

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

После добавления домена можно разместить существующее приложение используя git или загрузив его при помощи FTP-клиента в папку добавленного домена.

Открываем меню Настройка Node.js приложения и создаем приложение с нужной нам версией Node.js, при создании указываем полный путь к каталогу созданного ранее сайта в поле Корневой каталог приложения .

После создания приложения мы видим команду для входа в виртуальное окружение и текущие настройки приложения.

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

Для работы nodejs-приложений на виртуальном хостинге используется apache2-modPassenger, для корректной установки Вашего приложения рекомендуем ознакомиться с документауией по установке приложения в этом окружении.

В настройках приложения можно указать различные параметры:

  • Версия NodeJS
  • Режим приложения(Development\Production)
  • Корневой каталог приложения
  • Файл запуска приложения

Так же есть возможность остановить или перезапустить приложение и задавать переменные окружения.

Для удобного управления множеством приложений быстрые действия доступны во вкладке Веб приложения.

ВАЖНО!: На тестовом периоде весь функционал работы с приложениями nodejs не доступен так как требуется ssh-доступ для пользователя.

Вы можете запросить ssh-доступ к аккаунту на тестовом периоде обратившись через тикет-систему

Хостинг Node Js в России

Хостинг от Макхост

Приветствую начинающих кодеров на своём блоге, которые интересуются созданием программ и скриптов на JavaScript. Если вас интересует, какой выбрать хостинг Node Js, то вы попали точно по адресу. Найти качественную компанию, предоставляющую услуги с поддержанием такого окружения, не так-то просто. Я расскажу вам о лучших в России.

Node.Js — платформа, работающая на V8, которую разработали специалисты Google. Платформа конвертирует JS из узкоспециализированного языка в язык общего назначения. Сразу хочу сказать, что работать новичку с ней не рекомендую. Эта тема подойдёт только тем кодерам, которые уже обладают определённым опытом и хотят решать интересные и сложные задачи.

Как правильно выбрать хостинг для Node.JS

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

А начать основную часть хотел бы с высказывания великого учёного Альберта Эйнштейна: «Стремитесь не к тому, чтобы добиться успеха, а к тому, чтобы ваша жизнь имела смысл». Помните, что, в первую очередь, вы должны наслаждаться работой над своими проектами и приносить через них пользу другим людям, а уже потом собирать сливки в виде прибыли. Тогда ваша жизнь будет наполнена смыслом.

Reg.Ru

Reg.Ru — лидер российского сегмента регистраторов, оказывающий услуги с 2006 года. По данным с сайта компании, сейчас они обслуживают 2,9 млн. доменов, а число клиентов находится на отметке 1,3 миллиона. За 11 лет с момента основания различные услуги предоставлены 21 миллион раз.

Компания предлагает VPS на Linux:

Как правильно выбрать хостинг для Node.JSКак правильно выбрать хостинг для Node.JS

Как правильно выбрать хостинг для Node.JS

И на Windows:

Как правильно выбрать хостинг для Node.JS

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

По опыту работы с этой организацией выделяю следующие преимущества:

  • В работе используется современное оборудование, которое регулярно обновляется для соответствия современным требованиям;
  • Через несколько минут после оплаты заказа VPS функционирует в штатном режиме, поэтому начинать работать можно сразу же;
  • Если заканчиваются доступные ресурсы, можно перейти на другой тарифный план. Всё проходит в автоматическом режиме, перенастраивать свой сервер вам не придётся;
  • Reg.Ru несёт ответственность за предоставление тех ресурсов, которые заявлены в описании тарифного плана. Сказано — сделано. Всё так и есть в действительности.

Приятными допами является выбор Windows из нескольких редакций и доступ к удалённому рабочему столу. Данная компания давно зарекомендовала себя на отечественном рынке. Оказывает качественные услуги, идёт в ногу со временем. Если вы ищите качественный сервер для Node.Js, то можете смело воспользоваться Reg.Ru.

Unihost

Unihost — международная фирма, оказывающая услуги на российском рынке уже несколько лет. Основана в 2001 году. Сразу хочу сказать, что цена тарифов привязана к доллару. Это вызывает постоянное колебание стоимости в рублёвом эквиваленте. Поэтому не удивляйтесь, если информация в действительности будет отличаться от указанной ниже.

Как правильно выбрать хостинг для Node.JS Как правильно выбрать хостинг для Node.JS

Регистратор предлагает четыре тарифа VPS, на которые можно установить Node:

Как правильно выбрать хостинг для Node.JS

Unihost предлагает своим клиентам возврат средств, если они недовольны качеством предоставляемых услуг. Это возможно только при первом заказе. То есть вы можете взять бесплатно пробный период. Преимущества VPS этой компании:

  • Сервера подключены к интернет-каналу со скоростью 500 Мбит/с и 1 Гбит/с при пиковых нагрузках;
  • При заказе виртуального сервера пользователь получает один IPv4 и 10 IPv Если вам потребуется больше, заказать дополнительный IPv4 можно за 124 рубля в месяц, а дополнительные IPv6 предоставляются бесплатно;
  • Пользователь после оплаты получает данные к root доступу. Через него осуществляется контроль работы сервера, состояния ресурсов. Можно сделать остановку, перезагрузку или установить дополнительные компоненты;
  • При возникновении проблем можно обратиться в службу поддержки. Для связи используется онлайн-чат на сайте, тикетная система или электронная почта, указанная на сайте.

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

TimeWeb

Конечно, не включить в данный список свой любимый хостинг я не мог. Как вы уже догадались, TimeWeb также предлагает поддержку Node.Js на своих VDS-серверах. Организация работает с 2006 года. На своём оборудовании содержит более 370 тысяч сайтов различной величины. В работе используются только современные технологии, расположенные в двух дата-центрах в Санкт-Петербурге.

Чётких тарифов здесь нет. Компания предлагает гибкие настройки:

Как правильно выбрать хостинг для Node.JS

Как правильно выбрать хостинг для Node.JSКак правильно выбрать хостинг для Node.JS

Пользователь может выбрать столько ресурсов, сколько ему требуется. Также можно выбрать необходимую операционную систему и панель администрирования. На виртуальный сервер от TimeWeb можно установить любое количество сайтов, доменов, почтовых ящиков и т.п. Преимущества:

  • Панель управления VDS с интуитивно понятным интерфейсом — авторская разработка команды российских специалистов TimeWeb;
  • Компания гарантирует защищённость данных пользователя. Также каждый сервер имеет надёжную защиту от хакерских атак;
  • Если ваш проект растёт и ресурсы используются на пределе, вы можете легко добавить оперативной памяти или процессоров. Это не повлияет на работу проекта, все настройки сохранятся;
  • Вы получаете столько ресурсов, сколько заказали. Соседи по физическому серверу никак не влияют на стабильность работы вашего сайта;
  • Команда контролирует работу оборудования круглые сутки, что обеспечивает стабильность на протяжении 24 часов.

Как человек, который давно сотрудничает с этой фирмой, я рекомендую рассмотреть этот вариант в первую очередь. Хотя, есть небольшой недостаток — поддержка не оказывает помощи при установке Node.Js и не несёт ответственности за последствия размещения платформы на виртуальном сервере.

Также рекомендую рассмотреть HandyHost. Здесь можно арендовать VPS на Linux или Windows и установить платформу Node.Js.

Есть ли халява?

Если вы только начинаете осваивать данную технологию, рекомендую воспользоваться услугами Appfog или Heroku. Здесь вы сможете воспользоваться аккаунтами, поддерживающими Node, бесплатно. Таким образом, можно заниматься самообучением, тестировать свои разработки и многое другое. А главное — это сократит ваши расходы.

Как правильно выбрать хостинг для Node.JS

Какой можно сделать вывод?

Node.Js стремительно набирает популярность. Многие крупные компании подключают поддержку этой технологии. Например, на Amazon недавно появилось AWS SDK, поддерживающее работу Node.

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

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

Как правильно выбрать хостинг для Node.JS Как правильно выбрать хостинг для Node.JS Как правильно выбрать хостинг для Node.JS

Как запустить Node.js на обычном хостинге

Вам нравится Node.js? Хотите использовать Gulp 4 / Grunt / Webpack на обычном хостинге? Но как сделать это? Ведь на стандартных хостингах нет возможности самостоятельной установки программ. Т.е. Вы не можете запустить установку ни одной программы, даже из официальных репозиториев Linux. Есть выход - nvm (Node Version Manager). С помощью данной утилиты Вы сможете установить и запустить Node.js, npm и любой сборщик, типа Gulp или Grunt на любом стандартном хостинге (даже тех, которые утверждают, что для запуска Node.js требуется покупка тарифа с выделенным сервером). Для установки nvm не требуются права администратора, нужна лишь стандартная оболочка bash и программа wget, а всё это входит в любой дистрибутив Linux, на любом хостинге.

Итак, поехали!

Как установить Node.js, npm на обычном хостинге без прав администратора

Первым делом подключаемся через ssh к серверу. Для этого достаточно команды:


ssh логин@хост

Там где логин и хост ставьте логин, который Вы используете для FTP / SFTP, а хост Вы можете узнать у Вашего хостинг-провайдера. Всё это всегда даётся при регистрации хостинга, либо можно посмотреть в панели управления. Обращаю внимание, что хост для FTP и SFTP может отличаться.

Далее нужно понять, есть ли в домашней директории Вашего аккаунта права на создание файлов и папок. Это можно понять, попробовав создать любую папку в домашней директории аккаунта. Обращаю Ваше внимание, что домашняя директории аккаунта - это НЕ домашняя директория сайта. Домашняя директория аккаунта всегда располагается на один уровень выше и в ней нет никаких файлов и папок, относящихся к Вашему сайту. Так вот. Попробуйте создать там любой файл или папку. Для создания файла / папки Вы можете использовать в консоли команду:


cd ~ && touch test.txt && mkdir test

Если не будет никаких сообщений об ошибках, то всё ОК. Удалите тестовый каталог и файл командой:


rm -r test.txt test

Но если у Вас будет ошибка, значит создание файлов и папок в домашней директории аккаунта запрещено. Тогда ищем ту папку, в которой у нас есть возможность создавать файлы и папки. Обычно это папка с названием типа private и тому подобным. В данной папке хостинг провайдер разрешает хранить Вам бекапы, логи и любую другую информацию. Сделаем эту директорию домашней, чтобы корректно выполнялись все команды nvm и Node.js. Первым делом давайте запишем себе текущий путь данной директории (это пригодится нам в дальнейшем). Для этого, находясь в директории, где у Вас есть права на создание файлов и папок, выполним команду:


pwd

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

Затем в домашней директории аккаунта ищем файл .bashrc. Этот файл отвечает за выполнении пользовательских команд во время работы командной оболочки. Чтобы увидеть список файлов, которые есть, выполните команду:


cd ~ && ls -la

Если данного файла там нет, создаём его и сразу запускаем его редактирование связкой команд:


touch .bashrc && nano .bashrc

Запускается текстовый редактор nano и мы можем вносить туда данные. А именно, нам нужно переопределить системную переменную HOME. На работу Вашего сайта это никак не повлияет, это лишь задаст системную домашнюю директории Вашего аккаунта. Нам необходимо вписать следующее:


HOME=полный_путь_на_новую_домашнюю_директорию (мы записывали этот путь себе ранее)

Сохраняем файл. Для этого сначала нажимаем Ctrl+X, затем Y, затем Enter.

Затем ищем файл .bash_profile (он обязательно будет в домашней директории) и открываем его на редактирование командой:


nano .bash_profile

Вписываем туда строки:


if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

Сохраняем.

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

После подключения выполняем:


cd ~ && pwd

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

Теперь нам осталось скачать и запустить nvm (Node Version Manager):


wget -qO- https://cdn.rawgit.com/creationix/nvm/master/install.sh | bash

После завершения скачивания и установки nvm перезапускаем терминал, заново подключаемся по SSH.

Затем открываем на редактирование файл .bashrc (как это сделать я писал ранее), и вписываем туда две строки:


export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

Сохраняем файл.

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

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


cd ~ && nvm install stable

После выполнения данной команды у нас установится последняя версия Node.js и npm.

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


node -v

В консоли появится номер актуальной версии Node.js

Теперь мы можем использовать Gulp 4 / Grunt / Webpack и все другие возможности Node. В том числе, мы можем настроить автоматическую сборку пакетов, автоматическую минификацию и сборку стилей, сжатие изображений при их загрузке и многое другое...

Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
Web development blog!

общие сведения и начало работы / Блог компании RUVDS.com / Хабр
Мы начинаем публикацию серии материалов, которые представляют собой поэтапный перевод руководства по Node.js для начинающих. А именно, в данном случае «начинающий» — это тот, кто обладает некоторыми познаниями в области браузерного JavaScript. Он слышал о том, что существует серверная платформа, программы для которой тоже пишут на JS, и хотел бы эту платформу освоить. Возможно, вы найдёте здесь что-то полезное для себя и в том случае, если уже знакомы с Node.js.

Кстати, в прошлом году у нас был похожий по масштабам проект, посвящённый bash-скриптам. Тогда мы, после публикации всех запланированных материалов, собрали их в виде PDF-файла. Так же планируется поступить и в этот раз.

Сегодня мы обсудим особенности Node.js, начнём знакомство с экосистемой этой платформы и напишем серверный «Hello World».

[Советуем почитать] Другие части циклаЧасть 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 — это опенсорсная кроссплатформенная среда выполнения для JavaScript, которая работает на серверах. С момента выпуска этой платформы в 2009 году она стала чрезвычайно популярной и в наши дни играет весьма важную роль в области веб-разработки. Если считать показателем популярности число звёзд, которые собрал некий проект на GitHub, то Node.js, у которого более 50000 звёзд, это очень и очень популярный проект.

Платформа Node.js построена на базе JavaScript движка V8 от Google, который используется в браузере Google Chrome. Данная платформа, в основном, используется для создания веб-серверов, однако сфера её применения этим не ограничивается.

Рассмотрим основные особенности Node.js.

▍Скорость


Одной из основных привлекательных особенностей Node.js является скорость. JavaScript-код, выполняемый в среде Node.js, может быть в два раза быстрее, чем код, написанный на компилируемых языках, вроде C или Java, и на порядки быстрее интерпретируемых языков наподобие Python или Ruby. Причиной подобного является неблокирующая архитектура платформы, а конкретные результаты зависят от используемых тестов производительности, но, в целом, Node.js — это очень быстрая платформа.

▍Простота


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

▍JavaScript


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

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

▍Движок V8


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

▍Асинхронность


В традиционных языках программирования (C, Java, Python, PHP) все инструкции, по умолчанию, являются блокирующими, если только разработчик явным образом не позаботится об асинхронном выполнении кода. В результате если, например, в такой среде, произвести сетевой запрос для загрузки некоего JSON-кода, выполнение потока, из которого сделан запрос, будет приостановлено до тех пор, пока не завершится получение и обработка ответа.

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

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

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

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

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

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

▍Библиотеки


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

Установка Node.js


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

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

brew install node

Список менеджеров пакетов для других операционных систем, в том числе — для Linux и Windows, можно найти здесь.

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

Я посоветовал бы начинающим пользоваться официальными установщиками Node.js. Пользователям macOS я порекомендовал бы устанавливать Node.js с помощью Homebrew. Теперь, после того, как вы установили Node.js, пришло время написать «Hello World».

Первое Node.js-приложение


Самым распространённым примером первого приложения для Node.js можно назвать простой веб-сервер. Вот его код:
const http = require('http')
const hostname = '127.0.0.1'
const port = 3000
const server = http.createServer((req, res) => {
  res.statusCode = 200
  res.setHeader('Content-Type', 'text/plain')
  res.end('Hello World\n')
})
server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`)
})

Для того чтобы запустить этот код, сохраните его в файле server.js и выполните в терминале такую команду:
node server.js

Для проверки сервера откройте какой-нибудь браузер и введите в адресной строке http://127.0.0.1:3000, то есть — тот адрес сервера, который будет выведен в консоли после его успешного запуска. Если всё работает как надо — на странице будет выведено «Hello World».

Разберём этот пример.

Для начала, обратите внимание на то, что код содержит команду подключения модуля http.

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

Метод createServer() объекта http создаёт новый HTTP-сервер и возвращает его.

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

Когда сервер получает запрос, вызывается событие request, предоставляющее два объекта. Первый — это запрос (req, объект http.IncomingMessage), второй — ответ (res, объект http.ServerResponse). Они представляют собой важнейшие механизмы обработки HTTP-запросов.

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

Второй нужен для формирования и отправки ответа на запрос.

В данном случае ответ на запрос мы формируем следующим образом. Сначала устанавливаем свойство statusCode в значение 200, что указывает на успешное выполнение операции:

res.statusCode = 200

Далее, мы устанавливаем заголовок Content-Type:
res.setHeader('Content-Type', 'text/plain')

После этого мы завершаем подготовку ответа, добавляя его содержимое в качестве аргумента метода end():
res.end('Hello World\n')

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

Фреймворки и вспомогательные инструменты для Node.js


Node.js — это низкоуровневая платформа. Для того чтобы упростить разработку для неё и облегчить жизнь программистам, было создано огромное количество библиотек. Некоторые из них со временем стали весьма популярными. Вот небольшой список библиотек, которые я считаю отлично сделанными и достойными изучения:
  • Express. Эта библиотека предоставляет разработчику предельно простой, но мощный инструмент для создания веб-серверов. Ключом к успеху Express стал минималистический подход и ориентация на базовые серверные механизмы без попытки навязать некое видение «единственно правильной» серверной архитектуры.
  • Meteor. Это — мощный фулстек-фреймворк, реализующий изоморфный подход к разработке приложений на JavaScript и к использованию кода и на клиенте, и на сервере. Когда-то Meteor представлял собой самостоятельный инструмент, включающий в себя всё, что только может понадобиться разработчику. Теперь он, кроме того, интегрирован с фронтенд-библиотеками, такими, как React, Vue и Angular. Meteor, помимо разработки обычных веб-приложений, можно использовать и в мобильной разработке.
  • Koa. Этот веб-фреймворк создан той же командой, которая занимается работой над Express. При его разработке, в основу которой легли годы опыта работы над Express, внимание уделялось простоте решения и его компактности. Этот проект появился как решение задачи внесения в Express серьёзных изменений, несовместимых с другими механизмами фреймворка, которые могли бы расколоть сообщество.
  • Next.js. Этот фреймворк предназначен для организации серверного рендеринга React-приложений.
  • Micro. Это — весьма компактная библиотека для создания асинхронных HTTP-микросервисов.
  • Socket.io. Это библиотека для разработки сетевых приложений реального времени.

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

Краткая история Node.js


В этом году Node.js исполнилось уже 9 лет. Это, конечно, не так уж и много, если сравнить этот возраст с возрастом JavaScript, которому уже 23 года, или с 25-летним возрастом веба, существующем в таком виде, в котором мы его знаем, если считать от появления браузера Mosaic.

9 лет — это маленький срок для технологии, но сейчас возникает такое ощущение, что платформа Node.js существовала всегда.

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

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

Итак, JavaScript — это язык программирования, который был создан в Netscape как скриптовый язык, предназначенный для управления веб-страницами в браузере Netscape Navigator.

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

Одним из ключевых факторов, благодаря которому платформа Node.js стала столь распространённой и популярной, является время её появления. Так, за несколько лет до этого JavaScript начали считать серьёзным языком. Случилось это благодаря приложениям Web 2.0, вроде Google Maps или Gmail, которые продемонстрировали миру возможности современных веб-технологий.

Благодаря конкурентной войне браузеров, которая продолжается и по сей день, серьёзно возросла производительность JavaScript-движков. Команды разработчиков, стоящих за основными браузерами, каждый день работают над повышением производительности их решений, что благотворно влияет на JavaScript в целом. Один из таких движков — это уже упомянутый V8, используемый в браузере Chrome и применяемый в Node.js. Он является одним из результатов стремления разработчиков браузеров к высокой производительности JS-кода.

Конечно же, популярность Node.js основана не только на удачном стечении обстоятельств и на том, что эта платформа появилась в правильное время. Она представила миру инновационный подход к серверной разработке на JavaScript. Рассмотрим основные вехи истории Node.js.

▍2009


  • Появление Node.js
  • Создание первого варианта npm.

▍2010



▍2011


  • Выход npm 1.0.
  • Большие компании, такие, как LinkedIn и Uber, начали пользоваться Node.js.

▍2012


  • Быстрый рост популярности Node.js.

▍2013


  • Появление Ghost, первой крупной платформы для публикаций, использующей Node.js.
  • Выпуск Koa.

▍2014


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

▍2015


  • Основание организации Node.js Foundation.
  • Слияние IO.js и Node.js.
  • В npm появляется возможность работать с приватными модулями.
  • Выход Node.js 4 (надо отметить, что версий 1, 2 и 3 у этой платформы не было).

▍2016


  • Инцидент с пакетом left-pad.
  • Появление Yarn.
  • Выход Node.js 6.

▍2017


  • В npm начинают больше внимания уделять безопасности.
  • Выход Node.js 8
  • Появление поддержки HTTP/2.
  • V8 официально признают в качестве JS-движка, предназначенного не только для Chrome, но и для Node.
  • Еженедельно осуществляется 3 миллиарда загрузок из npm.

▍2018


  • Выход Node.js 10.
  • Поддержка ES-модулей.
  • Экспериментальная поддержка mjs.

Итоги


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

Уважаемые читатели! Скажите, запустился ли у вас Hello World для Node.js?

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

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

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

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

  1. Heroku #
  2. Amazon Web Services #
  3. DigitalOcean #
  4. A2 Hosting #
  5. глюк #
  6. Google Cloud Platform #
  7. Microsoft Azure #
  8. Платформа
  9. .ш #
  10. NodeChef #

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

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

1. Heroku (www.Heroku.com)

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

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

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

  • 512 МБ памяти
  • Спит после 30 минут бездействия
  • Только один пользователь
  • Поставляется с лимитом 1000 «динамо-часов» для всего вашего счета (если вы проверяете с помощью кредитной карты - в противном случае только 550)

Если эти ограничения мешают вашим планам, платные планы Heroku все еще могут быть доступными, начиная от 7 долларов.

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

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

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

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

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

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

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

3. DigitalOcean (www.DigitalOcean.com)

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

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

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

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

4. Хостинг A2 (www.A2Hosting.com)

Хостинг

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

Это делает хостинг A2 довольно доступным вариантом, с планами, начинающимися всего с $ 4,90 в месяц за:

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

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

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

5. Glitch (Glitch.com)

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

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

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

  • Проекты спят через 5 минут, если не используются, и автоматически останавливаются через 12 часов. Они просыпаются при получении другого HTTP-запроса.
  • 200 МБ дискового пространства и 512 МБ ресурсов для хранения.
  • 512 МБ ОЗУ, как и в случае с бесплатными ограничениями Node.js для Heroku.
  • Ограничено 4000 запросов в час.

Для простого руководства по размещению вашего узла.js приложение на Glitch, ознакомьтесь с Руководством для идиота по хостингу на Glitch.com.

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

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

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

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

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

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

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

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

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

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

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

Планы

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

9. NodeChef (www.NodeChef.com)

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

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

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

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

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

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

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

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

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

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

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

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

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

Вот краткая сводная таблица снова:

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

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

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

БОНУС ВИДЕО: ЛУЧШИЙ Хостинг для WordPress

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

,

GitHub - expressjs / vhost: виртуальный домен, хостинг

перейти к содержанию Зарегистрироваться
  • Почему GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • Отзывы клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
    • Исследуйте GitHub →
    учиться и внести свой вклад
    • Темы
    • Коллекции
    • Тенденции
    • Learning Lab
    • Руководства с открытым исходным кодом
    Общайтесь с другими
    • События
    • Общественный форум
    • GitHub Education
.Хостинг

- Как создать сайт на Node.js?

Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Публичные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним технические возможности карьерного роста
  5. Талант Нанимать технический талант
  6. реклама Связаться с разработчиками по всему миру
.
, как получить URL-адрес хоста с помощью JavaScript с текущей страницы
Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Публичные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним технические возможности карьерного роста
  5. Талант Нанимать технический талант
  6. реклама Связаться с разработчиками по всему миру

Загрузка…

  1. Авторизоваться зарегистрироваться
.
Оставить комментарий

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

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