【やった】dotcloud/MongoDBを試す。そしてクライアント(php)から接続する。

dotcloud上でMongoDBも使えるみたいなので、試してみます。 そのメモ。 内容は、 1.dotcloud上でMongoDBを試す。 2.クライアント(php)から接続する。 の2本です。

 

 

★1.dotcloud/MongoDBを試す。

▼使い方 ⇛デプロイする

[mickey] % dotcloud deploy -t mongodb mickey.mongo
Created "mickey.mongo".

⇛確認

[mickey] % dotcloud info mickey.mongo                                                                                   [~]
cluster: wolverine
config:
    mongodb_password: 'PASSWORD'
created_at: 1307617430.8939099
namespace: mickey
ports:
-   name: ssh
    url: ssh://mongodb@mongo.mickey.dotcloud.com:7340
-   name: mongodb
    url: mongodb://root:PASSWORD@mongo.mickey.dotcloud.com:7341
state: running
type: mongodb

⇛接続

[mickey] % dotcloud run mickey.mongo mongo                                                                              [~]
# mongo
Warning: Permanently added 'mongo.mickey.dotcloud.com,174.129.17.131' (RSA) to the list of known hosts.
MongoDB shell version: 1.8.1
connecting to: test
>
>

⇛root確認(PASSWORDは、infoで取得した物)

> db.auth("root", "PASSWORD");
1

コレで認証しているよう。

⇛DB新規作成

> use test_mickey
switched to db test_mickey
db.getSisterDB("admin").auth("root", "PASSWORD"); 1 db.my_collection.save({"object": 1}); db.my_collection.count(); 1 db.my_collection.save({"object": 2}); db.my_collection.count(); 2

DB(test_mickey)にインサートと参照してみた。

⇛ユーザの追加

> db.addUser("worker", "eitaquei");
{
        "user" : "worker",
        "readOnly" : false,
        "pwd" : "775e2fc102608510e9999ee83f02e981"
}

これで、DB(test_mickey)に、USER(worker)が PASSWORD(eitaquei)、ReadWrite で追加された。 ReadOnlyの場合は以下のように指定する。

> db.addUser("worker", "eitaquei", true);

▼監視 ⇛ホスト名等

[mickey@mickey1st]~% dotcloud status mickey.mongo                                                                       [~]
#  sudo status mongodb 
Warning: Permanently added 'mongo.mickey.dotcloud.com,174.129.17.131' (RSA) to the list of known hosts.
mongodb start/running, process 67
Connection to mongo.mickey.dotcloud.com closed.

⇛ログ

[mickey] % dotcloud logs mickey.mongo                                                                                   [~]
#  tail -F /var/log/mongodb/*.log 
Warning: Permanently added 'mongo.mickey.dotcloud.com,174.129.17.131' (RSA) to the list of known hosts.
Thu Jun  9 11:27:56 [dur] lsn set 1323262
Thu Jun  9 11:28:56 [dur] lsn set 1382792
・・・・・・・・・・・・・・・・・・・・・

▼その他のコマンド サーバの情報など見れる。ここら辺は、mongodbそのまま。

use admin
db.stats();
db.serverStatus();

★2.クライアント(php)から接続する

ここからは、クライアントから接続してみる。 PHPでやってみる。

▼準備 ⇒PHP PHP5.2以降が必要らしいので、リポジトリを追加してインストール (CentOS5では、PHP5.1が標準になっている。)

rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
# vi /etc/yum.repos.d/utterramblings.repo
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

yum install php

[mickey]% php -v [~/test0609] PHP 5.2.16 (cli) (built: Dec 17 2010 14:11:16) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

リポジトリyum updateの際、参照しないようにしておく。

# vi /etc/yum.repos.d/utterramblings.repo
enabled=0

PECL

yum install php-pear

⇒mongo

pecl install mongo

ERROR: `phpize' failed

エラーがでた。調べると下のmoduleが足りないよう。

yum install php-devel

再度peclすると成功。 下記設定をphp.iniにしておく。

vi /etc/php.ini
extension=mongo.so

これで、準備OK。

▼実行 下記のスクリプトを適当な箇所に作成して、実行。 中身は、collectionの作成と1行挿入。

[mickey]% cat mongo.php                                                           ~/test0609]
$mongo = new Mongo("mongodb://root:PASSWORD@mongo.mickey.dotcloud.com:7341");
selectDB("test_mickey");
$col = $db->createCollection("fromphp");
$col->insert(array("php" => "1st"));

[mickey]% php mongo.php

mongodbを直接確認

> use test_mickey
switched to db test_mickey
> 
> 
> db.fromphp.find().limit(1);
{ "_id" : ObjectId("4df0befd8c8b336101000000"), "php" : "1st" }

追加されている。

こりゃすごいね! ^_^

※公式マニュアル見ると、mongoの32bitOS時の2GB仕様?に関してそのまま影響するとのこと。 まあ、AWS上にあるから当然か。。

▽参考にさせて頂きました thank you http://docs.dotcloud.com/components/mongodb/