linux下配置MongoDB 3.2.X + PHP驱动安装

一、MongoDB安装及配置


1.1、下载安装程序

MongoDB提供了linux平台上32位和64位的安装包,你可以在官网下载安装包。
下载地址:http://www.mongodb.org/downloads

下载完安装包,并解压 gz(以下演示的是 64 位 Linux上的安装) 。

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.3.tgz # 下载
tar -zxvf mongodb-linux-x86_64-3.2.3.tgz # 解压
mv mongodb-linux-x86_64-3.2.3/ /usr/local/mongodb # 将解压包拷贝到指定目录

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

export PATH=<mongodb-install-directory>/bin:$PATH

1.2、创建数据库目录

MongoDB的数据存储在/data/db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。
以下实例中我们将data目录创建于根目录下(/)。
注意:/data/db 是 MongoDB 默认的启动的数据库路径(-dbpath)。

mkdir -p /data/db

1.3、运行服务

可以通过mongo安装目录下bin目录的mongod命令来启动mongodb服务。
可以加上--path参数来指定服务启动的端口,默认是27017;加上--dbpath参数指定数据库文件所在的目录,默认目录在/data/db

mongod --port 25000 --dbpath /data/db

1.4、后台管理Shell

如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。
MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
当你进入mongoDB后台后,它默认会链接到 test 文档(数据库)。注意,如果你不是默认端口,请在mongo命令后面指定IP地址和端口号。

mongo 127.0.0.1:25000

1.5、Web用户界面

MongoDB 提供了简单的 HTTP 用户界面。 如果你想启用该功能,需要在启动的时候指定参数 --rest

mongod --port 25000 --dbpath /data/db --rest

MongoDB 的 Web 界面访问端口比服务的端口多1000
如果你的MongoDB运行端口使用默认的25000,你可以在端口号为26000访问web用户界面,即地址为:http://localhost:26000

1.6、在系统启动时写入环境变量

可以用vi打开/etc/profile文件,然后将刚才的环境变量设置命令写到文件的尾部。

vi /etc/profile
# /etc/profile #
....
export PATH=<mongodb-install-directory>/bin:$PATH

1.7、在后台运行服务

使用linux下的 nohub [command] & 命令,可以让服务在后台运行,这样即使关掉终端服务也不会一起关掉。启动服务之后如果要关掉终端,请使用linux的exit命令,而不要强制退出。
>nohup mongod --port 25000 --dbpath /data/db --rest --auth &
exit

为了避免MongoDB的服务在终端关掉后也一起关掉,可以使用--fork参数将服务设置为后台运行模式。

mongod --port 25000 --dbpath /data/db -fork --logpath /var/log/mongodb.log --logappend

可以用--logpath参数指定日志的输出路径,并且在最后面添加上--logappend参数,以追加的方式创建日志防止把之前的日志删除了。

1.8、停止运行中的服务

尽量不要用kill命令杀掉进程的方式停止服务,请进入Shell,用db.shutdownServer命令来关闭服务。

use admin
db.shutdownServer()

1.9、加入服务启动项

打开/etc/rc.local文件

vi /etc/rc.local

将启动服务的命令添加到文件尾部

#! /bin/sh
……
mongod --port 25000 --dbpath /data/db -fork --logpath /var/log/mongodb.log --logappend

1.10、使用配置文件启动服务

如果觉得在服务后面带着大量参数很不方便,可以使用配置文件来代替,只需要事先编写好配置文件,然后在启动服务的时候加上--config参数即可。

配置文件格式

port=25000
dbpath=/data/db
logpath=/var/log/mongodb.log
fork=true
logappend=true
shardsvr=truedirectoryperdb=true
auth=true

然后启动服务,在--config参数后制定配置文件路径

mongo --config /配置文件目录/mongo.conf

二、安全性配置


MongoDB默认是在非安全性模式下运行的,这样在生产环境下非常危险,所以建议还是开启安全性开关,并分配相应的角色权限。在这里,我们会创建三个不同角色的用户来管理数据库,分别是admin、sa、dev三个用户。admin用户专门负责管理整个数据库的用户权限,但不具备业务数据管理的权限;sa用户负责服务的管理,只有他有权限关闭服务;而dev用户负责管理某个业务数据库里面的数据,拥有该数据库的数据读写权限。

2.1、添加系统用户

先创建一个权限管理用户admin。

