CentOS6.x安装二进制版本的MongoDB数据库服务端和PHP客户端扩展

MongoDB简介

MongoDB是一个开源的文档型数据库,使用C++写的NoSQL数据库。MongoDB是一个高性能,开源,模式自由(schema-free)的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值(key-value)存储方式。MongoDB具有以下特性:
面向集合的存储:适合存储对象及JSON形式的数据。
动态查询:MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
完整的索引支持:包括文档内嵌对象及数组。MongoDB的查询优化器会分析查询表达式,并生成一个高效的查询计划。
查询监视:MongoDB包含一个监视工具用于分析数据库操作的性能。
复制及自动故障转移:MongoDB数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
MongoDB的官方网站是http://www.mongodb.org/

安装MongoDB

下面我们在CentOS 6.5 x64系统上安装最新的MongoDB 2.6.4版。
要安装最新的64位MongoDB 2.6.4版,步骤如下:

系统约定

Centos-6.5下安装MongoDB
安装机器:192.168.15.237
上传位置:/usr/local/src
软件安装:/usr/local/mongodb
数据位置:/data/mongodb/data
日志位置:/data/mongodb/log

检查是否安装过mongodb

rpm -qa | grep mongodb 
service mongod status

关闭SElinux

vi /etc/selinux/config

#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加

:wq!  #保存退出
reboot 重启系统使配置生效
或
setenforce 0 #使配置立即生效

配置防火墙

vi /etc/sysconfig/iptables  #编辑
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT  #允许27017端口通过防火墙
:wq! #保存退出
/etc/init.d/iptables restart #重启防火墙使配置生效

安装mongodb

没有具体的安装步骤,解压到存放目录就好了

cd /usr/local/src
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.4.tgz

解压并把解压包bin目录中的文件全部移到/usr/local/mongodb/bin目录下面

tar -zxvf mongodb-linux-x86_64-2.6.4.tgz #解压
mv ./mongodb-linux-x86_64-2.6.4 /usr/local/mongodb  #移动解压文件夹到MongoDB安装目录

创建符号链接,以便能在shell中直接使用mongodb的相关命令,此处也可以通过添加环境变量实现

