Skip to content

Хостинг Node.js на Joyent

01/10/2010

Ещё полгода назад хостинг на Node.js был чем то из области фантастики. Если Вы хотели пользоваться Node, лучшее что Вам могли предложить — виртуальный сервер с возможностью установки софта. Теперь же Node-хостинг набирает обороты. Вовсю идёт бета-тестирование платформы Heroku, что то готовят товарищи из Elusive Hippo (правда последнее время там что то неспокойно). Теперь же вслед за Heroku о создании Node-хостинга объявил Joyent.

Как и в случае Heroku, хостинг этот пока экспериментальный и доступ к нему ограничен. Чтобы создать сервер на платформе Joyent надо ввести специальный код купона, который можно получить сделав запрос к RESTful API.

Регистрация

Вначале регистрируемся на сайте no.de. В конце регистрации нам предложат создать сервер (здесь он называется smartmachine), введя поддомен и код купона. Код можно получить в командной строке, через curl:

curl -k https://api.no.de/heart -X POST -u login:password

Логин и пароль надо использовать те с которыми Вы регистрировались. От сервера должен прийти либо код купона, либо сообщение вида «вы добавлены в очередь». Во втором случае надо периодически проверять очередь пока не обнаружите там искомый купон:

curl -k -u login:password https://api.no.de/coupons

Размещение кода

Я тестирую node-программы в виртуальной машине. Чтобы иметь возможность отправлять код и с неё, надо добавить её публичный ключ в список разрешённых на сервере Joyent. Подключаемся по ssh (данные для подключения Вам покажут после создания сервера), открываем файл ~/.ssh/authorized_keys. Теперь можно добавить туда текст открытого ключа нового сервера (обычно находится в файле ~/.ssh/id_rsa.pub). Ключи должны разделяться пустой строкой. После сохранения этого файла можно загружать проект со второй машины.

Кстати о загрузке проекта. Joyent требует чтобы исполняемый скрипт назывался server.js (как и в Heroku), сервер вешается на порт 80. Чтобы разместить сайт на Joyent надо в папке проекта создать git-репозиторий (если он ещё не создан):

git init

Теперь добавляем удалённый источник — наш сервер:

git remote add joyent ssh://node@<ip адрес сервера>/repo

IP-адрес будет выдан после ввода купона на странице создания сервера. Для загрузки кода на сервер не надо ставить дополнительного софта, как с Heroku — управление сервером происходит через RESTful API.

Кроме непосредственной загрузки кода можно ставить модули непосредственно на сервере — с помощью npm. Для этого придётся зайти по ssh. Папка с модулями уже добавлена в список путей для require, поэтому модуль можно использовать сразу.

Кстати, стандартного способа отдавать статические файлы в Joyent нет (хотя можно поставить Nginx). Придётся пользоваться специальными модулями Node — например paperboy.

Как и в Heroku, при выполнении git push Вам в ответ покажут статус запуска Вашего скрипта и сообщения об ошибках, если они возникнут.

Установка дополнительных пакетов

Ещё одно важное отличие от Heroku: возможность установить дополнительноые пакеты. Нужен Redis? Ставим. Нужен Mysql или Nginx? Ставим и его. Установка пакетов происходит с помощью менеджера пакетов pkgin. Вначале обновляем список модулей:

pkgin update

Т.к. сервис ещё в бета-версии, набор пакетов обновляется довольно часто. Найти нужный пакет можно с помощью команды pkgin search.

pkgin search redis

Ставим Redis:

pkgin install redis
svccfg import /opt/local/share/smf/manifest/redis.xml
svcadm enable redis

Вторая и третья строчки импортируют конфиг Redis в автозапуск и запускают демон. Всё, можно работать с Redis. Его конфиг можно найти в /opt/local/etc/redis.conf.

Проверить работу Redis можно и из командной строки:

redis-cli set foo "bar"
redis-cli get foo

Кроме этого можно подключать дополнительные машины с предустановленными пакетами — например сервера Riak (для быстрого масштабирования).

Заключение

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

Ссылки по теме

Advertisements

From → Uncategorized

18 комментариев
  1. Сергей permalink

    >Подключаемся по ssh (данные для подключения Вам покажут после создания сервера)

    Автор может уточнить какие данные? Я тоже зарегистрировался, но либо у меня руки кривые, либо со стороны Joyent вышел косяк — не пускает по ssh и все…

    • Да в общем то только IP. И указанный Вами ключ. В качестве логина используйте node

  2. Wicked permalink

    а через сколько времени обычно купон дают? прошли сутки — до сих пор возвращают [ ]

    ЗЫ: опечатка «набоор» мне напоминает «hadoop» 🙂

  3. Насколько я понял, здесь уже и бинарное расширение собрать можно?

  4. А виртуального хостинга с red5 не встречал ?

  5. Андрей permalink

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

    • Думаю Joyent согласится такое сделать (там дополнительные пожелания рассматриваются индивидуально).

  6. kolyanissimo permalink

    Здравствуйте.
    Делаю запрос на код при регистрации через терминал (ubuntu 11.10)
    curl -k https://api.no.de/heart -X POST -u login:password
    но ответа от сервера не приходит.
    По какой причине это может быть?

  7. Доброго времени суток! Не вижу условия использования информации.

  8. AnutkAttitaZen permalink

    добрый-

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

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: