• 安装mongo扩展

    安装mongodb扩展
    下载PHP-mongodb扩展
    (https://pecl.php.net/package/mongo)
    wget http://pecl.php.net/get/mongo-1.6.12.tgz

    解压
    tar xvzf mongo-1.6.12

    编译安装
    cd mongo-1.6.12
    phpize
    ./configure –with-php-config=/usr/bin/php-config
    make && make install

    在安装过程中可能会报以下错误
    /var/tmp/mongo/contrib/php-ssl.h:33:25: error: openssl/evp.h: No such file or directory

    需要安装openssl-devel
    yum install openssl-devel

    在php.ini文件中添加extension=mongo.so
    extension=mongo.so

    重启php-fpm或服务器
    systemctl restart php-fpm

  • mongoDB主从同步笔记

    同步之前做个笔记

    centos下yum方式安装最新版本的mongodb

    vi /etc/yum.repos.d/10gen.repo,输入下面的语句:

    [10gen]
    
    name=10gen Repository
    
    baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
    
    gpgcheck=0

    查看最新版本信息:

    yum info mongo-10gen-server

    安装:

    yum install mongo-10gen-server

    升级:

    yum update mongo-10gen mongo-10gen-server

    启动:service mongod start


    主从服务器各自安装好带连接认证的mongodb

    use admin
    
    db.addUser('sa','sa')

    1.首先我们备份好数据库

    备份数据库foo

    mongodump -uroot -p -d foo -o /data/backup/database/

    附带一个还原命令:

    (mongorestore  -uroot -p -d foo –drop /data/backup/database/)

    2.主从加同步认证账号:

    主服务器和从服务器必须开启安全认证:–auth, 主服务器和从服务器的admin数据库中必须有全局用户, 然后主服务器的local数据库和从服务器的local数据均有名为repl且密码相同的用户名。

    use local
    db.addUser('repl','repl')

    主服务器:
    vi /etc/mongo.conf

    master = true
    source = 172.16.1.22,172.16.1.23(从库ip)

    从服务器:

    vi /etc/mongo.conf<
    slave = true
    source =172.16.1.11:27017

    各自重启服务器:

    3.查看数据是否全部同步过来了

    附上:mongodb的备份脚本

    #!/bin/sh
    
    today=$(date +"%Y%m%d")
    
    old7day=$(date -d "7 days ago" +"%Y%m%d")
    
    cd /data/backup/database/
    
    /usr/local/mongodb/bin/mongodump -uroot -ppassword -o /data/backup/database/
    
    zip -rP 888888 /data/backup/database/xz_ad_db_${today}.zip foo
    
    zip -rP 888888 /data/backup/database/admin_db_${today}.zip admin
    
    rm -rf /data/backup/database/foo
    
    rm -rf /data/backup/database/admin
  • Ubuntu上安装 MongoDB,并与php 的链接测试

    MongoDB是一个可扩展、高性能的下一代数据库。MongoDB中的数据以文档形式存储,这样就能在单个数据对象中表示复杂的关系。文档可能由 以下几 部分组成:独立的基本类型属性、“内嵌文档”或文档数组。

    这样的灵活性让开发者能以一种易于管理且灵活的方式来对大量的问题进行建模,不必将数据打散到不同的数据表中。在数据不宜被构造成单独文档的情况 下,MongoDB有“DBRef”的概念,这是从文档的一个属性指向另一个文档的指针。

    从MongoDB数据库中获取和查询数据是十分灵活的——可以基于主文档、文档中的任意属性、任意内嵌文档、数组中的任意文档来动态地查询文档。可 以通过 “点”符号来访问内嵌文档。

    由于Ubuntu 10.04 已经带了MongoDB 1.2.2的源,因此可以直接使用apt-get安装:

    sudo apt-get install mongodb

    在安装MongoDB的时候,系统会安装MongoDB的很多依赖包,安装完成之后,运行MongoDB,会提示:

    mongod: error while loading shared libraries: libmozjs.so: cannot open shared object file: No such file or directory

    解决方法是:

    sudo apt-get install xulrunner-dev

    找到libmozjs.so文件:

    find /usr/lib | grep libmozjs

    可以看到:

    /usr/lib/xulrunner-devel-1.9.2.8/sdk/lib/libmozjs.so

    /usr/lib/xulrunner-1.9.2.8/libmozjs.so

    /usr/lib/firefox-3.6.8/libmozjs.so

    给库做个链接:

    sudo ln -s /usr/lib/xulrunner-1.9.2.8/libmozjs.so /usr/lib

    重启mongodb的服务:

    sudo service mongodb start

    可以确认一下服务是否启动:

    ps aux | grep mongod

    pymongo安装

    由于pymongo采用的是easy_install的模式进行安装的,所以需要先安装setuptools:

    sudo apt-get install python-setuptools

    安装好之后,可以执行安装:

    sudo easy_install pymongo

    注意事项:

    只要 sudo apt-get install mongodb 应该就会装好。

    但是安装得朋友一定都会发现,装起来无法启动无法使用。

    在查找了一些资料后发现:

    这主要的问题在于少了 /usr/lib/libmozjs.so 这个软件库的文件。

    只要你有装 Firefox 或是 另外安装 xulrunner 就应该会有,不过路径是错得。

    所以就要这样:sudo apt-get install xulrunner-1.9.2

    安装好了以后,建立连结。

    ln -s /usr/lib/xulrunner-1.9.2.6/libmozjs.so /usr/lib/libmozjs.so

    然后重新启动 mongodb 试试看,应该就会看到 mongodb 正确启动。

    安装php连接mongo的驱动


    可以到这个链接下载驱动http://github.com/mongodb/mongo-php-driver/downloads

    注意php的版本匹配问题,否则启动apache报错。

    mongoDB 服务端的默认连接端口是 27017

    <?php
    //多个服务器
    $conn = new Mongo(“mongodb://localhost:27017”);
    //选择数据库blog
    $db = $conn->blog;
    //制定结果集(表名:users)
    $collection = $db->users;
    //列出数据库列表
    $dbs = $conn->listDBs();
    echo “<pre>”;
    print_r($dbs);
    echo “</pre>”;
    //新增
    $user = array(‘name’ => ‘caleng’, ’email’ => ‘admin@admin.com’);
    $collection->insert($user);
    //修改
    $newdata = array(‘$set’ => array(“email” => “test@test.com”));
    $collection->update(array(“name” => “caleng”), $newdata);
    //查找
    $cursor = $collection->find();
    echo “<pre>”;
    print_r($cursor);
    echo “</pre>”;
    //查找一条
    $user = $collection->findOne(array(‘name’ => ‘caleng’), array(’email’));
    echo “<pre>”;
    print_r($user);
    echo “</pre>”;
    //删除
    $collection->remove(array(‘name’=>’caleng’), array(“justOne” => true));
    ?>