安装工作
创建yum源文件
在/etc/yum.repos.d/目录下创建名称为10gen.repo的文件,美容如下:
64位系统:
[10gen]
name=10genRepository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1
32位系统:
[10gen]
name=10genRepository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686
gpgcheck=0
enabled=1
安装mongodb
#yum更新
yum update
#安装
yum install mongo-10gen mongo-10gen-server
使用配置
mongodb安装成功后,其配置文件所在路径位:/etc/mongod.conf
启动mongo数据库服务:
service mongod start
服务设为自启动:
chkconfig mongod on
停止服务:
service mongod stop
重启服务:
service mongod restart
执行数据库的命令行维护:
mongo
二、【PHP添加MONGODB扩展】
安装步骤
首先下载最新的php mongodb扩展源码,源码可以在http://pecl.php.net/package/mongo下载到
wget http://pecl.php.net/get/mongo-1.2.12.tgz
tar zxf mongo-1.2.12.tgz
cd mongo-1.2.12
进入文件夹后,首先运行phpize来准备编译扩展的环境,phpize会在/php安装目录/bin/文件夹下
#假定phpize在这个文件夹
/usr/local/php/bin/phpize
运行后,./configure 脚本就会生成了,这个时候我们运行./configure脚本来进行配置
#假定php配置目录在/usr/local/php/bin/php-config
#--with-php-config这个参数是告诉配置脚本php-config这个程序的路径
./configure --with-php-config=/usr/local/php/bin/php-config
这时用make来编译扩展
make
make install
完成后,请编辑你php.ini文件增加一行
#一般默认的编译php的ini文件在/usr/local/php/etc/php.ini
extension=mongo.so
最后重启web服务,OK!
三、【Nginx直接访问Mongodb配置】
安装nginx-gridfs扩展
[root@vm ~]# git clone https://github.com/mdirolf/nginx-gridfs.git
[root@vm ~]# cd nginx-gridfs
[root@vm nginx-gridfs]# git submodule init
[root@vm nginx-gridfs]# git submodule update
//进入我的nginx1.0.5的源码目录编译安装nginx-gridfs扩展
[root@vm nginx-gridfs]# cd /root/nginx-1.0.5
//编译前先查看现有的nginx的编译参数配置,【注:请事先备份原有nginx配置文件,重新make会覆盖原有conf】
[root@vm nginx-1.0.5]#/usr/local/nginx/sbin/nginx -V nginx: nginx version: nginx/1.0.5
nginx: TLS SNI support disabled
nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6
//编译配置在原有配置基础上增加新的扩展(蓝色部分)
[root@vm nginx-1.0.5]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 <strong>--add-module=/root/nginx-gridfs</strong>
[root@vm nginx-1.0.5]# make
[root@vm nginx-1.0.5]# make instal
注意:
如果在make时产生以下错误而停止编译:
cc1: warnings being treated as errors |
那么找到Makefile文件,将 -Werror 选项删除就可以了。
Nginx的nginx-gridfs扩展模块安装完成,检查一下吧
[root@vm nginx-1.0.5]# /usr/local/nginx/sbin/nginx -V
nginx: nginx version: nginx/1.0.5
nginx: built by gcc 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC)
nginx: TLS SNI support enabled
nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --add-module=/root/nginx-gridfs
nginx 配置
location /pics/{
gridfs pics ###指定数据库pics
field=filename ##获取文件名获取数据
type=string;
mongo 127.0.0.1:27017;
}
四、【测试实例】
PHP 上传图片至mongodb
<?php
$conn = new Mongo("127.0.0.1:27017");
$db = $conn->pics;
$grid = $db->getGridFS();
//直接上传图片
//$id = $grid->put('/tmp/server.jpg', array('filename' => 'server.jpg'));
//二进制流形式写入
$data = file_get_contents('/tmp/server.jpg');
$id = $grid->storeBytes($data, array('filename' => 'server.jpg'));
$result = $grid->find();print_r($result);
$conn->close();
?>
执行后查看mongo数据库可以看到上传成功!
通过nginx直接访问mongodb
http://IP:8080/pics/server.jpg
五、【利用mongodb实现分布式WEB图片存储】
http://babyhe.blog.51cto.com/1104064/1096775
附:
mongoDB 入门指南、示例
PHP操作MongoDB GridFS 存储文件