Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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・ゞ いじょー。

yasumodev
「長い旅行に必要なのは大きなカバンじゃなく、口ずさめる一つの歌さ」スナフキン
https://twitter.com/yasumodev
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした