零起步8-CentOS6.3安装配置mongodb-2.2、rockmongo

来源:互联网 发布:兽药尼蒙尔克素淘宝网 编辑:程序博客网 时间:2024/06/05 03:09
全新以最小化包安装了64位的CentOS6.3系统,作为本地的Web服务器使用,现记录全过程
第八步,安装配置mongodb-2.2及rockmongo,本文讲解了mongodb安装、主从配置、php驱动编译、mongodb添加为系统服务及开机启动。

下载mongodb最新版本mongodb-linux-x86_64-2.2.0.tgz
http://www.mongodb.org/downloads

mongodb的PHP驱动下载地址
https://github.com/mongodb/mongo-php-driver

rockmong下载地址,下载个300多KB的zip就行了,别下载集成环境
http://rockmongo.com/downloads

我的mongodb目录配置如下,数据库为主从设置,并配置成开机自启动:
执行文件路径:/usr/local/mongodb/bin
日志文件路径:/usr/local/mongodb/conf
配置文件路径:/usr/local/mongodb/logs
数据库路径:/data/mongodb
源码包存放位置:/usr/software


mongodb是免安装的,解压后直接移到/usr/local并重命名为mongodb即可
[root@localhost ~]# tar zxvf mongodb-linux-x86_64-2.2.0.tgz
[root@localhost ~]# mv mongodb-linux-x86_64-2.2.0 /usr/local/mongodb
[root@localhost ~]# cd /usr/local/mongodb
[root@localhost ~]# mkdir conf
[root@localhost ~]# mkdir logs

分别创建主从日志文件master.log、slave.log,及配置文件master.conf、slave.conf
[root@localhost ~]# touch /usr/local/mongodb/logs/master.log
[root@localhost ~]# touch /usr/local/mongodb/logs/slave.log
[root@localhost ~]# vim /usr/local/mongodb/conf/master.conf
master.conf文件内容如下
# master mongodb
master=true
# slave ip
source=localhost
oplogSize=1024
# directory for datafiles
dbpath=/data/mongodb/master
# log file to send write to instead of stdout - has to be a file, not directory
logpath=/usr/local/mongodb/logs/master.log
# append to logpath instead of over-writing
logappend=true
# each database will be stored in a separate directory
directoryperdb=true
port = 27017
# fork server process
fork=true
# run with security
#auth=true
journal=true
maxConns=1000
[root@localhost ~]# vim /usr/local/mongodb/conf/slave.conf
slave.conf配置文件如下
# slave mongodb
slave=true
# master ip
source=localhost
# directory for datafiles
dbpath=/data/mongodb/slave
# log file to send write to instead of stdout - has to be a file, not directory
logpath=/usr/local/mongodb/logs/slave.log
# append to logpath instead of over-writing
logappend=true
# each database will be stored in a separate directory
directoryperdb=true
port = 27018
# fork server process
fork=true
# run with security
#auth=true
nohttpinterface=true
# max connections
maxConns=1000
autoresync=true

配置mongodb开机自启动,在/etc/init.d/下创建mongodb启动文件
[root@localhost ~]# vim /etc/init.d/mongodb
mongodb文件内容如下
#! /bin/sh
#
# mongodb this script starts and stops the mongodb daemon
#
# chkconfig: 345 85 15
# description: MongoDB is a non-relational database storage system.
# processname: mongodb
# config: /usr/local/mongodb/conf/
# pidfile: /usr/slocal/mongodb/mongodb.pid

PATH=/usr/local/mongodb/bin:/sbin:/bin:/usr/sbin:/usr/bin
# var mongodb pid
pid=`ps -o pid,command ax | grep mongodb | awk '!/awk/ && !/\/bin\/sh/ && !/grep/ && !/tail/ {print $1}'`;
NAME=mongodb
test -x $DAEMON || exit 0
set -e
#
# See how we were called.
case "$1" in
   start)
      # Start daemons.
      if [ "${pid}" != "" ]; then
"/etc/init.d/mongodb" 50L, 1449C
#! /bin/sh
#
# mongodb this script starts and stops the mongodb daemon
#
# chkconfig: 345 85 15
# description: MongoDB is a non-relational database storage system.
# processname: mongodb
# config: /usr/local/mongodb/conf/
# pidfile: /usr/slocal/mongodb/mongodb.pid

PATH=/usr/local/mongodb/bin:/sbin:/bin:/usr/sbin:/usr/bin
# var mongodb pid
pid=`ps -o pid,command ax | grep mongodb | awk '!/awk/ && !/\/bin\/sh/ && !/grep/ && !/tail/ {print $1}'`;
NAME=mongodb
test -x $DAEMON || exit 0
set -e
#
# See how we were called.
case "$1" in
   start)
      # Start daemons.
      if [ "${pid}" != "" ]; then
         echo -n "MongoDB already start. "
      else
         echo -n "Starting mongoDB: "
         rm -rf /data/mongodb/master/mongod.lock
         rm -rf /data/mongodb/slave/mongod.lock
         /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/master.conf
         /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/slave.conf
      fi
      echo "${pid}"
      ;;
   stop)
      # Stop daemons.
      echo -n "Stopping MongoDB... "
      if [ "${pid}" != "" ]; then
         kill -2 ${pid};
      fi
      ;;
   restart)
      $0 stop
      $0 start
      ;;
   esac

