1. 程式人生 > >Mongodb以及rockmongo安裝

Mongodb以及rockmongo安裝

localhost 工作 web服務器 何事 etc 用戶 用戶名 spl zend

Mongodb安裝


  以centos6.x_x_64位系統為例,我們使用yum安裝

1.添加yum源

在/etc/yum.repos.d/目錄下創建文件10genmon.repo(名字隨意,.repo結尾就行),它包含MongoDB倉庫的配置信息

[[email protected] yum.repos.d]# pwd
/etc/yum.repos.d
[[email protected] yum.repos.d]# cat 10genmon.repo 
[10gen] 

name=10gen Repository 

baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 
gpgcheck=0

2.使用yum安裝

[[email protected] yum.repos.d]# yum install mongodb-org    #我已經安裝過了,所有不會重復安裝
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
Package mongodb-org-2.6.12-1.x86_64 already installed and latest version
Nothing to 
do [[email protected] yum.repos.d]# rpm -qa|grep mongod
mongodb-org-shell-2.6.12-1.x86_64
mongodb-org-server-2.6.12-1.x86_64
mongodb-org-tools-2.6.12-1.x86_64
mongodb-org-2.6.12-1.x86_64
mongodb-org-mongos-2.6.12-1.x86_64
[[email protected] yum.repos.d]#

3.根據需要修改/etc/mongo.conf文件

  • 至少配置以下三項,然後保存

  logpath=/var/log/mongodb/mongod.log  #mongo日誌文件

  dbpath=/data/mongo            #數據庫data存放路徑

  pidfilepath=/var/run/mongodb/mongod.pid #進程pid

  • 創建對應目錄

  mkdir -p /var/log/mongodb
  mkdir -p /data/mongo
  mkdir -p /var/run/mongodb

  • 添加權限

chown mongod.mongod /var/log/mongodb -R

chown mongod.mongod /var/run/mongodb -R

chown mongod.mongod /data/mongo -R

  到這裏就可以通過/etc/init.d/mongod start啟動mongd服務了,默認端口27017,可以在/etc/mongod.conf修改

4.考慮到安全問題我們要給mongd數據庫添加用戶信息

  想要啟用mongod認證需要在/etc/mongod.conf中設置auth=true.但是啟用安全之前一定要先添加一超級用戶如下演示:

  • 先添加一個超級用戶(管理員賬號)
MongoDB shell version: 2.6.12
connecting to: test
> use admin
switched to db admin
> db.addUser(root,xxxx)
1
> exit
bye
  • /etc/mongod.conf中添加auth=true,然後重啟/etc/init.d/mongod restart

  一旦設置認真,所有的操縱均需要經過認證

[[email protected] mongodb]# mongo
MongoDB shell version: 2.6.12
connecting to: test
> use admin
switched to db admin
> show collections
2017-05-10T18:27:26.624+0800 error: {
"$err" : "not authorized for query on admin.system.namespaces",      #提示已經沒有權限了
"code" : 13
} at src/mongo/shell/query.js:131

> db.auth(‘root‘,‘xxxx‘)
1                                              #1表示已經認真成功,這時候可以作任何事情了,因為是管理員賬號      
> show collections
system.indexes
system.users
system.version
>

  我們不可能把管理員賬號非每一個使用者,所以我們可以給某個數據庫建立賬號,然後提供給指定用戶

  • 給指定數據庫添加一個賬戶,要先切換到admin,登陸有再切換到目標數據庫完成賬戶創建
[[email protected] yum.repos.d]# mongo  TestDB
MongoDB shell version: 2.6.12
connecting to: TestDB
> use admin              
switched to db admin
> db.auth(root,xxxx)
1
> use TestDB
switched to db TestDB
> db.addUser(‘test‘,‘test‘)      #TestDB的專屬賬號

關於mongodb賬號問題可以參考 http://www.cnblogs.com/valor-xh/p/6369432.html

Mongodb可視化管理工具rockmongo


rockMongo是PHP5寫的一個MongoDB管理工具。另外我們要保證mongodb啟動時已經設置了auth=true選項.否則就太不安全了。

通過 Rockmongo 你可以管理 MongoDB服務,數據庫,集合,文檔,索引等等。它提供了非常人性化的操作。類似 phpMyAdmin(PHP開發的MySql管理工具)。

Rockmongo 下載地址:https://github.com/iwind/rockmongo.git

  1. 安裝php運行需要的依賴庫
  •  yum -y install gcc automake autoconf libtool make
  •  yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel --setopt=protected_multilib=false

  2.安裝php和php-fpm

  • yum -y install php
  • yum -y install php-fpm
#檢查是否安裝成功
[[email protected] mongodb]# php -v PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies [[email protected] mongodb]# /etc/init.d/php-fpm status php-fpm (pid 13766) is running...

  3.php-mongo驅動

  • yum install php-pecl-mongo
  • echo "extension=mongo.so">>/etc/php.ini
  • /etc/init.d/php-fpm restart

  4.獲取rockmongo源碼程序並放到nginx(或其他web服務器)的資源路徑,並根據自身情況修改config.php文件

  • git clone https://github.com/iwind/rockmongo.git
  • mv rockmongo /path/to/your/nginx_web/
  • 修改/path/to/your/nginx_web/rockmongo/config.php文件
[[email protected] ~]# cat /usr/share/nginx/html/rockmongo/config.php 
<?php
/**
 * RockMongo configuration
 *
 * Defining default options and server configuration
 * @package rockmongo
 */
 
