Поиск по сайту:

Как установить MongoDB на CentOS 7


Введение

MongoDB — это ориентированная на документы база данных, бесплатная и с открытым исходным кодом. Она классифицируется как база данных NoSQL, поскольку не опирается на традиционную табличную структуру реляционной базы данных. Вместо этого он использует JSON-подобные документы с динамическими схемами. В отличие от реляционных баз данных, MongoDB не требует предопределенной схемы перед добавлением данных в базу данных. Вы можете изменить схему в любое время и так часто, как это необходимо, без необходимости создавать новую базу данных с обновленной схемой.

В этом руководстве вы установите MongoDB Community Edition на сервер CentOS 7.

Предпосылки

Прежде чем следовать этому руководству, убедитесь, что у вас есть

  • Сервер CentOS 7 с пользователем без полномочий root с поддержкой sudo. Инструкции см. в нашем руководстве «Начальная настройка сервера с CentOS 7».

Шаг 1 — Добавление репозитория MongoDB

Пакет mongodb-org отсутствует в репозиториях по умолчанию для CentOS. Однако MongoDB поддерживает специальный репозиторий. Добавим его на наш сервер.

С помощью редактора vi создайте файл .repo для yum, утилиты управления пакетами для CentOS:

  1. sudo vi /etc/yum.repos.d/mongodb-org.repo

Затем перейдите в раздел «Установка в Red Hat» документации MongoDB и добавьте в файл информацию о репозитории для последней стабильной версии:

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

Сохраните изменения в файле, нажав клавишу ESC, затем введите :wq и нажмите ENTER.

Прежде чем продолжить, убедитесь, что репозиторий MongoDB существует в утилите yum. Команда repolist отображает список включенных репозиториев:

  1. yum repolist
Output
. . . repo id repo name base/7/x86_64 CentOS-7 - Base extras/7/x86_64 CentOS-7 - Extras mongodb-org-6.0/7/x86_64 MongoDB Repository updates/7/x86_64 CentOS-7 - Updates . . .

Установив репозиторий MongoDB, вы можете продолжить установку.

Шаг 2 — Установка MongoDB

Вы можете установить пакет mongodb-org из стороннего репозитория с помощью утилиты yum.

  1. sudo yum install mongodb-org

Есть два запроса Is this ok [y/N]:. Первый разрешает установку пакетов MongoDB, а второй импортирует ключ GPG. Издатель MongoDB подписывает свое программное обеспечение, а yum использует ключ для подтверждения целостности загруженных пакетов. В каждом запросе введите Y, а затем нажмите клавишу ENTER.

Затем запустите службу MongoDB с помощью утилиты systemctl:

  1. sudo systemctl start mongod

Хотя мы не будем использовать их в этом руководстве, вы также можете изменить состояние службы MongoDB с помощью команд reload и stop.

Команда reload запрашивает, чтобы процесс mongod прочитал файл конфигурации /etc/mongod.conf и применил любые изменения без перезапуска.

  1. sudo systemctl reload mongod

Команда stop останавливает все запущенные процессы mongod.

  1. sudo systemctl stop mongod

Утилита systemctl не дала результата после выполнения команды start, но вы можете убедиться, что служба запущена, просмотрев конец mongod.log с помощью команды tail:

  1. sudo tail /var/log/mongodb/mongod.log
Output
. . . [initandlisten] waiting for connections on port 27017

Результат ожидания соединения подтверждает, что MongoDB успешно запущен, и вы можете получить доступ к серверу базы данных с помощью оболочки MongoDB:

  1. mongo

Примечание. При запуске оболочки MongoDB вы могли увидеть следующее предупреждение:

** ПРЕДУПРЕЖДЕНИЕ:** мягкие ограничения r слишком малы. rlimits установлен на 4096 процессов, 64000 файлов. Количество процессов должно быть не менее 32000 : 0,5 умноженное на количество файлов.

MongoDB — это многопоточное приложение. Он может запускать дополнительные процессы для обработки своей рабочей нагрузки. В предупреждении говорится, что для максимальной эффективности MongoDB количество процессов, которые ему разрешено запускать, должно быть вдвое меньше количества файлов, которые он может открыть в любой момент времени. Чтобы устранить предупреждение, измените значение soft rlimit processes для mongod, отредактировав файл 20-nproc.conf:

  1. sudo vi /etc/security/limits.d/20-nproc.conf

Добавьте следующую строку в конец файла:

. . .
mongod soft nproc 32000

Обязательно сохраните изменения, нажав клавишу ESC, затем введите :wq и нажмите ENTER.

Чтобы новое ограничение было доступно для MongoDB, перезапустите его с помощью утилиты systemctl:

  1. sudo systemctl restart mongod