use admin
db.createUser({
user: "admin",
pwd: "admin"
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

如上所示,系统相关的权限配置要在admin库上进行,MongoDB默认是没有创建该数据库的,而我们只要用use命令切换到该数据库就可以了。接下来就调用db.createUser命令来创建用户和设置密码,并为他赋予userAdminAnyDatabase权限,这个权限代表该用户有权管理所有用户权限设置,另外这里还在权限设置里面指定了该用户管理的数据库为admin。

接下来创建系统服务管理用户sa。

use admin
db.createUser({
user: "admin",
pwd: "admin"
roles: [ { role: "hostManager", db: "admin" } ]
})

和admin用户的创建方法差不多,只不过赋予的权限是hostManager,该权限能够监控服务的信息,以及进行关闭服务等操作。

2.2、在安全性模式下运行

创建完admin用户后,就可以将服务切换到安全性模式。要切换到安全性模式,可以在启动服务的时候加上--auth参数。

mongod --port 25000 --dbpath /data/db --rest --auth

然后打开Shell,并进行权限认证,用刚才的admin用户,认证命令为db.auth("用户名", "密码")

use admin
db.auth("admin", "admin");

之后就可以在Shell进行权限管理,也就是说可以创建和维护用户信息了。
注意,由于admin只拥有userAdminAnyDatabase权限,所以无法进行一些非管理性质的操作。比如admin可以通过show users命令查询当前MongoDB的用户信息,但无法用show collections来查看数据库的集合信息,也无法对这些集合进行任何读写操作。

2.3、创建业务数据库及其用户

创建一个名为app的库用于存放业务数据,并为其创建一个用户dev来负责管理数据库里面的数据。dev用户拥有app库的读写权限。同样,你应该先在Shell中用admin进行认证,然后在调用db.createUser命令创建用户。

use admin
db.auth("admin", "admin")
use app
db.createUser({
user: "dev",
pwd: "dev",
roles: [ { role: "readWrite", db: "app" } ]
})

在这里,要创建dev用户之前,先切换到app数据库,然后再创建用户,并为用户赋予readWrite权限,并指定为app数据库,该设定代表用户拥有读取app数据库一般数据的权限。
权限设定完毕之后,再通过db.auth命令切换到dev用户,就可以对app库进行数据读写操作了。

use app
db.auth("dev", "dev")

三、安装使用客户端控制管理软件


如果觉得使用MongoDB的Shell很麻烦,想使用诸如Navicat这样的数据库管理工具,那么可以使用Robomongo

3.1、下载安装程序

可以到Robomongo的官网下载,地址为https://robomongo.org/

3.2、链接数据库

打开Robomongo,打开菜单File->Connect,点击Create按钮打开Connection Settings界面,切换到Connection选项卡,填写链接名称(随便填),数据库地址和端口号,然后点击Test按钮测试连接是否连通,如果无法连通,请检查一下服务器的防火墙设置等可能出现的情况。接下来,如果你的数据库开启了安全性模式,那么请切换到Authentication选项卡,勾上Perform authentication,数据库不用填,填写你的用户名、密码以及认证模式(如果设置的时候没有特别指明的话可以不管,按照默认即可)。所有信息都填写完毕之后点击保存按钮保存设置,回到MongoDB Connections界面,选择刚才创建的数据库连接,点击连接按钮即,如果一切正常就可以看到数据库的信息和内容了。

四、在PHP下使用MongoDB


如果你想要在PHP下使用MongoDB的话,必须先安装MongoDB的PHP扩展驱动

$ sudo pecl install mongo

使用php的pecl安装命令必须保证网络连接可用以及root权限。
安装手册
如果你想通过源码来编译扩展驱动。你必须手动编译源码包,这样做的好是最新修正的bug包含在源码包中。
你可以在Github上下载MongoDB PHP驱动包。访问github网站然后搜索"mongo php driver"(下载地址:https://github.com/mongodb/mongo-php-driver),下载该源码包,然后执行以下命令:

$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ phpize
$ ./configure
$ sudo make install

如果你的php是自己编译的,则安装方法如下(假设是编译在/usr/local/php目录中):

$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ /usr/local/php/bin/phpize$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ sudo make install

执行以上命令后,你需要修改php.ini文件,在php.ini文件中添加mongo配置,配置如下:

extension=mongo.so

修改完配置之后,再重启一下apache服务就完成扩展驱动的安装了

service httpd restart

推荐阅读更多精彩内容