Macでもmruby-simplehttpserverをcapstanを使ってお手軽簡単にOSv向けにビルド&実行

前回の記事ではLinuxに絞ってcapstanを使ったmruby on OSvのビルド&実行方法を紹介しましたが、アプリケーションのコンパイルが他プラットフォームでは出来ないと説明しました。

代わりに、github上にビルド済みのアプリケーションバイナリを置いて、OS Xでcapstanを使ってOSvのイメージを作成&実行することに成功したので、これを紹介します。

brewで必要になるアプリをインストー

brew install go qemu git

環境変数を設定

echo 'export GOPATH=$HOME/go'    >>  $HOME/.profile
echo 'export PATH=$PATH:$GOPATH/bin'  >> $HOME/.profile
source  $HOME/.profile

capstanをインストー

go get github.com/cloudius-systems/capstan

mruby-simplehttpserver用のcapstanリポジトリをチェックアウト

git clone -b prebuilt https://github.com/syuu1228/capstan-mruby-simplehttpserver.git

リポジトリのビルド

QEMUのウインドウが一時的に表示されることがあるようですが、特に触らなくて問題ありません。

cd capstan-mruby-simplehttpserver
capstan build

VMの実行(VM上のポート番号80をホスト上のポート番号10080へ転送)

ハイパーバイザを指定しない場合VirtualBoxが用いられますが、正常に動作するようです。

capstan run -f 10080:80

http serverへのアクセステスト

curl http://127.0.0.1:10080/html -v

* About to connect() to 127.0.0.1 port 10080 (#0)
*   Trying 127.0.0.1...
* Adding handle: conn: 0xd0d8f0
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0xd0d8f0) send_pipe: 1, recv_pipe: 0
* Connected to 127.0.0.1 (127.0.0.1) port 10080 (#0)
> GET /html HTTP/1.1
> User-Agent: curl/7.32.0
> Host: 127.0.0.1:10080
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: my-mruby-simplehttpserver
< Date: Mon, 19 May 2014 17:57:13 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 28
< 
<H1>Hello mruby World.</H1>
* Closing connection 0