$MONGO = array();
$MONGO["features"]["log_query"] = "on";//log queries
$MONGO["features"]["theme"] = "default";//theme
$MONGO["features"]["plugins"] = "on";//plugins

$i = 0;

/**
* Configuration of MongoDB servers
* 
* @see more details at http://rockmongo.com/wiki/configuration?lang=en_us
*/
$MONGO["servers"][$i]["mongo_name"] = "自己命名一個名字";//mongo server name
//$MONGO["servers"][$i]["mongo_sock"] = "/var/run/mongo.sock";//mongo socket path (instead of host and port)
$MONGO["servers"][$i]["mongo_host"] = "127.0.0.1";//mongo host
$MONGO["servers"][$i]["mongo_port"] = "27017";//mongo port,需要和/etc/mongod.conf中一致,否則rockmongo程序找不到我們的mongod服務 
$MONGO["servers"][$i]["mongo_timeout"] = 0;//mongo connection timeout

//follwo 3  lines only function when $MONGO["servers"][$i]["mongo_auth"] = false
//test,test這裏我提前給TestDB數據庫創建的用戶,密碼,根據自己需要決定是否設置此項.,這裏的設置跟下面test_admin想關聯.
$MONGO["servers"][$i]["mongo_db"] = "TestDB";//default mongo db to connect, works only if mongo_auth=false $MONGO["servers"][$i]["mongo_user"] = "test";//mongo authentication user name, works only if mongo_auth=fals $MONGO["servers"][$i]["mongo_pass"] = "test";//mongo authentication password, works only if mongo_auth=false $MONGO["servers"][$i]["mongo_auth"] =true;//enable mongo authentication? $MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false

//test_admin是當“$MONGO["servers"][$i]["mongo_auth"] =false;//enable mongo authentication?”時使用的admin登陸名,並不是真正的admin用戶,從上面可以了解到,其實是一個只能操作
//TestDB的"假的admin",並且它內部最終使用的是‘test‘賬戶以及密碼‘test‘
$MONGO["servers"][$i]["control_users"]["test_admin"] = "test_admin";//one of control users ["USERNAME"]=PASSWORD, works only if mongo_auth=false $MONGO["servers"][$i]["ui_only_dbs"] = "";//databases to display $MONGO["servers"][$i]["ui_hide_dbs"] = "";//databases to hide $MONGO["servers"][$i]["ui_hide_collections"] = "";//collections to hide $MONGO["servers"][$i]["ui_hide_system_collections"] = false;//whether hide the system collections //$MONGO["servers"][$i]["docs_nature_order"] = false;//whether show documents by nature order, default is by _id field //$MONGO["servers"][$i]["docs_render"] = "default";//document highlight render, can be "default" or "plain" $i ++; /** * mini configuration for another mongo server */ /** $MONGO["servers"][$i]["mongo_name"] = "Localhost2"; $MONGO["servers"][$i]["mongo_host"] = "127.0.0.1"; $MONGO["servers"][$i]["mongo_port"] = "27017"; $MONGO["servers"][$i]["control_users"]["admin"] = "password"; $i ++; **/ ?>

4.配置nginx,把對rockmongo應用的相關請求全部交給fastcgi_pass處理

[[email protected] ~]# vi /etc/nginx/conf.d/rockmongo.conf 

server {
   listen 27016;              #rockmongo對外的監聽端口
   root /usr/share/nginx/html/rockmongo;
    try_files $uri /index.php;
    location ~ \.php$  {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

}

5.再保證php,nginx,mongodb工作正常的情況下,測試一下,瀏覽器輸入host:27016即可

技術分享

6.登錄

兩種登錄方式:

1.認證模式,在config.php中設置如下:

$MONGO["servers"][$i]["mongo_auth"] =true;//enable mongo authentication?

  • 使用admin賬戶,查看所有mongodb信息
  • 使用普通用戶,只能看用戶名下的數據庫,登錄時要在Non-Admin users框內輸入對應的DB名

下圖是使用admin登錄的,所以除了admin數據庫外還可以看到TestDB技術分享

下圖是用test用戶登錄的,只能夠管理TestDB

技術分享

2.無認證方式,要在config.php中設置如下:

$MONGO["servers"][$i]["mongo_auth"] =false;//enable mongo authentication?

$MONGO["servers"][$i]["mongo_db"] = "TestDB";//default mongo db to connect, works only if mongo_auth=false  #默認訪問的DB
$MONGO["servers"][$i]["mongo_user"] = "test";//mongo authentication user name, works only if mongo_auth=fals  #TestDB對應的真實用戶名
$MONGO["servers"][$i]["mongo_pass"] = "test";//mongo authentication password, works only if mongo_auth=false #TestDB對應的真實密碼

$MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false

$MONGO["servers"][$i]["control_users"]["test_admin"] = "test_admin"

然後使用test_admin賬戶作為假的admin賬戶登錄,這裏的test_admin表示可以查看管理TestDB的用戶,或許這麽做原因可能是不想把TestDB的真實用戶信息暴露出來吧-_-

測試過程中認證與不認證方式切換時會有些問題,需要重啟mongodb服務(當然很煩,,),建議使用第一種就好

技術分享

最後給一個mongo3.4的yum源,官網更詳盡,https://www.mongodb.com/download-center

[[email protected] mongodb_yum]# cat mongodb-org-3.4.repo 
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

  

Mongodb以及rockmongo安裝