※この記事はWeb API Advent Calendar 2014向けに書いてます。
最近何かと話題のBaaS/mBaaSを手軽に試せる環境が apache usergrid_です。
usergrid_はapacheインキュベータプロジェクトとして開発が進められています。
前提条件
usergrid_の環境を構築するためには以下のアプリケーションが事前にインストールされている必要があります。
- JDK 7以上
- apache Maven 3.0.0以上
- nodejs with npm
今回はJDK 7と、Maven 3.2.3を使って環境を構築しました。
usergrid_をgithubからcloneする
usergridはGitHubでソースが公開されていますので、以下のコマンドで取得が可能です。
$ git clone https://github.com/apache/incubator-usergrid.git
gitコマンドが使えない場合は、[Download ZIP]ボタンから最新版をダウンロードしてください。
stackのビルド
まずはBaaSのバックエンド部分のビルドを行います。
$ cd usergrid/stack $ mvn clean install -DskipTests=true
正常にビルドが完了すると以下のようになります。
[INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] Usergrid Parent .................................... SUCCESS [02:31 min] [INFO] Usergrid Java SDK 0.0.3 ............................ SUCCESS [ 28.372 s] [INFO] Usergrid Build Tools ............................... SUCCESS [ 0.746 s] [INFO] Usergrid Config .................................... SUCCESS [ 0.731 s] [INFO] Usergrid Test Utils ................................ SUCCESS [ 45.073 s] [INFO] Usergrid Core ...................................... SUCCESS [01:00 min] [INFO] Usergrid Services .................................. SUCCESS [ 59.480 s] [INFO] Usergrid MongoDB Emulator .......................... SUCCESS [ 8.184 s] [INFO] Usergrid REST ...................................... SUCCESS [01:42 min] [INFO] Usergrid Tools ..................................... SUCCESS [10:28 min] [INFO] Usergrid Websocket ................................. SUCCESS [ 29.262 s] [INFO] Usergrid Launcher .................................. SUCCESS [10:07 min] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 28:47 min [INFO] Finished at: 2014-12-15T13:39:06+09:00 [INFO] Final Memory: 67M/418M [INFO] ------------------------------------------------------------------------
stackの起動と確認
早速stackを起動してみましょう。
$ cd launcher; java -jar target/usergrid-launcher-*.jar -db -init -nogui -p 8080
これでうまくいかない場合は
$ cd launcher $ java -jar target\usergrid-launcher-1.0.1-SNAPSHOT.jar target\usergrid-launcher-1.0.1-SNAPSHOT-tests.jar -db -init -nogui -p 8080
を試してみてください。
起動に成功すると、コンソールに
INFO: [HttpServer] Started.
が表示されます。
stackが正常に起動したかを確認してみましょう。
curl http://localhost:8080/status
上記コマンドを打つと
{ "timestamp" : 1418618903513, "duration" : 112, "status" : { "started" : 1418618885295, "uptime" : 18218, "version" : "1.0.1-SNAPSHOT", "cassandraAvailable" : true, "org.apache.cassandra.metrics.Cache.KeyCache" : { "Capacity" : { "type" : "gauge", "vale" : "[disabled]" }, "Entries" : { "type" : "gauge", "vale" : "[disabled]" }, "HitRate" : { "type" : "gauge", "vale" : "[disabled]" }, "Hits" : { "type" : "meter", "event_type" : "hits", "rate" : { "unit" : "seconds", "count" : 7, "mean" : 0.1900763526672633, "m1" : 0.849142923597687, "m5" : 1.2667723852503432, "m15" : 1.3541025406748082 } }, "Requests" : { "type" : "meter", "event_type" : "requests",
上記のような文字列が表示されます。※量が多いので全部は記載していません。
Organizationの作成
usergrid_はマルチテナントの仕組みとしてOrganization(組織)単位で管理しています。
早速、Organizationを作成してみましょう
$ curl -v -X POST -d 'organization=test-org&username=orgadmin&name=Administrator&email=admin@example.com&password=password' http://localhost:8080/management/organizations
organization=test-org:test-orgという名の組織を作成
username=orgadmin:orgadminというユーザ名を作成
name=Administrator:orgadminの氏名はAdministrator
email=admin@example.com:orgadminのメールアドレス
password=password:パスワードを設定
という意味になります。
* Adding handle: conn: 0x1c47190 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0x1c47190) send_pipe: 1, recv_pipe: 0 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to localhost port 8080 (#0) * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 8080 (#0) > POST /management/organizations HTTP/1.1 > User-Agent: curl/7.33.0 > Host: localhost:8080 > Accept: */* > Content-Length: 100 > Content-Type: application/x-www-form-urlencoded > } [data not shown] * upload completely sent off: 100 out of 100 bytes < HTTP/1.1 200 OK < Content-Type: application/json * Server grizzly/2.1.2 is not blacklisted < server: grizzly/2.1.2 < Access-Control-Allow-Origin: * < Date: Mon, 15 Dec 2014 05:57:52 GMT < Transfer-Encoding: chunked < { [data not shown] 100 976 0 876 100 100 1099 125 --:--:-- --:--:-- --:--:-- 1099{ "action" : "new organization", "status" : "ok", "data" : { "owner" : { "applicationId" : "00000000-0000-0000-0000-000000000001", "username" : "orgadmin", "name" : "Administrator", "email" : "admin@example.com", "activated" : true, "confirmed" : true, "disabled" : false, "properties" : { }, "uuid" : "4e4588fa-841f-11e4-90ea-15a96252d281", "displayEmailAddress" : "Administrator <admin@example.com>", "htmldisplayEmailAddress" : "Administrator <<a href=\"mailto:admin@example.com\">admin@example.com</a>>", "adminUser" : true }, "organization" : { "name" : "test-org", "properties" : null, "uuid" : "4e701b6a-841f-11e4-a73e-ab9984d6096d", "passwordHistorySize" : 0 } }, "timestamp" : 1418623071993, "duration" : 622 } * Connection #0 to host localhost left intact
status: “ok” となれば正常に作成されたことになります。
さいごに
インストールを駆け足で説明しましたが、お試しBaaS環境の構築は意外と簡単だったのではないでしょうか。
実際に使用するにはインターネットに公開する必要もありますし、REST APIのみで操作するのも大変ですのでUIがほしいところかと思います。
次回(あればw)はUIの構築について書いてみたいと思います。
また、BaaSについて詳しい話は「Web API Advent Calendar 2014」で、12/20にToshi Shibamotoさんが書いてくれると思います。(すみませんw)
ではでは