2014年12月4日木曜日

EC2 (Ubuntu) に Yesod を入れてみたメモ

AWSの EC2インスタンス上で、Yesod を動かすのに手間取ったので、メモしておく。

----
EC2 は、Ubuntu を使ってみた。Ubuntu Server 14.04 LTS (HVM), SSD Volume Type - ami-e74b60e6 というものを使用。

Security Group の設定では、TCP の 3000を 開けておく。キーペアもちゃんとログインできる奴を指定する。ちなみに Ubuntu の場合、ユーザ名は ec2-user ではなくて ubuntu になる。

ここまでが前提。以下、本題。

■ Haskell Platform のインストール
まずバイナリを持ってきて、チェックサムを確認する。
$ wget https://www.haskell.org/platform/download/2014.2.0.0/haskell-platform-2014.2.0.0-unknown-linux-x86_64.tar.gz
$ sha256sum haskell-platform-2014.2.0.0-unknown-linux-x86_64.tar.gz
tar の中身が、絶対パスになっているので、/ に移動してから展開する。展開したら、activate-hs を実行する。
cd /
sudo tar xvf /home/ubuntu/haskell-platform-2014.2.0.0-unknown-linux-x86_64.tar.gz
sudo /usr/local/haskell/ghc-7.8.3-x86_64/bin/activate-hs
ここまで、Haskell Platform の指示に従った。

■ 追加ライブラリ等のインストール
Haskell Platform の 指示の中に、「追加のライブラリのインストールが必要かも知れない」、「libgmp.so.10 は必要だ」などとある。いろいろ試行錯誤したところ、以下の追加インストールで上手くようだ。
cd ~
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install libgmp3-dev
sudo apt-get install libz-dev

■ Yesod のインストール
cabal update して、指示通りに cabal-install を入れなおし、yesod-bin をインストールする。

基本的には Yesod サイトの quick start guide の記述と同じだが、--force-reinstalls を指定している。このオプションを付けないと、「--force-reinstalls を付けてやり直せ」といった内容のメッセージと共にインストールが失敗する。

しばらく待つとインストールが終わるが、パスが通ってないので設定しておく。
cabal update
cabal install cabal-install
cabal install yesod-bin --force-reinstalls --max-backjumps=-1 --reorder-goals
PATH=$PATH:/home/ubuntu/.cabal/bin

■ scaffoldを起動してみる
まず適当にワークスペースを作っておく。
mkdir workspace
cd workspace/
yesod init を実行すると、プロジェクト名と永続化のタイプを聞いてくる。ここでは yesod01 、simple とした。
yesod init
yesod init が終わると、最後に起動するためのコマンドが表示されるが、ここでは敢えて別けて実行してみた(意味は変わらない)。
まず生成されたディレクトリに入って、次にビルド。ビルドできたら実行。
cd yesod01/
cabal install -j --enable-test --max-backjumps=-1 --reorder-goals
yesod devel
上手く行けば、コンソールにポート3000で起動したというログが出力され、ブラウザを開くと Welcome to Yesod! のページが表示されるはず。

----
本当は、hsenv か cabal sandbox で動かすつもりだったけど難航したので、とりあえず素で動かしてみた。サンドボックス環境が上手くいったら、続きを書く。

0 件のコメント:

コメントを投稿