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のローカルリポジトリを作っておく必要があります。

Yesodアプリのルートディレクトリで作業します。

まずは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にアップロード

Herokuにアップロードするにはgitを使います。

まずはローカルリポジトリに今までに作ったファイルをコミット。

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を」計画の足がかりが出来ました。
うれしいです。