MongoDB: установка на CentOS

Автор: | 07/01/2014
 

mongodb-logoРепозиторий MongoDB содержит 5 различных пакетов:

mongodb-org — метапакет, который установит все остальные;

mongodb-org-server — непосредственно сам сервер mongod и связанные файлы конфигурации и управления;

mongodb-org-mongos — демон mongos;

mongodb-org-shell — mongo-shell;

mongodb-org-tools — различные утилиты: mongoimport, bsondump, mongodump, mongoexport, mongofiles, mongoimport, mongooplog, mongoperf, mongorestore, mongostat, mongotop.

Не забываем отключить SELinux:

# cat /etc/selinux/config | grep disa
# disabled - No SELinux policy is loaded.
SELINUX=disabled

И перезагрузить машину (хотя — всё поднялось и без его отключения, но везде рекомендуется).Создаём файл репозитория Mongo — /etc/yum.repos.d/mongodb.repo. В него добавляем:

для х64 систем:

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

для x32:

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1

Поверяем:

# yum repolist | grep mongo
mongodb MongoDB Repository 191

Приступаем к установке. Т.к. mongodb-org содержится в нескольких репозиториях (RemiEpel) — запустим установку с опцией --disablerepo:

# yum --disablerepo="*" --enablerepo="mongodb" -y install mongodb-org
...
Downloading Packages:
(1/5): mongodb-org-2.6.3-1.i686.rpm
....
Installed:
mongodb-org.i686 0:2.6.3-1

Dependency Installed:
mongodb-org-mongos.i686 0:2.6.3-1 mongodb-org-server.i686 0:2.6.3-1 mongodb-org-shell.i686 0:2.6.3-1 mongodb-org-tools.i686 0:2.6.3-1

Complete!

При установке MongoDB создаст директории:

/var/lib/mongo — каталог данных;
/var/log/mongodb/ — каталог логов.

Запускаем:

# service mongod start
Starting mongod: [ OK ]

Проверяем лог:

# tail /var/log/mongodb/mongod.log
2014-06-30T17:03:10.472+0300 [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1" }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" }, storage: { dbPath: "/var/lib/mongo" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2014-06-30T17:03:10.588+0300 [FileAllocator] allocating new datafile /var/lib/mongo/local.ns, filling with zeroes...
2014-06-30T17:03:10.588+0300 [FileAllocator] creating directory /var/lib/mongo/_tmp
2014-06-30T17:03:10.634+0300 [FileAllocator] done allocating datafile /var/lib/mongo/local.ns, size: 16MB, took 0.04 secs
2014-06-30T17:03:10.699+0300 [FileAllocator] allocating new datafile /var/lib/mongo/local.0, filling with zeroes...
2014-06-30T17:03:10.702+0300 [FileAllocator] done allocating datafile /var/lib/mongo/local.0, size: 64MB, took 0.002 secs
2014-06-30T17:03:10.714+0300 [initandlisten] build index on: local.startup_log properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "local.startup_log" }
2014-06-30T17:03:10.714+0300 [initandlisten] added index to empty collection
2014-06-30T17:03:10.715+0300 [initandlisten] command local.$cmd command: create { create: "startup_log", size: 10485760, capped: true } ntoreturn:1 keyUpdates:0 numYields:0 reslen:37 131ms
2014-06-30T17:03:10.716+0300 [initandlisten] waiting for connections on port 27017

Проверяем порт:

# netstat -anp | grep 27017
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2751/mongod
unix 2 [ ACC ] STREAM LISTENING 16159 2751/mongod /tmp/mongodb-27017.sock

Добавляем в автозагрузку:

# chkconfig mongod on

Проверяем:

# chkconfig --list | grep mongod
mongod 0:off 1:off 2:off 3:off 4:off 5:off 6:off

Подключаемся:

# mongo
MongoDB shell version: 2.6.3
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
...
>

Посмотрим имеющиеся базы:

> show dbs
admin (empty)
local 0.078GB
test 0.078GB

И для примера — вывод mongotop:

# mongotop -v
2014-06-30T17:13:06.646+0300 creating new connection to:127.0.0.1:27017
2014-06-30T17:13:06.647+0300 [ConnectBG] BackgroundJob starting: ConnectBG
2014-06-30T17:13:06.648+0300 connected to server 127.0.0.1:27017 (127.0.0.1)
2014-06-30T17:13:06.648+0300 connected connection!
connected to: 127.0.0.1

ns total read write 2014-06-30T14:13:07
test.test 0ms 0ms 0ms
test.system.namespaces 0ms 0ms 0ms
test.system.indexes 0ms 0ms 0ms
local.system.replset 0ms 0ms 0ms
local.system.namespaces 0ms 0ms 0ms
local.system.indexes 0ms 0ms 0ms
local.startup_log 0ms 0ms 0ms
admin.system.version 0ms 0ms 0ms

Создадим базу и пользователя, просто что бы убедиться что всё работает:

> use firstdb
switched to db firstdb

База ещё не создана:

> show dbs
admin (empty)
local 0.078GB
test 0.078GB

Добавляем пользователя к этой базе:

> db.users.save( {username:"firstuser"} )
WriteResult({ "nInserted" : 1 })

Проверяем:

> show dbs
admin (empty)
firstdb 0.078GB
local 0.078GB
test 0.078GB

И, напоследок, посмотрим содержимое каталога данных MongoDB:

# ls -l /var/lib/mongo/
total 245792
-rw-------. 1 mongod mongod 67108864 Jun 30 17:22 firstdb.0
-rw-------. 1 mongod mongod 16777216 Jun 30 17:22 firstdb.ns
-rw-------. 1 mongod mongod 67108864 Jun 30 17:03 local.0
-rw-------. 1 mongod mongod 16777216 Jun 30 17:03 local.ns
-rwxr-xr-x. 1 mongod mongod 5 Jun 30 17:03 mongod.lock
-rw-------. 1 mongod mongod 67108864 Jun 30 17:06 test.0
-rw-------. 1 mongod mongod 16777216 Jun 30 17:06 test.ns
drwxr-xr-x. 2 mongod mongod 4096 Jun 30 17:22 _tmp

На этом установку MongoDB на CentOS можно считать завершённой.