46
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MongoDBインストール ~ PHPで使うまで

Last updated at Posted at 2014-08-17

yotsuba_s.jpg1.環境

さくらVPS(CentOS release 6.5 Final)
上記サーバーにyumでMongoDBを入れたあと、PHPから使えるように設定します。

yotsuba_s.jpg2.MongoDBをyumコマンドでインストール

【1】yumリポジトリ追加

# vi /etc/yum.repos.d/10gen.repo
--------------------------------
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=0

【2】MongoDBインストール

# yum install mongo-10gen mongo-10gen-server --enablerepo=10gen

【3】mongod サービスを起動

# /etc/init.d/mongod start

【4】コマンドラインで起動確認

# mongo

MongoDBのバージョンが表示されればOKです。exit で抜けられます。

yotsuba_s.jpg3.PHPから使えるようにする

前提:peclコマンドでPHP用mongoモジュールをインストールしますので、環境にphp-pearが無い場合は次の手順で入れて下さい。

【0】(まだ無い場合)php-pearをインストール

yum install php-pear
pear upgrade --force Archive_Tar
pear upgrade --force Console_Getopt
pear upgrade PEAR

【1】PHP用mongoモジュールをインストール

pecl install mongo

エラーが出る場合

pecl install mongo で「ERROR: `phpize' failed」が出た場合、php-develパッケージをインストールするとphpizeがついて来るので、次のコマンドで入れたあと、再挑戦。

yum install php-devel

【2】php.iniを編集してApache再起動

# vi /etc/php.ini
-----------------
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
extension=json.so
extension=mongo.so
---------------

# service httpd restart

補足

json.so については任意ですが、後の手順でPHPとの連携がうまくいかない場合があるため、あらかじめ記載しておきます。(逆に、不要な場合は消して下さい)

▼参考URL
http://stackoverflow.com/questions/22952994/mongo-so-undefined-symbol-php-json-encode-in-unknown-on-line-0-after-instal

yotsuba_s.jpg4.そしてPHPからDB接続

こんな感じで INSERT や SELECT ができます。(PHPファイルの文字コードはUTF-8)

<?php
// DBへ接続
$mongo = new Mongo();
// データベースを指定
$db = $mongo->selectDB("db_test");
// コレクションを指定
$coll = $db->selectCollection("coll_test");
$coll->update(
	array('user_id' => '123'), // WHERE句に相当
	array('$set' => array('user_name' => '南方 熊楠')), // SET句に相当
	array('upsert' => true) // UPDATE or INSERT(無ければ挿入)
);

// コレクションのドキュメントを全件取得
$docs = $coll->find();
// 表示 ※MongoCursorオブジェクトが取得されるのでforeachで回す
foreach ($docs as $id => $obj) {
	print "<pre>";
	print var_dump($obj);
	print "</pre><hr>";
}
?>

DBやテーブル(コレクション)は事前にCREATEする必要はありません。存在しなければ自動的に作られます。すわ!便利。より詳しいDB操作については下記ページを参考にして下さい。

▼SQL から Mongo への対応表
http://www.php.net/manual/ja/mongo.sqltomongo.php

yotsuba_s.jpg 参考URL

mongodbをインストールして、phpでアクセス
http://m-shige1979.hatenablog.com/entry/2013/09/16/233024

MongoDB|PHP公式
http://jp.php.net/mongo

また、MongoDBのWEB管理ツールとしては RockMongo をオススメします。

RockMongoインストール
http://qiita.com/yasumodev/items/e782ca81ab85726d9771

(・o・ゞ いじょー。

46
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?