Развёртывание кода на Heroku

Ниже приведены основные шаги, необходимые для быстрого создания приложения Node.js с Express и его развёртывание на Heroku.

Шаг 1 — аккаунт на Heroku

Убедитесь, что у вас есть учётная запись Heroku.

Шаг 2 — установите Heroku Toolbelt

Скачайте и установите пакет Toolbelt для вашей ОС.

OSX

https://toolbelt.heroku.com/osx

Windows

https://toolbelt.heroku.com/windows

Linux

$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

Шаг 3 — войдите в свой аккаунт

После установки Toolbelt вы должны получить доступ к своей учётной записи.

$ heroku login
Enter your Heroku credentials.
Email: adam@example.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

Вот и всё на этом. Пройдите через эти шаги и вы готовы для развёртывания кода!

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

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

Обновление package.json

На этом шаге мы должны добавить некоторый код в файл package.json, чтобы мы могли запустить приложение с удалённого сервера.

Прямо сейчас есть хороший шанс, что файл будет выглядеть следующим образом:

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "express": "~4.0.0",
    "static-favicon": "~1.0.0",
    "morgan": "~1.0.0",
    "cookie-parser": "~1.0.1",
    "body-parser": "~1.0.0",
    "debug": "~0.7.4",
    "jade": "~1.3.0"
  }
}

В конце объекта "dependencies": { ... } вам нужно вставить запятую, чтобы мы могли добавить больше кода. Для начала добавим ключевое слово main:

"main": "app.js",

Обратили внимание на запятую? Она здесь потому, что мы собираемся добавить ещё кое-что. После этого добавьте в объект engines инструменты, которые нужны для запуска этого приложения:

"engines": {
  "node": "0.10.26",
  "npm": "1.4.3"
}

У вас должно быть что-то вроде следующего:

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "express": "~4.0.0",
    "static-favicon": "~1.0.0",
    "morgan": "~1.0.0",
    "cookie-parser": "~1.0.1",
    "body-parser": "~1.0.0",
    "debug": "~0.7.4",
    "jade": "~1.3.0"
  },
  "main": "app.js",
  "engines": {
    "node": "0.10.26",
    "npm": "1.4.3"
  }
}

Не забудьте Grunt + Bower

Если на данный момент у вас нет любого пакета Grunt или Bower в объекте dependenciess, нам надо их получить.

Вы можете добавить их вручную в файле package.json или напрямую:

$ npm install --save grunt
$ npm install --save grunt-sass
$ npm install --save bower

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

$ npm install --save grunt-cli

Прямо сейчас вы должны быть довольны.

Инструкции после установки

Когда делаем развёртывание кода на Heroku, мы должны запустить некоторые команды, в основном установить пакеты Bower и выполнить задачи Grunt. Чтобы сделать это, мы должны добавить инструкции внутри объекта scripts файла package.json.

Непосредственно поcле "start": "node ./bin/www" добавьте:

"postinstall": "./node_modules/.bin/bower install && ./node_modules/.bin/grunt"

Теперь у нас есть всё что нужно, чтобы Heroku установил пакеты и запустил скрипты.

Добавление Procfile

Это файл, который необходим Heroku для запуска приложения.

$ touch Procfile

Добавьте в него следующий код:

web: npm start

Heroku будет использовать это для запуска приложения.

Создание хранилища Git

Важно сделать хранилище Git до создания сервера Heroku. ПОДОЖДИТЕ! Прежде, чем вы сойдёте с ума на Git, есть некоторые вещи, которые мы должны сделать.

У вас должен быть файл .gitignore в вашем хранилище на данный момент. Откройте его и убедитесь, что вы игнорируете все node_modules, все bower_components и что-то в диапазоне /stylesheets/*.css.

node_modules
public/stylesheets/*.css
bower_components

Отлично. Теперь вы можете сделать git init своего хранилища.

$ git add .
$ git commit -m "initial commit"

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

Развёртывание кода

Это довольно сложно. Убедитесь, что следуете данным командам:

$ heroku create <название приложения>
$ git push heroku master

Радуйтесь

Если всё хорошо, вы должны увидеть, что вам вернулось нечто вроде этого:

http://<название приложения>.herokuapp.com/ deployed to Heroku

Переходите по этому адресу и радуйтесь!

Автор и редакторы

Автор: Дейл Санде
Последнее изменение: 19.10.2015
Редакторы: Клим Щербаков