More Related Content
Similar to start Heroku (20)
start Heroku
- 7. Herrokの提唱 公開までの手間がいらない
アイデア
の実現
Herokuに展開
⇓
コーディン インターネットに公
グ 開
- 9. まとめ スピードと柔軟性
Gitによ
るデプロ
イ
スピー
ド
Herokuの
add-ons
強み
豊富な機 スケーラ
能 ビリティ
- 12. 必要なもの
Ruby
rvm(使ったほうが便利)
Git
★必須 Herokuアカウント
Herokuで公開するアプリケーション
(今回はRubyアプリケーション)
- 13. heroku gemのインストール
$ gem install bundler
$ bundle init
$ vim Gemfile ←Gemfileに使用するgemsを記述
source http://rubygems.org
gem ‘heroku’
gem ‘sinatra’
bundlerでGemfileのgemsをアプリケーション
…その他必要なgem 以下の/vendor/bundleにインストール
↓
$ bundler install –path /vendor/bundle
$ vim .gitignore ←herokuの容量がもったいないので
gemsはherokuのリポジトリにpushしない
vendor/bundle
- 15. Herokuにアプリケーションを作成
する
$ heroku create アプリ名
または
$ heroku create
アプリケーション名を変更をする
$ heroku rename 新しいアプリ名
- 16. デプロイ(初回)
Herokuにマスターブランチを作成する
$ git push heroku master
DBを使用する場合、HerokuのDBにマイグレーションを行う
$ heroku db:migrate
$ heroku db:push <db url>
- 19. 標準(無料)の範囲
App 1アカウントにつきいくつ作成できるのか不明
容量 100MBまで(git、gem関連以外)10MB以下を推奨
プロセス 1dyno
リクエス 1dyno(1プロセス)につき10-50リクエスト(秒)
ト
メモリ 1dynoにつき最大300MBまで
DB PostgreSQL 5MB
Ruby 1.9.2
ログ 1500行まで
Add-ons 最低グレードは無料(使用するには登録が必要)
- 21. 環境変数
環境変数を設定する
$ bundle exec heroku config:add PASSWORD=“password”
stackコマンドで切り替える
環境変数を参照する
ENV[‘PASSWORD’]
設定した環境変数一覧を見る
bundle exec heroku config
- 22. メンテナンスモード
メンテナンスモードにする
stackコマンドで切り替える
$ bundle exec heroku maintenance:on
環境変数を参照する
メンテナンスモードを解除する
$ bundle exec heroku maintenance:off
- 23. ログ
環境変数を参照する
$ bundle exec heroku logs
メンテナンスモードを解除する
$ bundle exec heroku logs –n 200
$ bundle exec heroku logs --tail
- 24. チーム開発
プロジェクトにメンバーを追加する
環境変数を参照する
$ bundle exec heroku sharing:add xxx@xxx.com
課金アカウントを変更する
$ bundle exec heroku sharing:transfer xxx@xxx.com
- 31. DBバックアップ(herokuサーバー
上)
$ bundle exec heroku addons:add pgbackups
$ bundle exec heroku pgbackup:capture
$ bundle exec heroku pgbackups
$ bundle exec pgbackups:restore バックアップファイル名
- 36. Herocutterプラグイン
$ bundle exec heroku plugins:install git://github.com/hone/heroku_herocutter.git
インストールが簡単になる
$ bundle exec heroku plugins:install git://github.com/hone/heroku_colorize_console.git
↓
$ bundle exec heroku plugins:install colorize_console
- 39. stack
Stack一覧を確認する
aspen-mri-1.8.6
bamboo-ree-1.8.7 Ruby
デフォルト → bamboo-mri-1.9.2
*
cedar (beta) その他
Editor's Notes
- 本日のテーマはRuby開発者であれば誰もが触ったことがあろうHerokuについてのお話です。
- まずはおさらいHerokuって?
- 一部にハーオークーとよぶ人もいるので、呼び方は人それぞれ。気になる人はyoutubeなどでネイティブの発音を聞いてみてください。
- なぜ”俳句”なのかはよくわかりませんが、Rubyのふるさとの日本文化に敬意をあらわして、というコンセプトからHerokuのサービスには日本語や日本的なモチーフが多く使用されています。それらについては日本語の意味をなしていないため、特別な意味合いはないと考えられます。
- PaaS(パース)とはソフトウェアを構築、稼働する土台となるプラットフォームをインターネット経由で提供するサービスです。--2007/7にSalesforce.comがSaaSの進化版として提唱しました。簡単に言うと、自分で作成したアプリケーションを簡単にインターネット上に公開することができるサービスです。
- Herokuのなにがすごいか
- 元HerokuSEO(現在はSalesforce.comのシニア・バイス・プレジデント)のバイロン・セバスチャン氏曰く、「開発者は偉大なアイデアを思いついたら、Rubyのプログラムにして、Herokuのプラットフォームに展開すればいい。そうすれば、そのアイデアはすぐに実現可能になり、開発者はヒーローになれる。」どういうことかというと・・・
- Herokuを使えば開発者はサーバの購入コスト、環境構築設定やデプロイにかかる時間コストを大幅に削減することができ、アプリケーションの公開に至る開発スピードを劇的に上げることができます。コーディングを行ったら、次に、gitでherokuの公開レポジトリにソースをコミットするだけでデプロイが完了し、インターネット上にアプリを公開することができます。驚異的なスピードで開発を行うRuby開発者は、Web開発のヒーローになる!ということらしいです。さらに、アプリケーションを公開するだけではなく、公開後の運用や拡張を行うための機能もがふんだんに用意されています。
- まとめると、Herokuの強みは、①スピード ローカルのプログラムをgitでHerokuに展開すれば一瞬で利用可能になります②スケーラビリティ 必要になった時に必要なだけ即座にMailやcron、DBなどの機能や、メモリなどのリソースの拡張が行えます③豊富な機能 Node.jsやNoSQLデータベースなど話題のサービスを使用できるなど、アーリーアダプターの志向に対応した機能を提供しているため、最近のクラウドを取り巻く環境を簡単に手に入れることができます。また、アプリケーションを公開するだけではなく、ログやバックアップ、解析、ステージング環境などに対応する機能が環境が整っています。
- 実際にHerokuでアプリケーションを公開する手順です
- ローカルでアプリを作成します。ローカルのアプリをheroku上に展開します。デプロイはgit push herokuコマンドのみ。これだけでアプリケーションをインターネット上に公開することができます。
- herokuはRuby以外の言語環境にも対応していますが、今回はRubyアプリケーションを公開します。Rubyのバージョンやgemの管理を簡単にするため、Rubyのバージョン管理をおこなうrvmを使用します。herokuサーバーへのソースの展開はgitを使用して行うため、gitの導入は必須です。herokuのアカウントはメールアドレスの登録のみで簡単に作成することができます。
- herokuの操作はherokuのサイトからGUIで行う方法と、コマンドラインからherokuコマンドを使用してCUIで行う2通りの方法が可能ですが、herokuコマンドを使用するためにはheroku gemを導入する必要があります。今回はCUIから操作を行います。herokuではすでにgemsが用意されているため、使用するgemのインストールなどは不要ですが、herokuで用意しているgem以外のgemを使用したい場合、や、gemのバージョンを指定したいは2通りの方法でgemsを管理することができます。ひとつは.gemファイルを作成し、その中に使用するgemを記述してpushする方法ですが、バージョンの指定やgems同士の互換性は管理できないため、herokuではgems管理ラッパーであるbundlerを使用することを推奨しています。herokuの公開リポジトリにpushすると、.gemファイル、もしくはbundlerで管理するGemfileとGemfile.lockファイルを参照してherokuが自動でgemsのインストールを行なってくれます。.gemファイルとGemfile.lockファイルの共存はできません。(.gemファイルが優先されます)
- Herokuで公開するアプリケーションを作成します。今回は省略します。
- herokuコマンドで、heroku上にgitリポジトリと、アプリケーションを作成します。アプリケーション名を付ける場合はheroku内で一意な名前のみ命名することができます。サービス名がURLになるので、heroku上ですでに存在するサービス名は命名することができません。アプリ名を省略すると、自動でアプリケーション名が割り振られます。作成時に命名したアプリケーション名はいつでも変更することが可能です。変更する場合は、コマンドラインから $ heroku rename NEWNAME コマンドで変更を行うか、herokuサイトからアプリケーション設定画面で変更することができます。
- デプロイは、herokuのmasterリポジトリにpushするだけでです。
- 変更を反映させたい場合は、Herokuの公開リポジトリに変更をpushするだけで変更が反映されます。
- pushしたソースが実際にデプロイされ、アプリケーションが公開されたか確認してみます。
- デフォルトのHerokuの装備についてです。1アカウントにつき作成できるアプリケーションの数に制限は設けられていません。そのため、ステージング環境を保持することも容易です。容量ですが、この100MBはソースを圧縮したサイズで100MBまでです。(git push herokuをすると自動で圧縮されます。)Dyno(ダイノス)はCPUリソースの設定単位で、1Dynoが1プロセスです。1Dynoのメモリ使用量は最大300MBまでです。WebアプリケーションサーバープロセスであるWebDynosと、バックグラウンドプロセスであるWorkerDynosが設定可能です。設定する際は、上限値を設定します。3にすれば3dynos分のリソースが使用されるわけではなく、溢れた容量分が設定値まで拡張されると考えてください。標準ではWebDynosが1Dyno割り当てられています。DBは標準ではPostgreSQLが5MB用意されていますが、add-onsを使用することで容量を増やすことや、MysqlやMongoDBなどのDBを使用することができます。ログは1500行までフィッチすることができます。add-onは最低グレードは大抵が無料で提供されています。(ただし、アドオンが無料であっても連携先のサービスが有料の場合があります。)無料でも使用登録の際にクレジットカードの登録を求められます。ただし、無料の機能を使用している範囲内で課金されることはありません。サービスの成長に合わせて課金していくのが一般的です。
- Herokuには標準で便利な機能が用意されています。ありすぎて書き切れないのでその一部を紹介します。
- パスワードなど、コード内に記述したくない値を環境変数としてherokuに保持させることができます。具体的な使用例としては、Twitterやfacebookなどの外部サービスと連携したアプリを作成する場合、aouth_tokenなどを環境変数にもたせておくと、本番環境とステージング環境で、異なったtokenで同じソースを使用できるなど、汎用的な使い方ができます。
- メンテナンス中画面に切り替える場合もherokuコマンド一つで行うことができます。ユーザーがメンテナンスモード中にアプリケーションにアクセスすると、メンテナンス画面のレスポンスが返されますが、この画面をカスタマイズしたい場合はcustome_error_pagesアドオンを導入します。このアドオンではエラー画面も設定することができます。
- 標準のログコマンドでは最近の100行を出力します。-nオプションを指定することで、1500行まで取得することができます。その他に、--tailオプションでリアルタイム出力を行ったり、プロレスごとのログ出力を行うことも出来ます。
- アプリケーションの共同開発を行うには、herokusharing:addコマンドの後に、追加するユーザーのメールアドレスを指定します。コマンドを発行すると、追加ユーザー宛てにメールが送信され、URLリンクをクリックすることで招待を認可します。共有しているプロジェクトが課金サービスを使用している場合に、支払いを行うユーザーを変更することができます。課金対象ユーザーはプロジェクト一つにつき一人のみです。
- ここからはHerokuの拡張についてです。Add-onsはアプリケーションに対して機能を追加します。
- 外部ホスティングサービスとの連携や、DB、cron、メール、ロギング拡張、アナライザなどの機能はadd-onとして提供されています。標準装備以外のアドオンを使用するには、はじめにherokuのサイトからadd-onsの使用登録をしなければなりません。その際クレジットカードの登録を求められますが、課金されることはありません。初回に一度登録を行えば、2個目からは使用登録は要りません。
- Herokuで公開しているアプリケーションの拡張を行う
- cronアドオンを導入することで、バッチ処理を行うこともできます。一日一回実行するDailyCronは無料です。
- ssl:piggybackアドオンを導入することで、SSLを使えるようになります。
- custom_domainsアドオンを導入することで、独自ドメインを使用することができます。
- pgbackupsアドオンを導入することで、PostgreSQLのDBのバックアップを自動でキャプチャし、heroku上に保持することができるようになります。バックアップ2ファイルまでは無料です。captureでバックアップファイルを作成し、作成したバックアップはpgbackupsで確認することができます。Rstoreでリストアします。これらはすべて最低グレードなら無料で使用することができます。この他にも、様々なアドオンが提供されています。
- 次に、プラグインについてです。add-onsがアプリケーションに対して機能を追加するのに対して、pluginはherokuコマンドに対して機能を追加します。そのため、GUIから操作を行うユーザーに対しては必要がありません。herokuコマンドはプラグインという仕組みを持っていて、herokuのCUIでの操作をより快適にする機能を追加することができます。例えば、コードハイライトの機能を提供するプラグインなどがあります。
- プラグインは主にgithubで公開されています。プラグインをインストールするコマンドは、herokuplugins:installのあとに、gitリポジトリのパスを指定します。プラグインを使用するために、別途gemが必要な場合があります。
- これらのプラグインは有志によって主にgithubで公開されていますが、プラグインを統括しているカタログサイトが存在します。
- プラグインのカタログを提供するのがherocutterというサービスです。Rubygems.orgの前身である、gemcutter.orgのherokuプラグインバージョンとして展開されています。Gemcutterと同じく、自分で開発したプラグインを自由に追加することが可能になっています。現在、18個のプラグインが登録されています。
- Herocutter用のプラグインもあり、これを導入することにより、カタログ上のプラグインのインストールがプラグイン名のみで行えるようになります。
- 2011/10現在、対応言語は6つ。フレームワークはなんでもOK。
- Ruby以外のアプリケーション環境を使用する場合はVMを切り替えます。Ruby以外のアプリを動かすには、Ceader(シーダー)を選択します。
- 環境を切り替えるには、herokuアプリケーション作成時にオプションを付けるか、stack:migrateコマンドを使用します。変更はpushした時にはじめて切り替わります。
- Herokuで提供しているドキュメントがわかりやすいので詳しくはHerokuサイトのドキュメントをどうぞ。