Статьи

Начало работы с Node.js в облаке

На моей новой работе в salesforce.com я невероятно рад получить Heroku , платформу в качестве поставщика услуг / платформу облачных приложений. В следующем посте я приведу более подробную информацию о том, что такое Heroku и как она работает. Но если вы похожи на меня, первое, что вы хотите сделать, изучая новую технологию, это взять ее на тест-драйв. Я решил взять мой тест — драйв Heroku с использованием недавно объявила о поддержке Node.js . Я новичок в Node.js, но, по крайней мере, я знаю JavaScript. Heroku также предлагает поддержку Ruby / Rails, но я пока не знаю Ruby. Итак, позвольте мне рассказать вам о шагах, которые я предпринял (и которые вы можете выполнить), чтобы начать работу с Node.js в облаке Heroku.

(Если вы уже зарегистрировались в Heroku, установили клиент командной строки heroku и установили git, перейдите к шагу 6. )

Шаг 1) Зарегистрируйтесь в Heroku

Шаг 2) Установите клиент командной строки heroku

Все задачи управления Heroku предоставляются через RESTful API. Самый простой способ вызвать эти API — использовать приложение Ruby из командной строки heroku с открытым исходным кодом . Для установки командной строки heroku мне сначала пришлось установить Ruby. Я использую Ubuntu Linux, поэтому этот процесс будет немного отличаться, если вы работаете на Windows или Mac, но Центр разработки Heroku предоставляет больше информации о том, как это сделать на Windows и Mac. В Ubuntu вы можете установить Ruby с помощью apt-get (или различных других инструментов):

sudo apt-get install ruby

Теперь загрузите RubyGems , распакуйте и установите его:

sudo ruby setup.rb

Это устанавливает утилиту gem в /usr/bin/gem1.8, но я также создал символическую ссылку на нее, чтобы я мог запустить ее с помощью команды «gem»:

sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

Теперь можно установить гем геройку:

sudo gem install heroku

Heroku теперь должен запускаться из командной строки:

heroku

Вы должны увидеть что-то вроде:

Usage: heroku COMMAND [--app APP] [command-specific-options]

Primary help topics, type "heroku help TOPIC" for more details:

auth # authentication (login, logout)
apps # manage apps (create, destroy)
ps # manage processes (dynos, workers)
run # run one-off commands (console, rake)
addons # manage addon resources
config # manage app config vars
releases # view release history of an app
domains # manage custom domains
logs # display logs for an app
sharing # manage collaborators on an app

Additional topics:

account # manage heroku account options
db # manage the database for an app
help # list commands and display help
keys # manage authentication keys
maintenance # toggle maintenance mode
pg # manage heroku postgresql databases
pgbackups # manage backups of heroku postgresql databases
plugins # manage plugins to the heroku gem
ssl # manage ssl certificates for an app
stack # manage the stack for an app
version # display version

Шаг 3) Войдите в Heroku через командную строку

Вы можете убедиться, что все настроено правильно, войдя в Heroku через командную строку heroku. Это сохранит ключ API в файле ~ / .heroku / credentials. Этот ключ будет использоваться для аутентификации вас при последующих запросах. Просто введите следующую команду и введите свои учетные данные Heroku:

heroku auth:login

Шаг 4) Установите git

Инструмент git используется для переноса приложений в Heroku. На Ubuntu я установил его, выполнив:

sudo apt-get install git

Шаг 5) Настройте ваш ключ SSH

Heroku использует ключи SSH для аутентификации, когда вы отправляете файлы через git. Если у вас еще нет ключа SSH, вам нужно сгенерировать его (я использовал ssh-keygen).


Шаг 6) Создайте приложение на Heroku

На Heroku должно быть подготовлено новое приложение. Поскольку Heroku поддерживает несколько стеков подготовки приложений, вам нужно указать, какой стек вы хотите использовать, если это не значение по умолчанию. Для Node.js нам нужно использовать стек «кедр», который не используется по умолчанию, поскольку он все еще находится в бета-версии. Для этого запустите:

heroku create -s cedar

Случайное / случайное имя приложения автоматически присваивается вашему приложению. Это будет что-то уникальное .herokuapp.com. Вы можете изменить имя либо через веб-администратора Heroku, либо через командную строку:

heroku apps:rename --app somethingunique hellofromnodejs

Когда приложение было создано, ваш SSH-ключ также должен был быть загружен в Heroku для доступа к git. Вы можете управлять клавишами, связанными с приложением, используя команды «heroku keys». Проверьте «ключи помощи heroku» для более подробной информации.

Теперь, когда приложение подготовлено, ему нужно что-то для запуска! Итак, давайте создадим приложение Node.js и затем загрузим его в Heroku.

Шаг 7) Установите Node.js

В Ubuntu я установил Node.js через apt-get. Но сначала я должен был добавить PPA, чтобы получить последнюю версию.

sudo apt-add-repository ppa:jerome-etienne/neoip
sudo apt-get install nodejs

Для других платформ, проверьте страницу загрузки Node.js .

Шаг 8) Создайте приложение Node.js

Я начал с создания очень простого приложения Node.js «Здравствуй, мир». В новом каталоге проекта я создал два новых файла. Первым является файл package.json, в котором указываются метаданные и зависимости приложения:

{
"name": "heroku_hello_world",
"version": "0.0.1",
"dependencies": {
"express": "2.2.0"
}
}

Затем само приложение содержится в файле с именем web.js:

var express = require('express');

var app = express.createServer(express.logger());

app.get('/', function(request, response) {
response.send('hello, world');
});

