MongoDB Linux下的安裝及配置PHP擴展 php
簡介(摘錄百度百科)mysql
MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。 linux
MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構很是鬆散,是相似json的bson格式,所以能夠存儲比較複雜的數據類型。Mongo最大的特色是他支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。sql
特色mongodb
它的特色是高性能、易部署、易使用,存儲數據很是方便。主要功能特性有: shell
*面向集合存儲,易存儲對象類型的數據。 數據庫
*模式自由。 json
*支持動態查詢。 vim
*支持徹底索引,包含內部對象。 windows
*支持查詢。
*支持複製和故障恢復。
*使用高效的二進制數據存儲,包括大型對象(如視頻等)。
*自動處理碎片,以支持雲計算層次的擴展性。
*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
*文件存儲格式爲BSON(一種JSON的擴展)。
*可經過網絡訪問。
使用原理
所謂“面向集合”(Collection-Oriented),意思是數據被分組存儲在數據集中,被稱爲一個集合(Collection)。每一個集合在數據庫中都有一個惟一的標識名,而且能夠包含無限數目的文檔。集合的概念相似關係型數據庫(RDBMS)裏的表(table),不一樣的是它不須要定義任何模式(schema)。
模式自由(schema-free),意味着對於存儲在mongodb數據庫中的文件,咱們不須要知道它的任何結構定義。若是須要的話,你徹底能夠把不一樣結構的文件存儲在同一個數據庫裏。
存儲在集合中的文檔,被存儲爲鍵-值對的形式。鍵用於惟一標識一個文檔,爲字符串類型,而值則能夠是各類複雜的文件類型。咱們稱這種存儲形式爲BSON(Binary Serialized dOcument Format)。
實際應用
MongoDB服務端可運行在Linux、Windows或IOS平臺,支持32位和64位應用,默認端口爲27017。推薦運行在64位平臺,由於MongoDB在32位模式運行時支持的最大文件尺寸爲2GB。
版本發佈
2012年05月23日,MongoDB 2.1 開發分支發佈了! 該版本採用全新架構,包含諸多加強。
2012年06月06日,MongoDB 2.0.6 發佈,分佈式文檔數據庫。
MongoDB Linux下的安裝和啓動
1、解壓文件到某目錄下,而後重命名:
[root@localhost src]# tar -xzvf mongodb-linux-i686-1.8.1.tgz.tar
[root@localhost src]# mv mongodb-linux-i686-1.8.1 /usr/local/mongodb/
2、 查看安裝後的文件狀況:
[root@localhost src]# cd /usr/local/mongodb/
[root@localhost mongodb]# ls
bin GNU-AGPL-3.0 README THIRD-PARTY-NOTICES
[root@localhost mongodb]# cd bin/
[root@localhost bin]# ls
bsondump dbbak mongo mongod mongodump mongoexport mongofiles mongoimport mongorestore mongos mongosniff mongostat
bin下的mongod就是MongoDB的服務端進程,mongo就是其客戶端,其它的命令用於MongoDB的其它用途如MongoDB文件導出等。
3、啓動MongoDB. 要先創建好MongoDB 存放數據文件和日誌文件的目錄,此處創建在/data下:
[root@localhost etc]# cd /data/
[root@localhost data]# ls
mongodb_data mongodb_log
在MongoDB安裝目錄下的bin下使用mongod啓動MongoDB,
/usr/local/mongodb/bin/mongod --dbpath=/data/mongodb_data/ --logpath=/data/mongodb_log/mongodb.log --logappend --fork --journal &
參數解釋:--logappend日誌追加 --fork 之後臺形式啓動數據庫 --journal這個是數據庫異常關閉修復
等待啓動成功後,可查看是否啓動成功了,默認端口號是27017,固然在啓動時也能夠指定未使用的其它端口。 先經過查看端口號看MongoDB是否啓動了。
[root@localhost data]# netstat -lanp | grep "27017"
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1573/mongod .unix
[ ACC ] STREAM LISTENING 5874 1573/mongod /tmp/mongodb-27017.sock
能夠看到,已啓動成功,如今使用mongo客戶端訪問一下該數據庫。
[root@localhost bin]# cd /usr/local/mongodb/bin/
[root@localhost bin]# ./mongo
MongoDB shell version: 1.8.1
connecting to: test 5.> 到這一步說明已經安裝成功了。
上述咱們啓動MongoDB都是手動使用mongod來啓動,這樣關閉計算機後,下次再進來它又沒啓動了,因此還得手動啓動,所以,爲避免這種繁瑣的工做,能夠把mongod放到服務自啓動項中,這樣計算機一開啓mongod服務也就啓動了。
編輯/etc/rc.local,加入下述代碼而後再保存便可。
[root@localhost /]#echo "rm -rf /data/mongodb_data/mongod.lock && /usr/local/mongodb/bin/mongod --dbpath=/data/mongodb_data/ --logpath=/data/mongodb_log/mongodb.log --logappend --fork --journal & " >> /etc/rc.local
重啓計算機再看MongoDB是否啓動,重啓後能夠直接使用 mongo命令登陸,最終發現是能夠成功的。另外,使用mongo命令登陸 MongoDB還要轉到mongo命令所在目錄再執行./mongo,這樣是否是有些麻煩?所以,咱們能夠簡化這點,將該命令文件copy到/usr/bin下,這樣就能夠在任何目錄下使用mongo命令了。
1.[root@localhost bin]# ls
2.bsondump dbbak mongo mongod mongodump mongoexport mongofiles mongoimport mongorestore mongos mongosniff mongostat
3.[root@localhost bin]# cp mongo /usr/bin/
轉到任一目錄試下mongo命令:
[root@localhost bin]# cd /
[root@localhost /]# mongo
MongoDB shell version: 1.8.1
connecting to: test 5.>
能夠看到登陸成功了,說明咱們能夠像使用ls命令同樣使用mongo命令了
4、配置PHP擴展
[root@localhost src]# wget http://pecl.php.net/get/mongo-1.2.6.tgz
[root@localhost src]# tar xvzf mongo-1.2.6.tgz
[root@localhost mongo-1.2.6]# cd mongo-1.2.6
[root@localhost mongo-1.2.6]# ls #沒有configure腳本
bson.c collection.h cursor.c db.h mongo.c mongo_types.h README.md
bson.h config.m4 cursor.h gridfs.c mongo.h php_mongo.c util
collection.c config.w32 db.c gridfs.h mongo_types.c php_mongo.h
[root@localhost mongo-1.2.6]# /usr/local/php5/bin/phpize #最好能用/usr/local/php/bin/phpize 若是不識別的話安裝php5-devel:yum -y install php-devel
會有下面的顯示:
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@localhost mongo-1.2.6]# ls
acinclude.m4 collection.c configure db.h missing php_mongo.c
aclocal.m4 collection.h configure.in gridfs.c mkinstalldirs php_mongo.h
autom4te.cache config.guess config.w32 gridfs.h mongo.c README.md
bson.c config.h.in cursor.c install-sh mongo.h run-tests.php
bson.h config.m4 cursor.h ltmain.sh mongo_types.c util
build config.sub db.c Makefile.global mongo_types.h
#運行後,./configure 腳本就會生成了,這個時候咱們運行./configure腳原本進行配置
[root@localhost mongo-1.2.6]# ./configure --with-php-config=/usr/local/php/bin/php-config
--with-php-config #這個參數是告訴配置腳本php-config這個程序的路徑,php-config的介紹在這裏
[root@localhost mongo-1.2.6]# make && make install
而後編輯php.ini文件
[root@localhost src]# vim /usr/local/php5/etc/php.ini
; http://php.net/user-dir
user_dir =
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/"
extension = mbstring.so
extension = sockets.so
extension = gettext.so
extension = mongo.so
; On windows:
; extension_dir = "ext"
[root@localhost src]# /usr/local/php5/bin/php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
ereg
fileinfo
filter
ftp
gd
hash
iconv
ionCube Loader
json
libxml
mcrypt
memcache
mongomysqlpcrePDOpdo_mysqlpdo_sqlitePharposixReflectionsessionshmopSimpleXMLsoapSPLSQLitesqlite3standardsysvsemtokenizerxmlxmlreaderxmlwriterzipzlib[Zend Modules]the ionCube PHP Loader