Rails
Heroku

herokuでrailsアプリを本番運用する

herokuのプラン

Free(無料プラン)

herokuは一応無料プランもあるが、30分間トラフィックがない場合自動的にシャットダウン(スリープ)してしまうため、本番環境としては使えない。基本的にはhobbyプランに入る。

Hobby

  • sleepしないで使える
  • 独自ドメインを使える

Dynoについて

Dynoとは、Herokuアプリケーションが実際に実行されるプラットフォームのことです。その実体は、Amazon EC2の巨大インスタンス上で動作する軽量Linuxコンテナです。ベースとなるOSはUbuntuであり、ユーザーの作成したアプリケーションはすべてDyno上で実行されます。大きな特徴として、Dynoのファイルシステムは揮発性であることが挙げられます。例えば、ブラウザからアップロードしたファイルをDynoのディスク上に保存しても、そのファイルはDynoがシャットダウンした際に失われます。

 Dynoは常にHerokuのDynoManagerによって監視されており、毎日1度は再起動されます。データを保存する際には必ずHeroku Postgresなどの外部ストレージを利用します。また、DynoはHerokuの課金のための単位でもあり、DynoのサイジングをどのようにするかはHerokuを運用する上で大きなポイントになります。

SSH設定について

Herokuで公開したアプリケーションには、デフォルトで https://xxxxx.herokuapp.com/ というURLが割り当てられ、そこからアプリケーションにアクセスします。このURLは先頭が(httpでなく)httpsとなっていますが、これは説明は省略しますがざっくり言うと「安全な」通信が行なわれるということを意味します。しかし実際にサービスを運用するときには、このデフォルトのURLではなく独自に他サービスで取得したドメインを使うのが普通です。Herokuでは独自のドメインさえ持っていれば、どの料金プランでも無料でデフォルトのURLから独自のhttpで始まるURLに置き換えて公開することが可能ですが、SSLアドオンを利用することで、Hobby以上の有料プランであればhttpsで始まる独自URLも無料で設定することができます

定期実行はcronではなくHeroku Scheduler

Heroku Scheduler

定期的に実行する処理は普通cronを使用することが多いと思うがherokuでは上記のアドオンがある。実行頻度は Daily/Hourly/Every 10min から選択することができる。

railsの設定方法

DBはpostgres

railsはpostgresがherokuはmysqlがデフォルトなのでaddonでpostgresを入れる。

https://elements.heroku.com/addons/heroku-postgresql

そのままではheroku本番のDBの中身は見れない

本番のDBをみるためにはposticoで接続する。