var port = process.env.PORT || 3000;
console.log("Listening on " + port);

app.listen(port);

Это приложение просто отображает запросы в «/» для функции, которая отправляет простую строку обратно в ответ. Вы заметите, что порт для прослушивания сначала попытается выяснить, был ли он указан через переменную среды, а затем откат к порту 3000. Это важно, потому что Heroku может указать нашему приложению работать на другом порту, просто предоставив ему переменная окружения.

Шаг 9) Установите зависимости приложения Node.js

Мое простой Node.js приложение требует библиотеки Экспресса Node.js . Для установки Express требуется менеджер пакетов узлов (npm). Установка npm в Ubuntu была немного сложной задачей, потому что я не чувствовал, что обычный метод следует хорошим правилам безопасности. Поэтому я следовал альтернативным инструкциям по установке, просто клонировав npm из github, а затем установил его из исходного кода:

git clone git://github.com/isaacs/npm.git
cd npm
sudo make install

Теперь мы можем установить зависимости узла в локальный каталог проекта. Просто беги:

npm install .

Вы должны увидеть «Listening on 3000», чтобы указать, что приложение Node.js запущено! Попробуйте открыть его в своем браузере:
http: // localhost: 3000 /

Надеюсь, вы увидите «Привет, мир».

Шаг 11) Создайте Procfile

Heroku использует «Procfile», чтобы определить, как на самом деле запустить ваше приложение. Здесь я просто использую Procfile, чтобы сообщить Heroku, что нужно запускать в «сетевом» процессе. Но Procfile — это действительно основа для того, чтобы рассказать Heroku, как управлять вашими вещами. Я не буду вдаваться в подробности, так как Адам Виггинс сделал отличный пост в блоге о цели и использовании Procfile . Создайте файл с именем «Procfile» в каталоге проекта со следующим содержимым:

web: node web.js

Это позволит Heroku запустить веб-приложение, используя команду узла и файл web.js в качестве основного приложения. Heroku также может запускать рабочие (не веб-приложения), но сейчас мы будем иметь дело только с веб-процессами.

Примечание. Если у вас есть Procfile, вы можете запустить приложение локально с помощью Foreman . Это позволяет вам локально смоделировать, как Heroku будет запускать ваше приложение на основе вашего Procfile.

Шаг 12) Храните файлы проекта в локальном git-репо

Чтобы отправить приложение в Heroku, файлы должны находиться в локальном репозитории git. Конечно, вы также можете поместить их в удаленный репозиторий Git (например, github.com). Чтобы создать локальное git-репо, запустите следующую директорию вашего проекта:

git init

Теперь добавьте три файла, которые вы создали, в репозиторий git:

git add package.json Procfile web.js

Примечание: убедитесь, что вы не добавляете каталог node_modules в git repo! Вы можете заставить git игнорировать его, создав файл .gitignore, содержащий только «node_modules».

И передайте файлы в локальный репозиторий:

git commit -m "initial commit"

Шаг 13) Нажмите файлы проекта в Heroku

Теперь нам нужно рассказать git об удаленном репозитории на Heroku, в который мы добавим приложение. Когда вы подготовили приложение к Heroku, оно дало вам веб-URL и git URL. Если у вас больше нет URL-адреса git, вы можете определить его, запустив команду «heroku apps» или перейдя к приложению на heroku.com . URL-адрес git будет выглядеть примерно так: «git@heroku.com: Someunique.git», где «Someunique» — это название вашего приложения в Heroku. Получив URL-адрес git, добавьте удаленное хранилище:

git remote add heroku git@heroku.com:somethingunique.git

Примечание. Если бы мы создали репозиторий git до создания приложения Heroku, то клиент командной строки heroku автоматически добавил бы удаленное репо в вашу конфигурацию git.

Теперь вы можете отправить свое приложение в Heroku! Просто беги:

git push heroku master

Вы должны увидеть что-то вроде:

Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 617 bytes, done.
Total 6 (delta 0), reused 6 (delta 0)

-----> Heroku receiving push
-----> Node.js app detected
-----> Vendoring node 0.4.7
-----> Installing dependencies with npm 1.0.8
express@2.2.0 ./node_modules/express
├── mime@1.2.2
├── connect@1.4.4
└── qs@0.1.0
Dependencies installed
-----> Discovering process types
Procfile declares types -> web
-----> Compiled slug size is 3.1MB
-----> Launching... done, v4
http://somethingunique.herokuapp.com deployed to Heroku

To git@heroku.com:somethingunique.git
* [new branch] master -> master

Теперь вы должны иметь возможность подключиться к своему приложению в браузере! Вы также можете получить некоторую диагностическую информацию из командной строки heroku. Чтобы увидеть журналы приложений (подготовка, управление, масштабирование и системные сообщения), выполните:

heroku logs

Чтобы увидеть, как запускаются процессы вашего приложения:

heroku ps

И лучше всего, если вы хотите добавить больше Dynos *, просто запустите:

heroku scale web=2

Dynos — это изолированные контейнеры, которые запускают ваш веб и другие процессы Они управляются коллектором Heroku Dyno. Узнайте больше о Dynos .

Это увеличивает количество Dynos, запускающих приложение, с одного до двух. Heroku автоматически распределяет нагрузку между этими двумя Dyno, обнаруживает мертвые Dynos, перезапускает их и т. Д.! Это серьезно легкая масштабируемость приложения!

В Heroku есть еще много всего, и я буду продолжать писать об этом здесь. Но пока вы можете ознакомиться со всеми замечательными документами в Центре разработки Heroku . И, пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или проблемы. Спасибо!