ln -s /usr/local/mongo/bin/* /usr/local/bin/

创建数据库和日志的存储目录:

mkdir -pv /data/mongodb/data/  
mkdir -pv  /data/mongodb/log/

创建mongodb用户和mongodb用户组

groupadd mongodb
useradd -g mongodb -s /usr/sbin/nologin mongodb

设置权限

chown -R mongodb:mongodb /usr/local/mongodb

启动服务器端
修改mongodb的数据库和日志存储位置,并设置mongodb为后台启动

/usr/local/mongodb/bin/mongod --port 27017 --fork --dbpath=/data/mongodb/data/ --logpath=/data/mongodb/log/mongodb.log --logappend -f /etc/mongod.conf

第一次启动的时候,需要指定–dbpath,以后再次启动的时候,不需要指定了,可直接这样启动

/usr/local/mongodb/bin/mongod --logpath=/data/mongodb/log/mongdb.log --fork

如果一定要指定db的路径的话,需要确保该路径是存在的,db的目录,在启动的时候,只需要指定一次就行,如果已经指定过一次,再次启动的时候,还指定dbpath的话,mongodb是启动不起来的,所以再次启动,一定要用上面的那条命令,只需指定logpath 就行,然后“–fork” ,后台启动

参数解释: 更详细的参数解释,请运行命令“mongod -h”查看帮助文档

--dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)

查看是否启动成功

netstat -ntpl    #查看MongoDB是否启动
或
ps aux |grep mongod # 查看mongodb进程
pstree -p | grep mongod

查看MongoDB日志

tail -f /data/mongodb/log/mongodb.log

即可对MongoDB的运行情况进行查看或排错了

杀掉mongod进程

pkill mongod    杀掉mongod进程,不能用kill -9杀掉mongod进程,否则就不能再启动
或者killall mongod

设置开机启动
设置开机启动也可通过下文的init.d脚本实现

echo "/usr/local/mongodb/bin/mongod --dbpath=/data/mongodb/data/ --logpath=/data/mongodb/log/mongdb.log --fork" >> /etc/rc.local

MongoDB测试

进入mongodb客户端:
cd /usr/local/mongodb/bin/
#启动客户端,进入mongodb的shell模式 
./mongo
#查看数据库列表 
show dbs
#切换/创建数据库(当创建一个集合(table)的时候会自动创建当前数据库)
use admin;
#增加用户    
db.addUser("zhoulf ","123456",true)
#更改密码(为已经存在的用户更改密码) 
db.addUser("zhoulf "," zhoulf "); 
#显示当前db状态 
db.stats();
#当前db版本 
db.version();
#删除当前使用数据库 
db.dropDatabase();
#查看当前db的链接机器地址 
db.getMongo();
#简单插入数据 
db.user.insert({"fname":"zhoulf", "company":"navinfo"})
#循环插入数据 
for (var i = 1; i < = 10; i++) db.user.save({ "fname" : "zhoulf"+i, "company" : "navinfo"+i });
#查询数据 
db.user.find()
#终止服务器进程 
db.user.shutdownServer()
exit #退出

到此安装已完成

设置MongoDB数据库

创建和配置mongodb.conf文件

在/usr/local/mongodb下新建mongodb.conf文件,mongodb支持把参数写进配置文件,然后以配置文件的配置来启动,我们此处也使用此方式。

cd  /usr/local/mongodb/ #进入MongoDB安装目录
vi /usr/local/mongodb/mongodb.conf  #编辑

port=27017 #端口号
dbpath=/data/mongodb/data/ #数据库路径
logpath=/data/mongodb/log/mongodb.log #日志输出文件路径
pidfilepath=/usr/local/mongodb/mongo.pid
fork=true #以守护程序的方式启用,即在后台运行
logappend=true #日志输出方式,日志文件自动累加,而不是覆盖
shardsvr=true
directoryperdb=true
#auth=true  #开启认证

:wq! #保存退出

通过init.d设置开机启动

vi /etc/rc.d/init.d/mongod   #设置开机启动MongoDB

#!/bin/sh
# chkconfig: - 64 36
# description:mongod
case $1 in
start)
/usr/local/mongodb/bin/mongod --config /etc/mongod.conf
;;
stop)
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()"
;;
status)
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()"
;;
esac

:wq! #保存退出

chmod +x /etc/rc.d/init.d/mongod                   #添加脚本执行权限
chkconfig mongod on  #设置开机启动
service  mongod  start #启动MongoDB

添加环境变量

vi /etc/profile  #添加环境变量,编辑,在最后一行添加下面的代码

export PATH=$PATH:/usr/local/mongodb/bin
:wq! #保存退出
source /etc/profile  #使配置立即生效
验证环境变量是否生效: 
$ mongod -version 
mongo  #进入MongoDB控制台
show dbs #查看默认数据库
use admin  #切换到admin数据库
exit #退出MongoDB控制台

常用命令行

mongod:		MonoDB 服务端
mongo:		MongoDB 客户端
mongoimport: 	数据库导入工具
mongoexport: 	数据导出工具
mongodump: 	数据库备份工具    
mongorestore: 	数据库恢复工具
mongofiles: 	GridFS管理工具,可实现对二进制文件的存取
mongostat: 	性能分析工具,类似与vmstat
mongotop:	性能分析工具,查看mongodb实例读写时间花费
mongoperf:	性能分析工具 ,磁盘性能检查工具
mongos: 	MongoDB集群工具

管理工具

(类似phpmyadmin)
http://rockmongo.com/wiki/introduction?lang=zh_cn
下载解压修改config.php为对应的地址及端口,使用admin:admin访问即可。

PHP mongo扩展安装

安装扩展

服务器环境Cent OS 6.5 64位, php版本 5.3.3编译安装,安装路径/usr/local/php
首先下载最新的php mongodb扩展源码,源码可以在http://pecl.php.net/package/mongo下载到

cd /usr/local/src
wget -c http://pecl.php.net/get/mongo-1.5.7.tgz
tar -zxvf ./mongo-1.5.7.tgz
cd ./mongo-1.5.7

进入文件夹后,首先运行phpize来准备编译扩展的环境,phpize这个程序的介绍在这里(phpize是什么及在Linux下用phpize给PHP动态添加扩展)

/usr/local/php/bin/phpize
运行后执行结果如下:
Configuring for:
PHP Api Version:        
20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519

运行后,./configure 脚本就会生成了,这个时候我们运行./configure脚本来进行配置
./configure -with-php-config=/usr/local/php/bin/php-config –with-php-config这个参数是告诉配置脚本php-config这个程序的路径,php-config的介绍在这里(php-config)
上面命令在正确配置的环境下运行结果如下

creating libtool
appending configuration tag “CXX” to libtool
configure: creating ./config.status
config.status: creating config.h
这时用make来编译扩展
make && make install
正确编译执行结果如下:
Build complete.
Don’t forget to run ‘make test’.
Installing shared
extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
完成后,请编辑你php.ini文件增加一行
extension=mongo.so
一般默认的编译php的ini文件在
/usr/local/php/etc/php.ini

重启你的web服务器或者php-fpm,打印phpinfo,如果看到mongo项表,那么mongodb的扩展安装成功了

官方安装文档:http://us2.php.net/manual/zh/mongo.installation.php#mongo.installation.nix

运行测试

建立一个php文档,输入

vi /var/www/html/mondb.php
< ?php
$m = new Mongo(); //connect 
$db = $m->test; //选择一个数据库(test)
$collection = $db->foo; //选择一个collection(默认foo)
$result = $collection->find();
foreach($result as $val){
 print_r($val);
}
// disconnect
$m->close();
?>

浏览测试
http://192.168.11.39/mondb.php

PHP Mongo class的使用,参考官方手册:http://www.php.net/manual/en/class.mongo.php

参考资料:
安装相关
CentOS6.5_X64下安装配置MongoDB数据库:http://mnt.conf.blog.163.com/blog/static/11566825820144150842732/

设置相关
Centos安装MongoDB:http://blog.slogra.com/post-443.html
MongoDB的安装配置、基本操作及Perl操作MongoDB:http://www.myhack58.com/Article/60/63/2014/42353.htm

MongoDB介绍
MongoDB(维基百科):http://zh.wikipedia.org/wiki/MongoDB#cite_note-filelimit32bit-6
在CentOS下安装及测试MongoDB:http://blog.csdn.net/zyj8170/article/details/5956600

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据