linux下配置MongoDB 3.2.X + PHP驅(qū)動(dòng)安裝

一、MongoDB安裝及配置


1.1、下載安裝程序

MongoDB提供了linux平臺(tái)上32位和64位的安裝包,你可以在官網(wǎng)下載安裝包。
下載地址: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 的可執(zhí)行文件位于 bin 目錄下,所以可以將其添加到 PATH 路徑中:

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

1.2、創(chuàng)建數(shù)據(jù)庫目錄

MongoDB的數(shù)據(jù)存儲(chǔ)在/data/db目錄下,但是這個(gè)目錄在安裝過程不會(huì)自動(dòng)創(chuàng)建,所以你需要手動(dòng)創(chuàng)建data目錄,并在data目錄中創(chuàng)建db目錄。
以下實(shí)例中我們將data目錄創(chuàng)建于根目錄下(/)。
注意:/data/db 是 MongoDB 默認(rèn)的啟動(dòng)的數(shù)據(jù)庫路徑(-dbpath)。

mkdir -p /data/db

1.3、運(yùn)行服務(wù)

可以通過mongo安裝目錄下bin目錄的mongod命令來啟動(dòng)mongodb服務(wù)。
可以加上--path參數(shù)來指定服務(wù)啟動(dòng)的端口,默認(rèn)是27017;加上--dbpath參數(shù)指定數(shù)據(jù)庫文件所在的目錄,默認(rèn)目錄在/data/db

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

1.4、后臺(tái)管理Shell

如果你需要進(jìn)入MongoDB后臺(tái)管理,你需要先打開mongodb裝目錄的下的bin目錄,然后執(zhí)行mongo命令文件。
MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對(duì)MongoDB進(jìn)行操作和管理的交互式環(huán)境。
當(dāng)你進(jìn)入mongoDB后臺(tái)后,它默認(rèn)會(huì)鏈接到 test 文檔(數(shù)據(jù)庫)。注意,如果你不是默認(rèn)端口,請(qǐng)?jiān)趍ongo命令后面指定IP地址和端口號(hào)。

mongo 127.0.0.1:25000

1.5、Web用戶界面

MongoDB 提供了簡(jiǎn)單的 HTTP 用戶界面。 如果你想啟用該功能,需要在啟動(dòng)的時(shí)候指定參數(shù) --rest

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

MongoDB 的 Web 界面訪問端口比服務(wù)的端口多1000。
如果你的MongoDB運(yùn)行端口使用默認(rèn)的25000,你可以在端口號(hào)為26000訪問web用戶界面,即地址為:http://localhost:26000。

1.6、在系統(tǒng)啟動(dòng)時(shí)寫入環(huán)境變量

可以用vi打開/etc/profile文件,然后將剛才的環(huán)境變量設(shè)置命令寫到文件的尾部。

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

1.7、在后臺(tái)運(yùn)行服務(wù)

使用linux下的 nohub [command] & 命令,可以讓服務(wù)在后臺(tái)運(yùn)行,這樣即使關(guān)掉終端服務(wù)也不會(huì)一起關(guān)掉。啟動(dòng)服務(wù)之后如果要關(guān)掉終端,請(qǐng)使用linux的exit命令,而不要強(qiáng)制退出。
>nohup mongod --port 25000 --dbpath /data/db --rest --auth &
exit

為了避免MongoDB的服務(wù)在終端關(guān)掉后也一起關(guān)掉,可以使用--fork參數(shù)將服務(wù)設(shè)置為后臺(tái)運(yùn)行模式。

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

可以用--logpath參數(shù)指定日志的輸出路徑,并且在最后面添加上--logappend參數(shù),以追加的方式創(chuàng)建日志防止把之前的日志刪除了。

1.8、停止運(yùn)行中的服務(wù)

盡量不要用kill命令殺掉進(jìn)程的方式停止服務(wù),請(qǐng)進(jìn)入Shell,用db.shutdownServer命令來關(guān)閉服務(wù)。

use admin
db.shutdownServer()

1.9、加入服務(wù)啟動(dòng)項(xiàng)

打開/etc/rc.local文件

vi /etc/rc.local

將啟動(dòng)服務(wù)的命令添加到文件尾部

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

1.10、使用配置文件啟動(dòng)服務(wù)

如果覺得在服務(wù)后面帶著大量參數(shù)很不方便,可以使用配置文件來代替,只需要事先編寫好配置文件,然后在啟動(dòng)服務(wù)的時(shí)候加上--config參數(shù)即可。

配置文件格式

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

然后啟動(dòng)服務(wù),在--config參數(shù)后制定配置文件路徑

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

二、安全性配置


MongoDB默認(rèn)是在非安全性模式下運(yùn)行的,這樣在生產(chǎn)環(huán)境下非常危險(xiǎn),所以建議還是開啟安全性開關(guān),并分配相應(yīng)的角色權(quán)限。在這里,我們會(huì)創(chuàng)建三個(gè)不同角色的用戶來管理數(shù)據(jù)庫,分別是admin、sa、dev三個(gè)用戶。admin用戶專門負(fù)責(zé)管理整個(gè)數(shù)據(jù)庫的用戶權(quán)限,但不具備業(yè)務(wù)數(shù)據(jù)管理的權(quán)限;sa用戶負(fù)責(zé)服務(wù)的管理,只有他有權(quán)限關(guān)閉服務(wù);而dev用戶負(fù)責(zé)管理某個(gè)業(yè)務(wù)數(shù)據(jù)庫里面的數(shù)據(jù),擁有該數(shù)據(jù)庫的數(shù)據(jù)讀寫權(quán)限。

2.1、添加系統(tǒng)用戶

先創(chuàng)建一個(gè)權(quán)限管理用戶admin。

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

