54
Хокку про Heroku Сергей Селецкий @sseletskyy Европейское Агентство Высоких Технологий http://www.foss-sea.org.ua/ 2013

Хокку про Heroku

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Хокку про Heroku

Хокку про Heroku

Сергей Селецкий@sseletskyy

Европейское Агентство Высоких Технологий

http://www.foss-sea.org.ua/ 2013

Page 2: Хокку про Heroku

Что такое Paas(Product as a Service)

Cloud сервер + Agile + масштабирование

Page 3: Хокку про Heroku

Что такое Paas(Product as a Service)

● нет затрат на покупку серверов● на покупку серверного ПО● на зарплату администратора

● ежемесячная оплата услуг PaaS

с финансовой точки зрения

Page 4: Хокку про Heroku

GITSOURCE

CODEHEROKU

$ git push heroku your_branch:master

Page 5: Хокку про Heroku

HEROKU

PostgreSQL

STATELESSINSTANCEWORKER

DYNO

LOADBALANCER

STATELESSINSTANCE

WEBDYNO

$ heroku ps:scale web=1 worker=1

Page 6: Хокку про Heroku

HEROKU

PostgreSQL

STATELESSINSTANCE

DYNO

STATELESSINSTANCEWORKER

DYNO

LOADBALANCER

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

WEBDYNO

$ heroku ps:scale web=2 worker=2

Page 7: Хокку про Heroku

HEROKU

PostgreSQL

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

DYNO

STATELESSINSTANCEWORKER

DYNO

STATELESSINSTANCE

DYNO

LOADBALANCER

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

WEBDYNO

$ heroku ps:scale web=3 worker=3

Page 8: Хокку про Heroku

HEROKU

PostgreSQL

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

DYNO

STATELESSINSTANCEWORKER

DYNO

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

DYNO

STATELESSINSTANCE

WEBDYNO

LOADBALANCER

$ heroku ps:scale web=5 worker=5

Page 9: Хокку про Heroku
Page 10: Хокку про Heroku
Page 11: Хокку про Heroku
Page 12: Хокку про Heroku
Page 13: Хокку про Heroku
Page 14: Хокку про Heroku
Page 15: Хокку про Heroku
Page 16: Хокку про Heroku

==> heroku loginEnter your Heroku credentials.Email: [email protected] (typing will be hidden): Found the following SSH public keys:1) id_rsa.pub2) id_rsa_cloud.pubWhich would you like to use with your Heroku account? 2Uploading SSH public key /Users/gustotune/.ssh/id_rsa_cloud.pub... failed ! This key is already in use by another account. Each account must have a unique key.

Page 17: Хокку про Heroku

/Users/gustotune==> ssh-keygen -t rsa -C "[email protected]"Generating public/private rsa key pair.Enter file in which to save the key (/Users/gustotune/.ssh/id_rsa): id_rsa_gustotuneEnter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa_gustotune.Your public key has been saved in id_rsa_gustotune.pub.

/Users/gustotune==> mv id_rsa_gustotune* .ssh/

Page 18: Хокку про Heroku

/Users/gustotune==> heroku loginEnter your Heroku credentials.Email: [email protected] (typing will be hidden): password is hereFound the following SSH public keys:1) id_rsa.pub2) id_rsa_cloud.pub3) id_rsa_gustotune.pubWhich would you like to use with your Heroku account? 3Uploading SSH public key /Users/gustotune/.ssh/id_rsa_gustotune.pub... doneAuthentication successful.

Page 19: Хокку про Heroku
Page 20: Хокку про Heroku
Page 21: Хокку про Heroku

/Users/gustotune/rails_app==> git config -e

# комментарий: добавить три строчки в конец файла

