【やった】dotcloud/MongoDBを試す。そしてクライアント(php)から接続する。
dotcloud上でMongoDBも使えるみたいなので、試してみます。 そのメモ。 内容は、 1.dotcloud上でMongoDBを試す。 2.クライアント(php)から接続する。 の2本です。
▼使い方 ⇛デプロイする
[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
[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"));
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/