使用Yum安裝MongoDB Linux版

realkid4發表於2017-07-18

 

在之前筆者的Blog中,比較詳細的介紹瞭如何使用從官網上下載的tar壓縮包安裝Linux版本的MongoDB。這種方式針對一些比較簡單的環境,是很方便的做法。在官方文件中,也是認可這種安裝方式的,被稱為TarBall安裝。

 

另外一種Linux版本安裝方式,就是使用yum連線官方的Repository庫,直接下載安裝介質。這種方法更加直接,而且安裝結果和作業系統匹配程度更好。

 

1、環境說明

 

本文使用紅帽6.5進行實驗。

 

 

[root@oracle-test ~]# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 6.5 (Santiago)

[root@oracle-test ~]# uname -r

2.6.32-431.el6.x86_64

 

 

安裝目標版本為MongoDB最新版本3.4

 

2、使用yum進行安裝

 

MongoDB官方網站上,獲取yum資源庫地址。建立對應的Repo檔案。

 

 

[root@oracle-test ~]# cd /etc/yum.repos.d/

 

[root@oracle-test yum.repos.d]# ls -l

total 12

-rw-r--r--. 1 root root  74 Dec 28  2016 localyum.repo

-rw-r--r--. 1 root root 198 Jul 16 13:02 mongodb-org-3.4.repo

-rw-r--r--. 1 root root 636 Sep 14  2016 zabbix.repo

 

 

對應資訊:

 

 

[root@oracle-test yum.repos.d]# cat mongodb-org-3.4.repo

[mongodb-org-3.4]

name=MongoDB Repository

baseurl=

gpgcheck=1

enable=1

gpgkey=

 

 

呼叫yum進行安裝。注意:在yum安裝物件上,包括幾個物件,分別表示不同的安裝內容:

 

ü  mongodb-orgMongoDB全集資訊,包括ServerClientMongo Shell)、各型別工具;

ü  mongodb-org-server:伺服器元件;

ü  mongodb-org-shellMongoDB Shell元件,類似於sqlplus

ü  mongodb-org-tools:備份還原工具、資料匯入匯出等;

 

 

[root@oracle-test yum.repos.d]# yum install -y mongodb-org

Loaded plugins: product-id, refresh-packagekit, security, subscription-manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package mongodb-org.x86_64 0:3.4.6-1.el6 will be installed

--> Processing Dependency: mongodb-org-tools = 3.4.6 for package: mongodb-org-3.4.6-1.el6.x86_64

--> Processing Dependency: mongodb-org-shell = 3.4.6 for package: mongodb-org-3.4.6-1.el6.x86_64

--> Processing Dependency: mongodb-org-server = 3.4.6 for package: mongodb-org-3.4.6-1.el6.x86_64

--> Processing Dependency: mongodb-org-mongos = 3.4.6 for package: mongodb-org-3.4.6-1.el6.x86_64

--> Running transaction check

---> Package mongodb-org-mongos.x86_64 0:3.4.6-1.el6 will be installed

---> Package mongodb-org-server.x86_64 0:3.4.6-1.el6 will be installed

---> Package mongodb-org-shell.x86_64 0:3.4.6-1.el6 will be installed

---> Package mongodb-org-tools.x86_64 0:3.4.6-1.el6 will be installed