[remote "foss-sea"] url = [email protected]:foss-sea.git fetch = +refs/heads/*:refs/remotes/heroku/*

или тоже самое одной командой

==> heroku git:remote -a foss-sea -r foss-sea

где -a - это название приложения -r - это git remote name (‘heroku’ по умолчанию)

Page 22: Хокку про Heroku

/Users/gustotune/rails_app==> git push foss-sea heroku:master

foss-sea = remote git repo in git configheroku = our local branch (локальная ветка)master = default branch at foss-sea

еще примеры ==> git push foss-sea master:master

==> git push foss-sea release_1.0:master

Page 23: Хокку про Heroku

==> git push foss-sea heroku:masterCounting objects: 8212, done.Delta compression using up to 4 threads.Compressing objects: 100% (2822/2822), done.Writing objects: 100% (8212/8212), 9.68 MiB | 74.00 KiB/s, done.Total 8212 (delta 5114), reused 8101 (delta 5027)-----> Ruby app detected-----> Compiling Ruby/Rails-----> Using Ruby version: ruby-2.0.0-----> Installing dependencies using Bundler version 1.3.2 New app detected loading default bundler cache Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment Fetching source index from https://rubygems.org/ Asset precompilation completed (28.32s) Cleaning assets-----> Discovering process types Procfile declares types -> web Default types for Ruby -> console, rake, worker

-----> Compiled slug size: 55.3MB-----> Launching... done, v5 http://foss-sea.herokuapp.com deployed to HerokuTo [email protected]:foss-sea.git * [new branch] heroku -> master

Page 24: Хокку про Heroku
Page 25: Хокку про Heroku
Page 26: Хокку про Heroku

/Users/gustotune/rails_app==> heroku run rake db:versionRunning `rake db:version` attached to terminal... up, run.9905Current version: 0

/Users/gustotune/rails_app==> heroku run rake db:migrateRunning `rake db:migrate` attached to terminal... up, run.7096Migrating to DeviseCreateUsers (20130910211249)== DeviseCreateUsers: migrating ==============================================-- create_table(:users) -> 0.0398s-- add_index(:users, :email, {:unique=>true}) -> 0.0203s-- add_index(:users, :reset_password_token, {:unique=>true}) -> 0.0260s-- add_index(:users, :confirmation_token, {:unique=>true}) -> 0.0222s== DeviseCreateUsers: migrated (0.1091s) ...

Подготовка базы данных

Page 27: Хокку про Heroku

БИНГО ;)

Page 28: Хокку про Heroku

Работа с дополнениямиadd-ons

Page 29: Хокку про Heroku
Page 30: Хокку про Heroku
Page 31: Хокку про Heroku
Page 32: Хокку про Heroku
Page 33: Хокку про Heroku
Page 34: Хокку про Heroku
Page 35: Хокку про Heroku

/Users/gustotune/rails_app==> heroku addons:add logentriesAdding logentries on foss-sea... failed ! Please verify your account to install this add-on ! For more information, see http://devcenter.heroku.com/categories/billing ! Verify now at https://heroku.com/verify

==> heroku addons:add newrelic:starkAdding newrelic:stark on foss-sea... done, v7 (free)Use `heroku addons:docs newrelic` to view documentation.

==> heroku addons:add pgbackups:auto-monthAdding pgbackups:auto-month on foss-sea... done, v8 (free)You can now use "pgbackups" to backup your databases or import an external backup.Use `heroku addons:docs pgbackups` to view documentation.

==> heroku addons:add rollbarAdding rollbar on foss-sea... done, v9 (free)Use `heroku addons:docs rollbar` to view documentation.

==> heroku addons:add sendgridAdding sendgrid on foss-sea... done, v10 (free)Use `heroku addons:docs sendgrid` to view documentation.

Page 36: Хокку про Heroku
Page 37: Хокку про Heroku

Настройка дополнений и переменных

окружения

Page 38: Хокку про Heroku

> heroku config:set MAILER_URL=foss-sea.herokuapp.com

или так если используется собственный домен> heroku config:set MAILER_URL=foss-sea.custom-domain.io

Page 39: Хокку про Heroku

Примеры дополнений

Page 40: Хокку про Heroku
Page 41: Хокку про Heroku
Page 42: Хокку про Heroku
Page 43: Хокку про Heroku
Page 44: Хокку про Heroku
Page 45: Хокку про Heroku

Играем с масштабированием и

ценой

Page 46: Хокку про Heroku
Page 47: Хокку про Heroku
Page 48: Хокку про Heroku
Page 49: Хокку про Heroku
Page 50: Хокку про Heroku

Полезные команды

Page 51: Хокку про Heroku

==> heroku ps # возвращает список работающих копий приложения=== web (1X): `bundle exec passenger start -p $PORT --max-pool-size 2`web.1: up 2013/11/29 01:02:25 (~ 46m ago)

==> heroku ps:scale web=2 worker=1Scaling web processes... done, now running 2Scaling worker processes... done, now running 1

==> heroku run bash # получить доступ к консоли сервера==> heroku run rails c # получить доступ к консоли приложения==> heroku run rake [your_rake_task] # вызвать rake задачу [your_rake_task]==> heroku logs --tail #просмотреть логи==> heroku labs:enable user-env-compile # решает ряд проблем при сборке==> heroku fork -a foss-sea foss-sea-copy # делает полную копию приложения ==> heroku maintenance:onEnabling maintenance mode for foss-sea... done

Page 52: Хокку про Heroku

Восстановление после неудачного обновления

Page 53: Хокку про Heroku

СпасибоСергей Селецкий

@sseletskyy

Page 54: Хокку про Heroku