После этого при подключении к оболочке MongoDB предупреждение должно перестать существовать.

Чтобы узнать, как взаимодействовать с MongoDB из оболочки, вы можете просмотреть вывод метода db.help(), который предоставляет список методов для объекта db.

  1. db.help()
Output
DB methods: db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ] db.auth(username, password) db.cloneDatabase(fromhost) db.commandHelp(name) returns the help for the command db.copyDatabase(fromdb, todb, fromhost) db.createCollection(name, { size : ..., capped : ..., max : ... } ) db.createUser(userDocument) db.currentOp() displays currently executing operations in the db db.dropDatabase() . . .

Оставьте процесс mongod работать в фоновом режиме, но выйдите из оболочки с помощью команды exit:

  1. exit
Output
Bye

Шаг 3 — Проверка запуска

Поскольку приложение, управляемое базой данных, не может работать без базы данных, мы позаботимся о том, чтобы демон MongoDB, mongod, запускался вместе с системой.

Используйте утилиту systemctl, чтобы проверить его статус запуска:

  1. systemctl is-enabled mongod; echo $?

Вывод нуля подтверждает, что демон включен, что нам и нужно. Однако единица подтверждает отключенный демон, который не запускается.

Output
. . . enabled 0

Если демон отключен, используйте утилиту systemctl, чтобы включить его:

  1. sudo systemctl enable mongod

Теперь у вас есть запущенный экземпляр MongoDB, который автоматически запустится после перезагрузки системы.

Шаг 4 — Импорт примера набора данных (необязательно)

В отличие от других серверов баз данных, MongoDB не содержит данных в своей базе данных test. Поскольку мы не хотим экспериментировать с новым программным обеспечением, используя производственные данные, мы загрузим образец набора данных из примера MongoDB. Этот документ JSON содержит набор ресторанов, которые мы будем использовать для практики взаимодействия с MongoDB и предотвращения причинения вреда конфиденциальным данным.

Начните с перехода в доступный для записи каталог:

  1. cd /tmp

Используйте команду curl и ссылку из MongoDB, чтобы загрузить файл JSON:

  1. curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

Команда mongoimport вставит данные в тестовую базу данных. Флаг --db определяет, какую базу данных использовать, тогда как флаг --collection указывает, где в базе данных будет храниться информация, а --file Флаг сообщает команде, над каким файлом следует выполнить действие импорта:

  1. mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

Вывод подтверждает импорт данных из файла primer-dataset.json:

Output
connected to: localhost imported 25359 documents

Имея образец набора данных, вы можете выполнить к нему запрос.

Перезапустите оболочку MongoDB:

  1. mongo

По умолчанию оболочка выбирает базу данных test, куда вы импортировали данные.

Запросите коллекцию ресторанов с помощью метода find(), чтобы отобразить список всех ресторанов в наборе данных. Поскольку коллекция содержит более 25 000 записей, используйте необязательный метод limit(), чтобы сократить вывод запроса до указанного числа. Кроме того, метод pretty() делает информацию более удобочитаемой благодаря новым строкам и отступам.

  1. db.restaurants.find().limit(1).pretty()
Output
{ "_id" : ObjectId("57e0443b46af7966d1c8fa68"), "address" : { "building" : "1007", "coord" : [ -73.856077, 40.848447 ], "street" : "Morris Park Ave", "zipcode" : "10462" }, "borough" : "Bronx", "cuisine" : "Bakery", "grades" : [ { "date" : ISODate("2014-03-03T00:00:00Z"), "grade" : "A", "score" : 2 }, { "date" : ISODate("2013-09-11T00:00:00Z"), "grade" : "A", "score" : 6 }, { "date" : ISODate("2013-01-24T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-11-23T00:00:00Z"), "grade" : "A", "score" : 9 }, { "date" : ISODate("2011-03-10T00:00:00Z"), "grade" : "B", "score" : 14 } ], "name" : "Morris Park Bake Shop", "restaurant_id" : "30075445" }

Вы можете продолжить использовать пример набора данных, чтобы ознакомиться с MongoDB, или удалить его с помощью метода db.restaurants.drop():

  1. db.restaurants.drop()

Наконец, выйдите из оболочки с помощью команды exit:

  1. exit
Output
Bye

Заключение

В этом руководстве вы добавили сторонний репозиторий в yum, установили сервер базы данных MongoDB, импортировали образец набора данных и выполнили простой запрос. С MongoDB вы можете делать гораздо больше, например создавать базы данных с коллекциями, заполнять базы данных множеством документов и создавать надежные приложения. Чтобы узнать больше о MongoDB, ознакомьтесь с нашей серией руководств по MongoDB.