MongoDB – это кроссплатформенная и распределенная система баз данных NoSQL (не-SQL или нереляционная) с открытым исходным кодом. Вместо хранения данных в таблицах, как в традиционных базах данных SQL, MongoDB использует гибкие документы для хранения различных форм данных. Для хранения данных MongoDB использует бинарный формат JSON – BSON.
MongoDB – это распределенная база данных NoSQL со встроенной функцией высокой доступности, автоматическим обходом отказа и избыточностью данных, а также горизонтальным масштабированием с помощью шардинга по распределенным кластерам. Она поддерживает многорегиональное географическое развертывание и предоставляет API запросов, поддерживающий операции CRUD (чтение и запись), конвейер агрегации данных, текстовый поиск и геопространственные запросы.
В этом руководстве вы узнаете, как установить MongoDB на сервер Alma Linux 9. Вы также включите аутентификацию MongoDB, настроите пользователя-администратора для MongoDB и создадите новую базу данных и пользователя для ваших приложений.
Подготовка системы (отключение thp, настройка ulimit и sysctl.conf)
В этом разделе вы подготовите и настроите ваш сервер ALma Linux для установки MongoDB. Ниже перечислены три основных действия, которые вы должны выполнить:
- Отключите Transparent Huge Pages (THP) с помощью службы systemd
- Увеличение максимального количества процессов и открытых файлов для пользователя ‘mongod’
- Установка vm-max fs через файл/etc/sysctl.conf’
Итак, сначала выполните следующую команду ‘dnf’, чтобы установить текстовый редактор ‘nano’ в вашу систему Alma Linux.
sudo dnf install nano -y
Отключение прозрачных огромных страниц (THP)
Теперь создайте новый служебный файл ‘/etc/systemd/system/disable-thp.service‘ для отключения Transparent Huge Pages (THP). Эта служба также будет запускаться при каждой загрузке системы.
sudo nano /etc/systemd/system/disable-thp.service
Вставьте в файл следующую конфигурацию.
[Unit] Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c “echo ‘never’ > /sys/kernel/mm/transparent_hugepage/enabled && echo ‘never’ > /sys/kernel/mm/transparent_hugepage/defrag”
[Install]
WantedBy=multi-user.target
После этого сохраните и выйдите из файла.
Далее запустите программу ‘systemctl‘ команда ниже, чтобы перезагрузить менеджер systemd и применить ваши изменения.
sudo systemctl daemon-reload
Наконец, запустите и включите ‘disable-thp.service‘ с помощью приведенной ниже команды. После этого THP будет автоматически отключаться при запуске.
sudo systemctl enable --now disable-thp.service
Настройка ограничений
Создайте новую конфигурацию ‘/etc/security/limits.d/mongodb.conf‘ со следующим ‘nano‘ редактор.
sudo nano /etc/security/limits.d/mongodb.conf
Вставьте в файл приведенную ниже конфигурацию. Это позволит ‘mongod‘ пользователь для запуска процессов max и открытия дескрипторов файлов max для ‘64000‘.
mongod soft nproc 64000 mongod hard nproc 64000 mongod soft nofile 64000 mongod hard nofile 64000
Сохраните файл и выйдите из редактора.
Настройка sysctl.conf
Откройте файл ‘/etc/sysctl.conf‘ используя ‘nano‘ редактор.
sudo nano /etc/sysctl.conf
Добавьте следующие строки, чтобы настроить fs.file-max, максимальное количество карт и включить swappiness.
fs.file-max = 2097152 vm.max_map_count = 262144 vm.swappiness = 1
Сохраните файл и выйдите из редактора.
Теперь запустите программу ‘sysctl‘ команду ниже, чтобы применить изменения.
sudo sysctl -p
По желанию вы можете перезагрузить сервер, чтобы применить изменения.
sudo reboot
Установка MongoDB
Теперь, после настройки сервера Alma Linux, запустите установку сервера MongoDB, выполнив следующие действия – В данном случае вы будете устанавливать MongoDB 7.0 на сервер Alma Linux 9.
Сначала создайте новый файл репозитория MongoDB ‘/etc/yum.repos.d/mongodb-org-7.0.repo‘ со следующим ‘nano‘ редактор.
sudo nano /etc/yum.repos.d/mongodb-org-7.0.repo
Вставьте в файл приведенную ниже конфигурацию.
[mongodb-org-7.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://pgp.mongodb.com/server-7.0.asc
Сохраните файл и выйдите из редактора.
Теперь запустите программу ‘dnf‘ команда ниже, чтобы получить список доступных репозиториев на вашем сервере Alma Linux. Вы увидите, что репозиторий MongoDB был добавлен.
sudo dnf repolist
Далее запустите команду ‘dnf install‘ команда ниже, чтобы установить MongoDB и оболочку MongoDB в вашу систему. Введите ‘Y‘, чтобы подтвердить установку.
sudo dnf install mongodb-org mongodb-mongosh
После завершения установки запустите и включите MongoDB ‘mongod‘ служба, и проверьте ‘mongod‘ статус службы, чтобы убедиться, что она запущена.
sudo systemctl enable --now mongod sudo systemctl status mongod
Ниже видно, что MongoDB запущена на сервере Alma Linux.
Включите аутентификацию MongoDB
На данный момент сервер MongoDB запущен на вашем сервере Alma Linux. Теперь вы защитите свою установку MongoDB, включив аутентификацию по паролю и создав нового пользователя-администратора MongoDB. Кроме того, вы изучите базовую оболочку ‘mongosh’ или MongoDB shell для управления сервером MongoDB.
Сначала войдите на сервер MongoDB, используя ‘mongosh‘ команда ниже.
mongosh
Войдя в MongoDB, выполните приведенный ниже запрос, чтобы отключить телеметрию MongoDB.
disableTelemetry()
Теперь переключитесь на базу данных ‘admin‘ и выполните приведенный ниже запрос, чтобы установить пользователя-администратора для MongoDB. В этом примере вы создадите нового пользователя ‘myAliceAdmin‘ в качестве администратора для MongoDB. Также введите свой пароль, когда появится запрос.
use admin db.createUser( { user: "myAliceAdmin", pwd: passwordPrompt(), roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
Если новый пользователь создан, вы увидите вывод ‘{ ok: 1 }‘.
Тип ‘выйти из игры()‘ для выхода из сервера MongoDB.
Далее откройте файл ‘/etc/mongod.conf‘ с помощью опции ‘nano‘ редактор.
sudo nano /etc/mongod.conf
Снимите комментарий с ‘безопасность‘ и добавьте опцию ‘авторизация: включена‘, чтобы включить аутентификацию по паролю в MongoDB.
security: authorization: enabled
Сохраните файл и выйдите из редактора.
Теперь запустите программу ‘systemctl‘ команда ниже, чтобы перезапустить ‘mongod‘ и примените изменения. После этого сервер MongoDB должен работать с включенной аутентификацией.
sudo systemctl restart mongod
Далее запустите ‘mongosh‘ команда ниже, чтобы войти в MongoDB.
mongosh
Переключитесь на базу данных ‘admin‘ и аутентификация в качестве пользователя ‘myAliceAdmin‘ со следующими запросами. Введите свой пароль, когда вас спросят.
use admin db.auth("myAliceAdmin", passwordPrompt())
Если аутентификация прошла успешно, вы получите вывод ‘{ ok: 1 }‘.
Кроме того, вы можете войти в базу данных ‘admin‘ используя пользователя ‘myAliceAdmin‘ через ‘mongosh‘ команда ниже.
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myAliceAdmin" -p
Создание пользователя в MongoDB
В этом разделе вы создадите новую базу данных и пользователя в MongoDB с помощью команды ‘mongosh‘ Клиент MongoDB.
Чтобы создать новую базу данных и пользователя в MongoDB, выполните следующие запросы. В этом примере вы создадите новую базу данных ‘mydb‘, и новый пользователь ‘myUser‘. Введите пароль при появлении запроса.
use mydb db.createUser( { user: "myUser", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "mydb" }, { role: "read", db: "reporting" } ] } )
Если новая база данных и пользователь созданы, вы получите сообщение ‘{ ok: 1 }‘, а затем введите ‘quit()‘ для выхода.
Затем войдите на сервер MongoDB, используя ‘mongosh‘ команду ниже. Введите пароль для ‘myUser‘ при появлении запроса.
mongosh --port 27017 --authenticationDatabase \ "mydb" -u "myUser" -p
В случае успеха вы получите приглашение оболочки MongoDB.
Заключение
Поздравляем! Вы завершили установку MongoDB на сервер Alma Linux 9. Вы также обеспечили безопасность MongoDB, создав пользователя-администратора и включив аутентификацию по паролю. Наконец, вы узнали, как создать базу данных и пользователя в MongoDB, а также некоторые основные команды ‘mongosh’ для подключения к серверу MongoDB через командную строку.