2012-01-23
MacでHerokuにYesodを(Herokuに公開編)
さていよいよYesodアプリをHerokuに公開します。
ただ、当然ながらHerokuにアカウントが必要なので、作業はそこからスタートです。
相変わらずUbuntu on VirtualBoxで作業します。
HerokuにSign Up
これはHerokuのサイトから簡単に出来ました。
ちなみにHerokuのサイトの色使いが好きです。
Heroku Toolbeltをインストール
このツールをインストールすると、herokuコマンドを通してHerokuのリモートサイトを操作出来るようになります。
このツールをUbuntu on VirtualBoxにインストールしないといけないのですが、詳しい手順をメモし忘れたの紹介出来ません・・・
結構面倒だったので、自分としてもメモを取っておかなかったことを後悔しています。絶対、将来また同じことをやろうとして同じところにはまると思う。
ちなみにMacの場合、Heroku Dev Center内のGetting Started with Herokuの「Step 2: Install the Heroku Toolbelt」からダウンロード出来ます。
Gitをインストール
Herokuは先のHeroku Toolbeltに加えてgitを使います。例えば実行ファイルのアップロードはgitで行います。
sudo apt-get install git-core
Macの場合は
sudo port install git-core
で。
gitは今回初めて触りましたが、便利ですね。Subversionから鞍替えしようと思います。
gitリポジトリとHerokuスタックの作成
Herokuに実行ファイルをアップロードするのはgitで行います。そのため、gitのローカルリポジトリを作っておく必要があります。
git init
次にHerokuにスタックを作成。
heroku create --stack cedar
これでgitのリモートにherokuのサイトが登録されます。
Yesodアプリのビルド
cabal install
Yesod0.9.4からは、-fproductionフラグは不要になっているので、このコマンド一発でビルド出来ます。
これでdist/build/first-heroku/に実行ファイルfirst-herokuが出来ます。
Procfileを移動して編集
deploy/ProcfileはHerokuにデプロイするときに必要なファイルで、ルートディレクトリに置いておく必要があります。
mv deploy/Procfile .
また、Yesod0.9.4でビルドすると作成される実行ファイルを起動するには、引数が1つ必要なのですが、scaffoldが生成してくれるProcfileにはこれが反映されていません。なのでProcfileを編集する必要があります。
編集前
web: ./dist/build/first-heroku/first-heroku -p $PORT
編集後
web: ./dist/build/first-heroku/first-heroku production -p $PORT
package.jsonを作成
よく分かりませんがpackage.jsonを作らないとHerokuで動かないらしいです。
echo '{ "name": "first-yesod", "version": "0.0.1", "dependencies": {} }' >> package.json
Herokuにアップロード
まずはローカルリポジトリに今までに作ったファイルをコミット。
git add .
git commit -m "master"
さていよいよHerokuにアップロード!
ブランチを切った方がいい、と書いてあるサイトも多いしProcfileのコメントにもそう書いてありますが、Ubunto on VirtualBoxがそもそもアップロード専用なので、ここではブランチは切りません。
git push heroku master:master
試してみる
heroku open
すると・・・
おおおおおおおおおおおおおお!!!!
表示された!!!!
これはすごい!!!!
目に見えておかしいところもあるのですが、Yesodの領域で解決出来る気がします。
最大の難関と思われたビルド&デプロイをクリア出来たのは大きい!
今回のソース、一応githubにアップしておきます。
http://github.com/jabaraster/first-heroku
HaskellでWebアプリを書いて公開出来るうれしさ
もうなんというか、感無量です。
数年越しで勉強しているHaskellでWebアプリ作って公開出来る時代が来るなんて!
あきらめずにやってきてよかったです。
これで「MacでHerokuにYesodを」計画の足がかりが出来ました。
うれしいです。
- 4 http://m.facebook.com/l.php?u=http://d.hatena.ne.jp/jabaraster/20120123/1327323918&h=AAQEi72NC
- 3 http://search.yahoo.co.jp/search?p=JSF+行ごとに色を変える&tid=top_ga1&ei=UTF-8&qrw=0&pstart=1&fr=top_ga1&b=11
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=jsf2 サーバ&source=web&cd=5&ved=0CEYQFjAE&url=http://d.hatena.ne.jp/jabaraster/20110202/1296619215&ei=Ff8gT_7fFpGSiAfatITXBA&usg=AFQjCNFgHqiQg7z7aRZQqJPP8cd4EdzIfg&sig2=RoTn0nUxAL
- 2 http://k.hatena.ne.jp/keywordblog/Haskell
- 2 http://www.facebook.com/l.php?u=http://d.hatena.ne.jp/jabaraster/20120123/1327323918&h=gAQFA4J5eAQHFWHj2F701vLKymVMEKtghjCpehnh5wOc01A
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=@conversationscoped&source=web&cd=2&ved=0CC4QFjAB&url=http://d.hatena.ne.jp/jabaraster/20110221/1298299536&ei=RogfT8WbFqzsmAWh0oCkDg&usg=AFQjCNHVaQSW6qbBaAygFcm_14JwDU1YFw&cad=rja
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=配列 最後 カンマ java&source=web&cd=2&ved=0CCwQFjAB&url=http://d.hatena.ne.jp/jabaraster/20111201/1322751759&ei=E2EeT_SBHouOmQXH3
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=done loading package &source=web&cd=1&ved=0CCIQFjAA&url=http://d.hatena.ne.jp/jabaraster/mobile?sid=ce377394415a01a7&date=20111028§ion=1319757132&ei=LWQdT4yHOYaGmQW_3tmYCg&usg=AFQjCN
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=eclipseでCriteriaQueryを使いたい&source=web&cd=2&ved=0CDAQFjAB&url=http://d.hatena.ne.jp/jabaraster/20110205/1296867673&ei=lnofT5_QEomTiQe-gfX6DQ&usg=AFQjCNE8n_
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=jsf 拡張子 web.xml&source=web&cd=1&ved=0CDIQFjAA&url=http://d.hatena.ne.jp/jabaraster/20110404/1301922575&ei=0gQeT5KHKae4iAe8pL3wDQ&usg=AFQjCNGZWcRLCqKYspUGd9IxOjlXzFdrtg&sig2=4