exit 0

修改/etc/init.d/mongodb权限并加入到开机自启动
[root@localhost ~]# chmod +x /etc/init.d/mongodb
[root@localhost ~]# chkconfig mongodb on

mongodb数据库启动、停止、重启命令分别如下
[root@localhost ~]# service mongodb start
[root@localhost ~]# service mongodb stop
[root@localhost ~]# service mongodb restart


mongodb的php驱动安装,使用phpize编译mongodb驱动扩展
将mongodb驱动解压,使用unzip命令
unzip mongodb-mongo-php-driver-(xxx: version).zip
[root@localhost ~]# unzip mongodb-mongo-php-driver-1.3.0beta2-134-g606c757.zip
[root@localhost ~]# cd mongodb-mongo-php-driver-606c757
[root@localhost ~]# /usr/local/php/bin/phpize
[root@localhost ~]#  ./configure --with-php-config=/usr/local/php/bin/php-config --enable-mongo
[root@localhost ~]# make && make install
[root@localhost ~]# mkdir /usr/local/php/ext      //php下新建ext目录,用来存放php扩展
[root@localhost ~]# cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/mongo.so /usr/local/php/ext/ 
修改php.ini,开启mongo.so,在php.ini中加入一行
[root@localhost ~]#  vim /usr/local/apache/conf/php.ini 
extension=/usr/local/php/ext/mongo.so
[root@localhost ~]# service httpd restart


rockmongo配置(类似phpMyAdmin的mongodb管理工具)
将rockmongo解压缩后,移至/usr/local/apache/htdocs/下面
修改数据库连接配置,这个文件跟phpMyAdmin非常类似
[root@localhost ~]# vim /usr/local/apache/htdocs/rockmongo/config.php 
    $MONGO["servers"][$i]["mongo_name"] = "Localhost";                    //服务器名称,可以自定义
    $MONGO["servers"][$i]["mongo_host"] = "127.0.0.1";                     //服务器IP地址
    $MONGO["servers"][$i]["mongo_port"] = "27017";                          //mongodb端口
    $MONGO["servers"][$i]["mongo_auth"] = false;                               //mongodb是否需要用户名密码验证
    $MONGO["servers"][$i]["mongo_user"] = "MONGO_USERNAME";     //mongodb数据库用户名
    $MONGO["servers"][$i]["mongo_pass"] = "MONGO_PASSWORD";     //mongodb数据库密码
    $MONGO["servers"][$i]["control_auth"] = true;                                 //控制面板是否需要验证(必须开启true
    $MONGO["servers"][$i]["control_users"]["admin"] = "admin";            //控制面板登录的用户名及密码(前一个为用户名,后一个为密码)

rockmongo登录地址,用户名密码即为控制台的用户名及密码
http://192.168.0.21/rockmongo/


mongodb管理工作,我一般使用rockmongo以及mongoVUE,相对是比较方便的工作,mongodb有bug不支持slave数据库连接管理


mongodb管理工作,我一般使用rockmongo以及mongoVUE,相对是比较方便的工作,mongodb有bug不支持slave数据库连接管理
补充一下,实测mongodb最新的php驱动有Bug,请大家不要下载mongodb-mongo-php-driver-1.3.0beta2版本
这个版本是可用的,mongodb-mongo-php-driver-1.2.6-46-g52439c7.zip,如果找不到留言给我。

另外,rockmongo不能正常显示utf-8的中文(Bug),高人已向rockmongo提交了patch补丁包,具体如下:
解决方法:http://code.google.com/p/rock-php/issues/detail?id=205
原理:http://zhangshenjia.com/exprience/%E8%A7%A3%E5%86%B3rockmongo%E4%B8%8D%E6%98%BE%E7%A4%BA%E4%B8%AD%E6%96%87%E7%9A%84%E9%97%AE%E9%A2%98/

[root@centos software]# vim /usr/local/apache/htdocs/rockmongo/app/funcs/functions.php
add below lines to /rockmongo/app/funs/functions.php, line 73:
--------------------------------------------------------------------
        $ord = ord( $char );
        if ( $ord >= 224 ) {
            $char .= $json[ $c + 1 ] . $json[ $c + 2 ];
            $c += 2;
        } else if ( $ord >= 192 ) {
            $char .= $json[ $c + 1 ];
            $c += 1;
        }