如上所示,系統(tǒng)相關(guān)的權(quán)限配置要在admin庫上進(jìn)行,MongoDB默認(rèn)是沒有創(chuàng)建該數(shù)據(jù)庫的,而我們只要用use命令切換到該數(shù)據(jù)庫就可以了。接下來就調(diào)用db.createUser命令來創(chuàng)建用戶和設(shè)置密碼,并為他賦予userAdminAnyDatabase權(quán)限,這個(gè)權(quán)限代表該用戶有權(quán)管理所有用戶權(quán)限設(shè)置,另外這里還在權(quán)限設(shè)置里面指定了該用戶管理的數(shù)據(jù)庫為admin。

接下來創(chuàng)建系統(tǒng)服務(wù)管理用戶sa。

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

和admin用戶的創(chuàng)建方法差不多,只不過賦予的權(quán)限是hostManager,該權(quán)限能夠監(jiān)控服務(wù)的信息,以及進(jìn)行關(guān)閉服務(wù)等操作。

2.2、在安全性模式下運(yùn)行

創(chuàng)建完admin用戶后,就可以將服務(wù)切換到安全性模式。要切換到安全性模式,可以在啟動(dòng)服務(wù)的時(shí)候加上--auth參數(shù)。

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

然后打開Shell,并進(jìn)行權(quán)限認(rèn)證,用剛才的admin用戶,認(rèn)證命令為db.auth("用戶名", "密碼")。

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

之后就可以在Shell進(jìn)行權(quán)限管理,也就是說可以創(chuàng)建和維護(hù)用戶信息了。
注意,由于admin只擁有userAdminAnyDatabase權(quán)限,所以無法進(jìn)行一些非管理性質(zhì)的操作。比如admin可以通過show users命令查詢當(dāng)前MongoDB的用戶信息,但無法用show collections來查看數(shù)據(jù)庫的集合信息,也無法對(duì)這些集合進(jìn)行任何讀寫操作。

2.3、創(chuàng)建業(yè)務(wù)數(shù)據(jù)庫及其用戶

創(chuàng)建一個(gè)名為app的庫用于存放業(yè)務(wù)數(shù)據(jù),并為其創(chuàng)建一個(gè)用戶dev來負(fù)責(zé)管理數(shù)據(jù)庫里面的數(shù)據(jù)。dev用戶擁有app庫的讀寫權(quán)限。同樣,你應(yīng)該先在Shell中用admin進(jìn)行認(rèn)證,然后在調(diào)用db.createUser命令創(chuàng)建用戶。

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

在這里,要?jiǎng)?chuàng)建dev用戶之前,先切換到app數(shù)據(jù)庫,然后再創(chuàng)建用戶,并為用戶賦予readWrite權(quán)限,并指定為app數(shù)據(jù)庫,該設(shè)定代表用戶擁有讀取app數(shù)據(jù)庫一般數(shù)據(jù)的權(quán)限。
權(quán)限設(shè)定完畢之后,再通過db.auth命令切換到dev用戶,就可以對(duì)app庫進(jìn)行數(shù)據(jù)讀寫操作了。

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

三、安裝使用客戶端控制管理軟件


如果覺得使用MongoDB的Shell很麻煩,想使用諸如Navicat這樣的數(shù)據(jù)庫管理工具,那么可以使用Robomongo

3.1、下載安裝程序

可以到Robomongo的官網(wǎng)下載,地址為https://robomongo.org/。

3.2、鏈接數(shù)據(jù)庫

打開Robomongo,打開菜單File->Connect,點(diǎn)擊Create按鈕打開Connection Settings界面,切換到Connection選項(xiàng)卡,填寫鏈接名稱(隨便填),數(shù)據(jù)庫地址和端口號(hào),然后點(diǎn)擊Test按鈕測(cè)試連接是否連通,如果無法連通,請(qǐng)檢查一下服務(wù)器的防火墻設(shè)置等可能出現(xiàn)的情況。接下來,如果你的數(shù)據(jù)庫開啟了安全性模式,那么請(qǐng)切換到Authentication選項(xiàng)卡,勾上Perform authentication,數(shù)據(jù)庫不用填,填寫你的用戶名、密碼以及認(rèn)證模式(如果設(shè)置的時(shí)候沒有特別指明的話可以不管,按照默認(rèn)即可)。所有信息都填寫完畢之后點(diǎn)擊保存按鈕保存設(shè)置,回到MongoDB Connections界面,選擇剛才創(chuàng)建的數(shù)據(jù)庫連接,點(diǎn)擊連接按鈕即,如果一切正常就可以看到數(shù)據(jù)庫的信息和內(nèi)容了。

四、在PHP下使用MongoDB


如果你想要在PHP下使用MongoDB的話,必須先安裝MongoDB的PHP擴(kuò)展驅(qū)動(dòng)

$ sudo pecl install mongo

使用php的pecl安裝命令必須保證網(wǎng)絡(luò)連接可用以及root權(quán)限。
安裝手冊(cè)
如果你想通過源碼來編譯擴(kuò)展驅(qū)動(dòng)。你必須手動(dòng)編譯源碼包,這樣做的好是最新修正的bug包含在源碼包中。
你可以在Github上下載MongoDB PHP驅(qū)動(dòng)包。訪問github網(wǎng)站然后搜索"mongo php driver"(下載地址:https://github.com/mongodb/mongo-php-driver),下載該源碼包,然后執(zhí)行以下命令:

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

如果你的php是自己編譯的,則安裝方法如下(假設(shè)是編譯在/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

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

extension=mongo.so

修改完配置之后,再重啟一下apache服務(wù)就完成擴(kuò)展驅(qū)動(dòng)的安裝了

service httpd restart

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容