webアプリケーションの練習で書いてみたものを置いてみるところがなかったのでherokuにおく方法を調べてみました。
色々と面倒なところもあるものの無料でも使えますし、サーバーを借りてきてあれこれするのも面倒さはあるので場合によっては便利だと思います。
hackageの情報を取ってきてなにか表示するものにしようという感じで
ライブラリの依存関係のグラフを適当に表示する感じのページです。
バージョンとかも無視していて最新のしか見てないので正しいものではないです。
あとcabalファイルにif文とかが入っていると上手く情報とれてないみたいです。
かなりいい加減であまり速くない感じなのでtimeoutするページがあるかもしれません。
ソースは下のところにおいてます。
https://github.com/bigsleep/WebAppExperiment2
下のページの情報などを参考にさせていただきました。
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
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/
以下適当な手順です。
起動時にjsonファイルを読み込む感じで設定を与えてたんですが、
ポートなどはherokuでは環境変数で取得するようです。
ソースの方を環境変数を見るように修正するのは別の環境とかで使えなくなってしまうので微妙です。
設定ファイルにENV_PORTなど書いておいて起動時に使うスクリプトで
置換してやる方法でやってみたところ、動いたのでとりあえずこれでいいかなという感じです。
パスワードなどの公開したくないものも同じように置換で入れるのもいいかもしれません。