(篇幅原因,有省略......

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Dependency Installed:

  mongodb-org-mongos.x86_64 0:3.4.6-1.el6                                      

  mongodb-org-server.x86_64 0:3.4.6-1.el6                                      

  mongodb-org-shell.x86_64 0:3.4.6-1.el6                                        

  mongodb-org-tools.x86_64 0:3.4.6-1.el6                                       

 

Complete!

[root@oracle-test yum.repos.d]#

 

 

另外,在國內的伺服器上,由於網路的原因,可能會有下載中間超時中斷的情況。可以重試幾次,或者知道下載地址之後,單獨透過支援斷點程式進行下載。

 

3、後續配置

 

使用yum方式若干好處,一個是預設就有配置檔案進行程式控制,另一個就是自動以作業系統服務Service的方式組織。

 

Oracle一樣,我們建議將Selinux關閉。

 

 

[root@oracle-test yum.repos.d]# vi /etc/selinux/config

 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

 

 

以作業系統服務方式執行,避免出現單獨shell執行的情況。

 

 

[root@oracle-test ~]# chkconfig | grep mongod

mongod          0:off   1:off   2:off   3:on    4:off   5:on    6:off

[root@oracle-test ~]# service mongod status

mongod (pid 2078) is running...

 

[root@oracle-test log]# ps -ef | grep mongo

mongod    2078     1  0 14:25 ?        00:00:01 /usr/bin/mongod -f /etc/mongod.conf

root      2419  2336  0 14:29 pts/0    00:00:00 grep mongo

[root@oracle-test log]# id mongod

uid=495(mongod) gid=490(mongod) groups=490(mongod)

 

 

觀察幾個方面問題:

 

首先,rpm安裝程式建立了單獨使用者mongod來作為執行程式主體。其次,mongod啟動引數以配置檔案/etc/mongod.conf的方式儲存在作業系統上,可以編輯執行。第三,chkconfig中可以看到開機自動啟動程式服務。

 

日誌和資料檔案上,tarball安裝比較“簡陋”,都是/data/db目錄和直接輸入到螢幕上。使用mongod.conf配置方式後,這種靈活性要好很多。

 

日誌檔案:

 

 

[root@oracle-test ~]# cd /var/log/

[root@oracle-test log]# ls -l | grep mongo

drwxr-xr-x. 2 mongod mongod   4096 Jul 16 14:16 mongodb

 

[root@oracle-test mongodb]# pwd

/var/log/mongodb

[root@oracle-test mongodb]# ls -l

total 4

-rw-r-----. 1 mongod mongod 4062 Jul 16 14:25 mongod.log

 

 

初始配置檔案專案:

 

 

[root@oracle-test mongodb]# cd /etc

[root@oracle-test etc]# ls -l | grep mongod.conf

-rw-r--r--.  1 root root    768 Jul  6 02:55 mongod.conf

 

[root@oracle-test etc]# cat mongod.conf

# mongod.conf

 

# for documentation of all options, see:

#  

 

# where to write logging data.

systemLog:

  destination: file

  logAppend: true

  path: /var/log/mongodb/mongod.log –日誌檔案位置

 

# Where and how to store data.

storage:

  dbPath: /var/lib/mongo  --儲存資料位置

  journal:

    enabled: true

#  engine:

#  mmapv1:

#  wiredTiger:

 

# how the process runs

processManagement:

  fork: true  # fork and run in background

  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

 

# network interfaces

net:

  port: 27017

  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.

 

#security:

 

#operationProfiling:

 

#replication:

 

#sharding:

 

## Enterprise-Only Options

 

#auditLog:

 

#snmp:

 

 

各種配置專案,可以參見Mongodb官方文件資訊:

 

4、引數修改實驗

 

嘗試在mongod.conf檔案上進行簡單的修改。對於MongoDB,除了27017埠之外,還會有一個28017Web方式訪問介面。預設是不開放的,需要使用配置檔案開啟。

 

 

net:

  port: 27017

  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.

  http:

    enabled: true

    JSONPEnabled: true

    RESTInterfaceEnabled: true

"mongod.conf" 47L, 847C written

 

 

重新啟動mongod服務。

 

 

[root@oracle-test etc]# service mongod restart

Stopping mongod: [  OK  ]

Starting mongod: [  OK  ]

 

2017-07-16T14:44:12.957+0800 I CONTROL  [initandlisten]

2017-07-16T14:44:12.960+0800 I NETWORK  [websvr] admin web console waiting for connections on port 28017

2017-07-16T14:44:12.961+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongo/diagnostic.data'

2017-07-16T14:44:12.961+0800 I NETWORK  [thread1] waiting for connections on port 27017

 

 

注意:這個時候,只能進行本地登入,從遠端客戶端使用shell或者網頁都不能訪問。

 

 

C:\Users\admin>mongo --host 172.xx.xx.xxx

MongoDB shell version v3.4.5

connecting to: mongodb://172.xx.xx.xxx:27017/

2017-07-16T15:01:45.913+0800 W NETWORK  [thread1] Failed to connect to 172.16.19

.143:27017 after 5000ms milliseconds, giving up.

2017-07-16T15:01:45.914+0800 E QUERY    [thread1] Error: couldn't connect to ser

ver 172.xx.xx.xxx:27017, connection attempt failed :

connect@src/mongo/shell/mongo.js:237:13

@(connect):1:6

exception: connect failed

 

 

原因在於net引數的bindIP內容,預設情況為:

 

 

net:

  port: 27017

  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.

 

 

需要修改為0.0.0.0,否則只能在本地專案。

 

net:

  port: 27017

  bindIp: 0.0.0.0  # Listen to local interface only, comment to listen on all interfaces.

 

 

[root@oracle-test etc]# service mongod restart

Stopping mongod: [  OK  ]

Starting mongod: [  OK  ]

 

 

C:\Users\admin>mongo --host 172.xx.xx.xxx

MongoDB shell version v3.4.5

connecting to: mongodb://172.xx.xx.xxx:27017/

MongoDB server version: 3.4.6

Server has startup warnings:

(篇幅原因,有省略……

2017-07-16T15:12:19.433+0800 I CONTROL  [initandlisten]

2017-07-16T15:12:19.433+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits

 too low. rlimits set to 1024 processes, 64000 files. Number of processes should

 be at least 32000 : 0.5 times number of files.

2017-07-16T15:12:19.433+0800 I CONTROL  [initandlisten]

>

 

 

對於出現的soft rlimits提示,可以修改limits.conf檔案,設定額外的限制數目。

 

 

[root@oracle-test ~]# vi /etc/security/limits.conf

 

#@student        -       maxlogins       4

 

mongod soft nofile 64000

mongod hard nofile 64000

mongod soft nproc 32000

mongod hard nproc 32000

 

 

[root@oracle-test ~]# service mongod restart

Stopping mongod: [  OK  ]

Starting mongod: [  OK  ]

 

 

5、結論

 

本文介紹了使用yum方式安裝mongodb的方法。這種方法下,系統出錯的情況會更少一些,配置專案也更加清晰。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-2142245/,如需轉載,請註明出處,否則將追究法律責任。

相關文章