bigsleepの日記

2014-09-12

herokuにアプリをおいてみた

01:14

webアプリケーションの練習で書いてみたものを置いてみるところがなかったのでherokuにおく方法を調べてみました。

色々と面倒なところもあるものの無料でも使えますし、サーバーを借りてきてあれこれするのも面倒さはあるので場合によっては便利だと思います。



作ったもの

http://deptree.heroku.com

f:id:bigsleep:20140913005407p:image

hackageの情報を取ってきてなにか表示するものにしようという感じで

ライブラリの依存関係のグラフを適当に表示する感じのページです。

バージョンとかも無視していて最新のしか見てないので正しいものではないです。

あとcabalファイルにif文とかが入っていると上手く情報とれてないみたいです。

かなりいい加減であまり速くない感じなのでtimeoutするページがあるかもしれません。

ソースは下のところにおいてます。

https://github.com/bigsleep/WebAppExperiment2



herokuに置くときに参考にしたもの

下のページの情報などを参考にさせていただきました。

http://blog.chairoi.me/entry/2014/02/25/130259

http://d.hatena.ne.jp/thimura/20111117/1321480728

http://qiita.com/philopon/items/266743897068b9db7d96

http://qiita.com/philopon/items/6c7dd7a8ff9f394fc7a7



herokuに置く大まかな手順

haskellなどで作ったものを置くときのメモです。

他の人が書いてる手順をなぞってやった感じなのであまり特別書くことはないです。

スタックというのがOSみたいな感じらしいんですが、

スタックのcedar-14というのがubuntu-14.04を使ってるようなので

比較的環境を用意しやすそうでした。

元から入ってないライブラリバイナリを入れるにはbuildpackという仕組みを使うか

ファイルを直接コミットしてLD_LIBRARY_PATHなどを設定してパスを通す感じで動かすようです。

あまりよくわかってませんがdockerというのがあって

これで仮想マシンのような感じでherokuと同じ環境を用意してビルドしたり、足りないライブラリを拾ってきたりできるようです。

dockerで環境を準備してそのままpushとかできたほうが便利そうな気がしますがそれはできないっぽいです。

下のページにcedarのリポジトリがありました。

https://registry.hub.docker.com/u/heroku/cedar/dockerfile/



以下適当な手順です。

  • sshの公開鍵を登録
  • node.jsとして認識させるためpackage.json作成
  • Procfile作成。起動コマンドのような感じ
  • バイナリを作る。ubuntu-14.04で作れば割とそのままcedar-14で動くかもしれません
  • 公開用のファイルをコミット
  • heroku create --stack cedar-14
  • git push heroku master
  • heroku ps:scale web=1

設定ファイルを書き換える

起動時にjsonファイルを読み込む感じで設定を与えてたんですが、

ポートなどはherokuでは環境変数で取得するようです。

ソースの方を環境変数を見るように修正するのは別の環境とかで使えなくなってしまうので微妙です。

設定ファイルにENV_PORTなど書いておいて起動時に使うスクリプト

置換してやる方法でやってみたところ、動いたのでとりあえずこれでいいかなという感じです。

パスワードなどの公開したくないものも同じように置換で入れるのもいいかもしれません。

トラックバック - http://d.hatena.ne.jp/bigsleep/20140912/1410538491
おとなり日記