Установка MongoDB
1. Установка из репозитория дистрибутива
В современных дистрибутивах утилита добавлена в официальный репозиторий современных версий Ubuntu. Для её установки достаточно выполнить:
Затем можно посмотреть состояние службы:
И добавить её в автозагрузку, если это необходимо:
Работать с базой данных можно через клиент командной строки Mongo. Например, давайте посмотрим версию базы данных:
Если вы собираетесь удалить MongoDB, то обратите внимание, что эта база данных может уже использоваться каким-либо приложением, поэтому сначала убедитесь, что, удалив её, вы ничего не сломаете
1. Установка из репозитория разработчиков
Если вы хотите получить самую свежую версию программы, то необходимо устанавливать её из репозитория разработчиков MongoDB. Прежде чем устанавливать эту версию, надо удалить версию из официальных репозиториев, если она была установлена:
Далее нужно интегрировать публичный ключ, чтобы система приняла пакет, для этого наберите в терминале:
С помощью следующей команды создаём список файлов пакета:
Обновим базу данных локальных пакетов:
И можно переходить к установке:
Далее надо запустить сервис mongod и добавить его в автозагрузку:
Далее смотрим версию:
Если что-то не работает, логи сервиса можно посмотреть в папке /var/log/mongodb, файлы баз данных — /var/lib/mongodb.
Примеры подключения из языков программирования
Рассмотрим небольшие примеры для подключения к MongoDB из языков программирования PHP и Python.
PHP
Для возможности работы PHP с Mongo необходимо установить соответствующее расширение. Выполняем пошагово следующие действия:
apt-get install php-pear php-dev
pecl channel-update pecl.php.net
pecl install mongodb
Для каждого возможного варианта использования PHP необходимо создать отдельный конфигурационной файл. В данном примере, под php 7.4 для cli, php-fpm, apache.
В системах на базе RPM (например, CentOS или Red Hat), нет разделения php на версии. Таким образом, нам нужно будет создать только один файл (как правило, в каталоге /etc/php.d).
а) CLI
vi /etc/php/7.4/cli/conf.d/20-mongodb.ini
extension=mongodb.so
б) PHP-FPM
vi /etc/php/7.4/fpm/conf.d/20-mongodb.ini
extension=mongodb.so
Для применения настройки в php7.4-fpm перезапускаем его:
systemctl restart php7.4-fpm
в) APACHE
vi /etc/php/7.4/apache/conf.d/20-mongodb.ini
extension=mongodb.so
Для применения настройки в apache перезапускаем его:
systemctl restart apache2
Проверяем, что в php появился новый модуль:
php -m | grep mongodb
Мы должны увидеть:
mongodb
Создаем каталог для нашего скрипта:
mkdir /scripts
Создаем сам скрипт:
vi /scripts/test_mongo.php
- <?php
- $options = true;
- $options = true;
- $connection = new MongoDB\Driver\Manager(«mongodb://root:test123@localhost», $options);
- $command = new MongoDB\Driver\Command();
- $cursor = $connection->executeCommand(‘admin’, $command);
- $result = $cursor->toArray();
- print_r($result);
- ?>
* в данном примере мы подключаемся к локальному серверу MongoDB, авторизовываемся под пользователем root с паролем test123. Также мы применяем шифрование для нашего подключения. В качестве примера мы выполняем запрос ping — для проверки подключения.
Запускаем скрипт на выполнение:
php /scripts/test_mongo.php
Мы должны получить такой вывод:
Array
(
=> stdClass Object
(
=> 1
)
)
Python
Устанавливаем дополнительный компонент pymongo:
pip3 install pymongo
Создаем каталог для размещения нашего скрипта:
mkdir /scripts
Создаем сам скрипт:
vi /scripts/test_mongo.py
- #!/usr/bin/env python3
- # -*- encoding: utf-8 -*-
- from pymongo import MongoClient
- connection = MongoClient(‘mongodb://root:test123@localhost:27017/?tls=true&tlsAllowInvalidCertificates=true’)
- result = connection.admin.command(‘ping’)
- print(result)
* в данном примере мы подключаемся к локальному серверу MongoDB, авторизовываемся под пользователем root с паролем test123. Также мы применяем шифрование для нашего подключения. В качестве примера мы выполняем запрос ping — для проверки подключения.
Разрешаем запуск нашего файла на выполнение:
chmod +x /scripts/test_mongo.py
Запускаем наш скрипт:
/scripts/test_mongo.py
Получаем такой вывод:
{‘ok’: 1.0}
Шаг 1 — Установка MongoDB
Официальные репозитории пакетов Ubuntu включают стабильную версию MongoDB. Однако на момент написания этого документа версия MongoDB, доступная в репозиториях Ubuntu по умолчанию, — это версия 3.6, в то время как последний стабильный выпуск — это версия 4.4.
Чтобы получить самую последнюю версию этого программного обеспечения, вам нужно добавить выделенный репозиторий пакетов MongoDB в ваши источники APT. Теперь вы сможете установить , метапакет, который всегда указывает на последнюю версию MongoDB.
Для начала импортируйте публичный ключ GPG для последней стабильной версии MongoDB. Вы можете найти соответствующий файл ключа на сервере ключей MongoDB. Вам нужно найти файл, который включает номер последней стабильной версии и заканчивается на . Например, если вы хотите установить MongoDB версии 4.4, необходимо искать файл с именем server-4.4.asc.
Нажмите правой кнопкой мыши на файл и выберите опцию Copy link address (Скопировать адрес ссылки). Затем вставьте эту ссылку в следующую команду , заменив выделенный URL:
cURL — это инструмент командной строки, который доступен во многих операционных системах и используется для передачи данных. Он читает все данные, хранящиеся в переданном URL, и выводит содержание в вывод системы. В следующем примере cURL выводит содержание файла ключа GPG, а затем вводит его в команду , добавляя ключ GPG в ваш список доверенных ключей.
Также обратите внимание, что команда использует опции , которые вместе указывают cURL не выполнять скрипт без каких-либо обязательств. Это означает, что, если по какой-либо причине cURL не может связаться с сервером GPG, либо сервер GPG не работает, он не добавит полученный код ошибки к вашему списку доверенных ключей случайно
Эта команда покажет вывод , если ключ добавлен успешно:
Если вы хотите еще раз убедиться, что ключ добавлен корректно, вы можете сделать это, выполнив следующую команду:
Эта команда возвращает ключ MongoDB в выводе:
На этом этапе ваша система APT все еще не знает, где искать пакет , который необходим для установки последней версии MongoDB.
На вашем сервере есть два места, где APT ищет онлайн-источники пакетов для загрузки и установки: файл и каталог . — это файл, который перечисляет активные источники данных APT (по одному источнику в строке, наиболее предпочтительные указываются первыми). Каталог позволяет добавлять такие записи в качестве отдельных файлов.
Запустите следующую команду, которая создает файл в каталоге под именем . В этом файле содержится только одна строка: :
Эта единственная строка указывает APT все, что необходимо знать об источнике, и где его найти:
- : означает, что источник ссылается на обычную архитектуру Debian. В других случаях эта часть строки может выглядеть как . Это означает, что источник представляет исходный код дистрибутива Debian.
- : указывает, в какие архитектуры загружать данные APT. В данном случае это архитектуры и .
- : это URI, представляющий местоположение данных APT. В данном случае URI указывает на адрес HTTPS, где находится официальный репозиторий MongoDB.
- : репозитории Ubuntu могут содержать несколько разных выпусков. Это означает, что вам нужна только версия пакета , доступная для выпуска Ubuntu («Focal Fossa» — это кодовое название Ubuntu 20.04).
- : эта часть указывает APT на один из четырех основных репозиториев Ubuntu. В данном случае — на .
После запуска этой команды обновите локальный индекс пакетов вашего сервера, чтобы APT знал, где найти пакет :
После этого вы можете установить MongoDB:
При появлении запроса нажмите , а затем , чтобы подтвердить, что вы хотите установить пакет.
После завершения выполнения команды MongoDB будет установлена на вашей системе. Однако она еще не готова к использованию. На следующем шаге мы запустим MongoDB и убедимся, что она работает корректно.
Доступ по сети
По умолчанию к установленной базе можно подключиться только с локального компьютера. Рассмотрим процесс настройки сетевого доступа.
Для начала, откроем порт в брандмауэре:
iptables -I INPUT -p tcp —dport 27017 -j ACCEPT
* по умолчанию, MongoDB работает на TCP-порту 27017.
В системах на базе Ubuntu и Debian брандмауэр работает по принципу разрешения. Если мы не меняли данной настройки, то нам не обязательно создавать разрешающее правило для Mongo.
Открываем конфигурационный файл СУБД:
vi /etc/mongod.conf
Находим директиву net и в ней опцию bindIp — добавляем IP-адрес, на котором наш сервер должен принимать запросы для MongoDB:
net:
port: 27017
bindIp: 127.0.0.1,192.168.1.15
* в нашем примере мы добавили к 127.0.0.1 адрес 192.168.1.15 — это сетевой адрес нашего сервера, на котором он должен принимать запросы.
Перезапускаем сервис mongod:
systemctl restart mongod
Чтобы проверить подключение, на другом компьютере должен быть установлен клиент для подключения к Mongo. Процесс его установки схож с установкой сервера. Рассмотрим пример для Ubuntu.
Устанавливаем ключ для репозитория:
wget -qO — https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add —
Добавляем репозиторий:
vi /etc/apt/sources.list.d/mongodb-org.list
deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
* как в случае с сервером, focal — название релиза Ubuntu. В данном примере, версия 20.04. Другие варианты: bionic: 18.04, xenial: 16.04.
Обновляем список пакетов:
apt-get update
Устанавливаем клиентскую часть:
apt-get install mongodb-org-shell
Теперь можно подключиться к нашему серверу:
mongo «mongodb://192.168.1.15:27017»
* в данном примере мы подключаемся к серверу MongoDB 192.168.1.15.
Также мы можем использовать MongoDB Compass — это приложение под Windows, Linux и macOS для работы с базой Mongo в графическом интерфейсе. Скачать его можно на странице официального сайта.
Вставка документа в коллекцию
Как обсуждалось выше, можно вставить практически любой JSON в каждую коллекцию MongoDB.
Давайте начнем со вставки первого документа JSON в коллекцию firstCollection, созданную выше.
Приведенная выше команда вставляет один документ JSON в firstCollection . То же самое можно проверить с помощью команды, показанной ниже:
Приведенная выше команда имеет многократное использование в зависимости от варианта функции. Если аргументы не указаны, как в случае с приведенной выше командой, она выбирает все доступные документы из коллекции.
Вы можете вставить еще одну запись и попробовать то же самое. При этом выходные данные вышеуказанной команды будут аналогичны показанным ниже:
Как видно, показаны две доступные записи. Функция может быть легко использована для фильтрации документов на основе определенных параметров. Давайте отфильтруем документ, используя атрибут name.
Процесс фильтрации прост, и это можно понять из команды ниже:
Фильтр также можно использовать с несколькими атрибутами в JSON. Хотя к запросу можно добавить любое количество параметров, ограничением этого подхода является то, что он соответствует только точному значению атрибутов.
Debian . О дистрибутивах Debian по чесноку
Debian . О дистрибутивах Debian по чесноку
MongoDB — это бесплатная база данных документов с открытым исходным кодом. Он принадлежит к семейству баз данных под названием NoSQL, который отличается от традиционных баз данных на основе таблиц SQL, таких как MySQL и PostgreSQL.
В MongoDB данные хранятся в гибких, JSON-подобных документах, где поля могут варьироваться от документа к документу. Это не требует предопределенной схемы, и структура данных может изменяться со временем.
В этом руководстве мы объясним, как установить и настроить последнюю версию MongoDB Community Edition для Debian 10 Buster.
Установка MongoDB
MongoDB недоступен в стандартных репозиториях Debian Buster. Мы включим официальный репозиторий MongoDB и установим пакеты.
На момент написания этой статьи последняя версия MongoDB — это версия 4.2. Перед началом установки перейдите на страницу Install on Debian документации MongoDB и проверьте, доступна ли новая версия.
Для установки MongoDB в системе Debian выполните следующие действия как пользователь root или пользователь с привилегиями sudo:
-
Установите пакеты, необходимые для добавления нового репозитория:
Добавьте ключ MongoDB GPG в вашу систему:
Включите репозиторий MongoDB:
Пакеты с более старыми версиями MongoDB недоступны для Debian 10.
Обновите список пакетов и установите :
Следующие пакеты будут установлены в системе как часть пакета :
mongodb-org-server — демон mongod и соответствующие сценарии инициализации и конфигурации. mongodb-org-mongos — демон mongos . mongodb-org-shell — mongodb-org-shell mongo — это интерактивный JavaScript-интерфейс для MongoDB. Он используется для выполнения административных задач через командную строку. mongodb-org-tools — содержит несколько инструментов MongoDB для импорта и экспорта данных, статистики, а также других утилит.
Запустите сервис MongoDB и включите его при загрузке:
Чтобы убедиться, что установка прошла успешно, подключитесь к серверу базы данных MongoDB с инструмента и распечатайте состояние подключения:
Вывод будет выглядеть так:
Значение для поля указывает на успех.
Настройка MongoDB
Файл конфигурации MongoDB называется и находится в каталоге Файл в формате YAML.
Настройки конфигурации по умолчанию являются достаточными для большинства пользователей. Однако для производственных сред рекомендуется раскомментировать раздел безопасности и включить авторизацию, как показано ниже:
/etc/mongod.conf
Опция включает управление доступом на основе ролей (RBAC), которое регулирует доступ пользователей к ресурсам и операциям базы данных. Если эта опция отключена, каждый пользователь может получить доступ ко всем базам данных и выполнить любое действие.
После редактирования файла конфигурации перезапустите службу mongod, чтобы изменения вступили в силу:
Для получения дополнительной информации о параметрах конфигурации, доступных в MongoDB 4.2, посетите страницу документации по параметрам файла конфигурации.
Создание административного пользователя MongoDB
Внутри оболочки MongoDB введите следующую команду для подключения к базе данных :
следующую команду, чтобы создать нового пользователя с именем с ролью :
Вы можете назвать административного пользователя MongoDB как хотите.
Выход из оболочки монго с помощью:
Чтобы проверить изменения, войдите в оболочку mongo, используя ранее созданного пользователя-администратора:
Введите пароль при появлении запроса. Как только вы окажетесь внутри оболочки MongoDB, подключитесь к базе данных :
Теперь распечатайте пользователей с:
Вывод
Мы показали вам, как установить MongoDB 4.2 на Debian 10, Buster. Посетите руководство MongoDB для получения дополнительной информации по этой теме.
база данных Debian Mongodb
В этом руководстве мы покажем вам, как установить и настроить MongoDB Community Edition на сервере CentOS 7 из официальных репозиториев MongoDB.
В этом руководстве мы покажем вам, как установить и настроить последнюю версию MongoDB Community Edition в системах Debian 9 из официальных репозиториев MongoDB.
VirtualBox — это кроссплатформенная программа виртуализации с открытым исходным кодом, которая позволяет одновременно запускать несколько гостевых операционных систем. В этом руководстве объясняется, как установить последнюю версию VirtualBox на Debian 10, Buster.
2: Установка MongoDB
Теперь можно установить MongoDB:
Примечание: Используемые в данном руководстве пакеты не соответствуют стандартам подписи Ubuntu 16.04, потому при установке используется дополнительный флаг –allow-unauthenticated.
Эта команда установит несколько пакетов, среди которых – последняя доступная версия MongoDB и полезные инструменты управления для сервера MongoDB.
Чтобы запустить MongoDB как сервис в Ubuntu 16.04, нужно создать дополнительный unit-файл. Такой файл сообщает системе инициализации systemd, как управлять тем или иным ресурсом. Сервисы – наиболее распространённый тип unit-файлов, определяющий зависимости и параметры запуска и остановки программы.
Создайте такой файл для MongoDB. Файл будет называться
Вставьте в файл следующий код:
Структура этого файла проста:
- Раздел Unit содержит обзор (удобочитаемое описание сервиса) и зависимости MongoDB. В данном случае MongoDB зависит от network.target.
- Раздел Service определяет, как запускать данный сервис. Директива User задаёт пользователя, при помощи которого будет запущен сервис (в данном случае это mongodb), а ExecStart определяет команды, при помощи которых запускается сервер MongoDB.
- Последний раздел, Install, указывает, когда система systemd должна автоматически запустить сервис; multi-user.target – стандартная последовательность запуска (сервис запустится вместе с сервером).
Чтобы запустить новый сервис, введите:
Данная команда не вернёт никакого вывода. Чтобы убедиться, что сервис запущен, введите:
Теперь нужно включить автозапуск данного сервиса.
Теперь сервис MongoDB запущен и настроен. Управлять сервисом можно при помощи команд systemctl:
Шаг 4 — Настройка брандмауэра (необязательно)
Если вы следовали указаниям обучающего модуля по начальной настройке сервера и включили на сервере брандмауэр, сервер MongoDB будет недоступен из интернета.
Если вы намереваетесь использовать сервер MongoDB только локально с запуском приложений на том же сервере, эту безопасную настройку рекомендуется сохранить. Однако если вы хотите иметь возможность подключения к серверу MongoDB из интернета, необходимо разрешить входящие подключения в .
Чтобы разрешить доступ к MongoDB через порт по умолчанию из любой точки, можно использовать команду . Однако включение доступа к серверу MongoDB через интернет с параметрами по умолчанию даст кому угодно доступ к серверу базы данных и его содержимому.
В большинстве случаев доступ к MongoDB следует разрешать только из определенных доверенных мест, таких как другой сервер хостинга приложения. Для этого нужно разрешить доступ к порту MongoDB по умолчанию, но указать IP-адрес другого сервера, которому будет дано явное разрешение на подключение:
Вы можете проверить изменение параметров брандмауэра с помощью :
В результатах вывода должно быть видно, что трафик на порт разрешен:
Output
Если вы решили разрешить подключение к серверу MongoDB только для одного IP-адреса, этот адрес должен быть указан в выводимом списке вместо «Anywhere».
Дополнительные настройки брандмауэра для ограничения доступа к службам можно найти в разделе Основы UFW: распространенные правила и команды брандмауэра.
Хотя порт открыт, MongoDB прослушивает только локальный адрес . Чтобы разрешить удаленные подключения, добавьте публичный маршрутизируемый IP-адрес вашего сервера в файл .
Откройте файл конфигурации MongoDB в редакторе:
Добавьте IP-адрес вашего сервера в значение :
Обязательно поставьте запятую между уже записанным IP-адресом и добавленным.
Сохраните файл, закройте редактор и перезапустите MongoDB:
Теперь MongoDB прослушивает удаленные соединения, но доступ к нему открыт для всех. Следуйте указаниям части 2 руководства , чтобы добавить административного пользователя и дополнительные ограничения.
Шаг 3 — Управление службой MongoDB
MongoDB устанавливается как служба systemd, т. е. вы можете управлять ей с помощью стандартных команд наряду со всеми другими системными службами в Ubuntu.
Чтобы проверить состояние службы, введите:
Вы можете остановить сервер в любое время, введя следующую команду:
Чтобы запустить остановленный сервер, введите:
Также вы можете перезапустить сервер с помощью одной команды:
По умолчанию MongoDB настроена для автоматического запуска вместе с сервером. Если вы хотите отключить автоматический запуск, введите:
Точно так же легко снова включить его. Для этого нужно использовать следующую команду:
Теперь изменим настройки параметров брандмауэра для нашей системы MongoDB.
1: Установка MongoDB
Официальный репозиторий пакетов Ubuntu включает стабильную версию MongoDB. Однако на момент написания этого мануала в репозиториях Ubuntu по умолчанию была доступна версия 3.6, а последняя стабильная версия MongoDB – 4.4.
Чтобы получить самую последнюю стабильную версию, вы должны добавить специальный репозиторий пакетов MongoDB в список источников APT. Затем вы сможете установить mongodb-org, мета-пакет, который всегда содержит последнюю версию MongoDB.
Для начала импортируйте открытый ключ GPG для последней стабильной версии MongoDB. Вы можете найти соответствующий файл на сервере ключей MongoDB; на нем нужно найти файл, который содержит номер последней стабильной версии и заканчивается на .asc. Например, если вы хотите установить версию 4.4, вы должны искать файл с именем server-4.4.asc.
Кликните на файл правой кнопкой мыши и выберите Copy link address. Затем вставьте эту ссылку в следующую команду curl, заменив указанный в примере URL:
cURL – это инструмент командной строки для передачи данных, доступный во многих операционных системах. Он считывает все данные, хранящиеся по указанному URL, и передает их на вывод системы. В нашем примере cURL выводит содержимое файла GPG и затем передает его команде sudo apt-key add -, тем самым добавляя ключ GPG в список доверенных ключей.
Также обратите внимание, что наша команда curl использует параметры -fsSL, которые подавляют сообщения об ошибках. Это означает, что если по какой-то причине cURL не может связаться с сервером GPG (или сервер GPG не работает), cURL не сможет случайно добавить полученный код ошибки в ваш список доверенных ключей
Эта команда вернет OK, если ключ был добавлен успешно:
Если вы хотите убедиться, что в список был добавлен правильный ключ, вы можете сделать это с помощью следующей команды:
В выводе должен быть ключ MongoDB:
На данный момент менеджер apt еще не знает, где найти пакет mongodb-org, необходимый для установки последней версии MongoDB.
На вашем сервере есть два места, где APT ищет онлайн-источники пакетов для загрузки и установки: это файл sources.list и каталог sources.list.d. В файле sources.list перечислены активные источники данных APT (по одному источнику в каждой строке), а наиболее приоритетные источники указаны первыми. Каталог sources.list.d позволяет добавлять такие записи sources.list как отдельные файлы.
Выполните следующую команду, чтобы создать в каталоге sources.list.d файл mongodb-org-4.4.list. В этом файле будет храниться всего одна строка (deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse).
Эта строка сообщит APT все, что ему нужно знать, чтобы найти и установить MongoDB.
- deb: это означает, что исходная запись ссылается на обычную архитектуру Debian. В других случаях в этой части строки может быть deb-src, что означает, что исходная запись представляет собой исходный код дистрибутива Debian.
- указывает, на какие архитектуры следует загружать данные APT. В данном случае это архитектуры amd64 и arm64.
- https://repo.mongodb.org/apt/ubuntu: это URI, представляющий место, где можно найти данные APT. В этом случае URI указывает на адрес HTTPS, где расположен официальный репозиторий MongoDB.
- focal/mongodb-org/4.4: репозитории Ubuntu могут содержать несколько разных релизов. Эта часть команды указывает, что вам нужна только версия 4.4 пакета mongodb-org, доступная для основного релиза Ubuntu (Focal Fossa – кодовое имя Ubuntu 20.04).
- multiverse: эта часть указывает APT на один из четырех основных репозиториев Ubuntu (в данном случае – на ).
После этого обновите индекс пакетов сервера:
Затем установите пакет MongoDB.
Чтобы подтвердить установку, нажмите Y и ENTER.
База данных MongoDB установлена на сервер. Теперь вам нужно проверить, работает ли она.
Шаг 3 — Настройка файрвола (Опционально)
Если вы следовали инструкциям в нашей статье о первичной настройке сервера и настроили файрвол на вашем сервере, сервер MongoDB будет не доступен из Интернета.
Если вы планируете использовать сервер MongoDB только локально с приложениями, запущенными на этом же сервере, то это самая безопасная и рекомендуемая настройка. Если же вы хотите иметь доступ к вашему серверу MongoDB через Интернет, то вам необходимо настроить входящие соединения в .
Для разрешения доступа к MongoDB на порту по умолчанию откуда угодно, вы можете использовать команду . Тем не менее, разрешение удалённого доступа через Интернет к серверу MongoDB с настройками по умолчанию даёт полный доступ к серверу баз данных.
Чаще всего доступ к MongoDB должен осуществляться только из определённых приложений, находящихся на других заранее известных серверах. Для этого мы можем разрешить доступ к порту по умолчанию MongoDB с указанием IP адресов серверов, которым разрешено соединяться с MongoDB.
Вы можете проверить настройки файрвола следующей командой.
В выводе вы должны видеть, что трафик разрешён для порта . Если вы решили разрешить трафик только с определённых IP адресов, эти IP адреса будут указаны вместо слова Anywhere.
Описание более продвинутых настроек файрвола можно найти в статье Настройка UFW: распространённые правила и команды файрвола.