前提環境:
- Yesodチュートリアルのアプリケーション(Yesog)が動作している
- gitがインストールされている
- heroku toolbeltがインストールされている
- 動作確認した環境の詳細
- % ghc --version
- The Glorious Glasgow Haskell Compilation System, version 7.6.3
- % cabal --version
- cabal-install version 1.18.0.2
- using version 1.18.1.2 of the Cabal library
- % yesod version
- yesod-bin version: 1.2.6
- % heroku version
- heroku-toolbelt/3.4.1 (x86_64-darwin10.8.0) ruby/1.9.3
デプロイ手順:
以下の手順を実行することでYosogアプリケーションをHeroku上にデプロイし、クライアントからアクセスできるようになります。- Yosog.cabalをエディタで開き、以下の取り消し線部分の記述を削除する
- YosogルートディレクトリにProfileを用意する
- gitリポジトリにファイルを登録
- heroku上にアプリケーションを登録
- heroku上にアプリケーションをデプロイ
executable Yosog
if flag(library-only)
Buildable: False
main-is: main.hs
hs-source-dirs: app
build-depends: base
, Yosog
, yesod
この記述があると、cabal runで以下のようなエラーが発生してしまいます。原因不明…。
cabal: Cannot build the executable 'Yosog' because the component is marked as
disabled in the .cabal file.
% echo "web: cabal run -- production -p $PORT" > Profile
このファイルはHerokuがサーバーを起動する手順になります。ローカル環境でも同様のコマンドでサーバーが起動することを確認しておきましょう。
% git init .
% git add *
% git commit -m "Initial commit." .
% heroku create --stack=cedar --buildpack https://github.com/begriffs/heroku-buildpack-ghc.git
% git push heroku master
10分くらい時間がかかります。状況によっては15分のビルド時間制限をオーバーしてしまうこともあるようです。そのようなときには、以下の手順で別サーバーでビルドを実行することができる模様。
% heroku plugins:install https://github.com/ddollar/heroku-anvil
% heroku build -r -b https://github.com/begriffs/heroku-buildpack-ghc.git
heroku open
上記のコマンドでパブリックなサーバーとして起動しているYosogアプリケーションにアクセスすることができます。GitHubでこの環境をを公開しておきます。
https://github.com/kurokawh/Yosog.git
参考情報:
以下、参考にした情報についてまとめておきます。複数サイトの情報を参照しつつ作業したのですが、自分の環境ではうまくいかなかった手順もありました。最終的に最も成功に近かった手順は以下のサイトの情報になります。以下のサイトの情報も試しましたが、いずれもクライアントからアクセスできる状態にたどりつけませんでした。
- Haskell Buildpack Demo
- サンプルのデプロイ、動作確認は成功。だが、自環境のYosogアプリについては、deployまで成功したが、heroku openを実行してもサーバーとは繋がらず…。
- MacでHerokuにYesodを(Herokuに公開編)
- この手順はバイナリをgitコミットして、コンパイルなしてサーバー上で起動する手順だと思われます。mac上でビルドしたバイナリはdeployまではできるものの、heroku openで繋がりませんでした。
その他、新たに学習した情報のメモ
いろいろはまったことで、自分にとっての新しい知識が少しだけ増えました。Herokuへのデプロイと直接は関係しませんが、それらもまとめておきます。- yesodアプリをリリースビルドする手順
- scafoldsiteではyesod develでビルド&テストサーバーが起動されますが、リリース用のバイナリを生成するには
- cabal install
- を実行することになります。このコマンドを実行すると
- dist/dist-sandbox-5ba8a016/build/Yosog/Yosog
- が生成されます。production -p XXXという引数とともにこのバイナリを起動すると、プロダクション版のサーバーを起動できます。
- dist/dist-sandbox-5ba8a016/build/Yosog/Yosog production -p 3000
0 件のコメント:
コメントを投稿