Установка MongoDB в Ubuntu. Установка MongoDB на Microsoft Windows Установка Mongo на Mac OS X

Jun 25 2013

Решил познакомиться с базами данных типа NoSQL. Для знакомства решил выбрать MongoDB, т.к. выбрал именно эту СУБД потому что часто встречал её в статьях на различных блогах. Если что то решил, лучше не откладывать на долго, что собственно я и сделал. Любое знакомство с ПО начинается с его установки, о чём будет написано ниже. Устанавливать будем как службу Windows.
1. Для начало необходимо скачать дистрибутив с официального сайта: http://www.mongodb.org/downloads

2. После того как архив скачался, распаковываем его в директорию, к примеру g:\webservwe\mongodb (в этой директории должна располагаться директория bin)

3. Для файлов БД создаём директорию data (g:\webservwe\mongodb\data)

4. В директории g:\webservwe\mongodb создаём файл mongod.cfg со следующим содержанием:

Logpath=g:\webserver\mongodb\log\mongo.log dbpath=G:\webserver\mongodb\data

5. В командной строке, запущенной от имени администратора выполняем следующую команду:

G:\webserver\mongodb\bin\mongod.exe –config G:\webserver\mongodb\mongod.cfg –install

6. И наконец проверка работы:

Запускаем клиент mongo.exe и прописываем следующие команды:

Db.test.save({ a: 1 }) db.test.find()

На экране должно отобразиться что то подобное:

{ "_id" : ObjectId("51c89ca80db214128714caca"), "a" : 1 }

MongoDB - это система управления базами данных, которая значительно отличается от MySQL. Основная разница заключается в том, что в MySQL запросы пишутся на языке SQL, а в MongoDB на BSON (бинарный JSON). Это значит, что работа с этой системой может осуществляться в основном через JavaScript выражения.

Также MongoDB включает в себя собственную утилиту для выполнения команд, направленных на работу с БД. В данном цикле статей, мы затронем следующие темы:

  • Установка и запуск MongoDB на Windows
  • Работа с MongoDB через консоль
  • Интеграция MongoDB и PHP

Разработчикам не составляет труда быстро освоить работу с Mongo, если они знакомы с JSON. Этот формат использует выражения, которые состоят из пар “ключ”: “значение”.

Почему MongoDB

Между не табличными СУБД многие пользователи делают выбор в пользу MongoDB. Во-первых, данную систему можно установить практически на всех операционных системах (Windows, OSX, Linux). Во-вторых, проект до сих пор активно развивается и с завидной частотой команда разработчиков публикует обновления. Также мне кажется, что MongoDB предоставляет хорошую документацию для начинающих.

MongoDB лучше подходит в тех случаях, когда таблицы можно представить в виде объектов. По-моему, подобные системы лучше использовать при разработке приложений для мобильный устройств. В этом плане, Mongo предоставляет отдельные библиотеки, как для iOS, так и для Adndroid-а.

Ещё один весомый аргумент в пользу MongoDB: работать с данной системой можно на многих языках программирования, таких как C/C++, Python, PHP, Rubym Perl, .NET и даже Node.js.

MongoDB - это реальное решение, если вы хотите отступить от SQL и попробовать что-то новенькое.

Ключевая терминология

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

Как и MySQL, MongoDB может содержать множество баз данных, только вместо таблиц они содержат “коллекции”.

Коллекция - это что-то типа таблицы, только без колонок. Вместо этого каждая строка содержит наборы записей в виде ключ:значение.

Пример:

Внутри коллекции Users (пользователи) может располагаться запись с ключами firstname (имя) и lastname (фамилия). В то же время, та же коллекция может содержать запись с другими ключами: firstname, lastname, e-mail, birth (день рождения). В этом-то и заключается гибкость MongoDB.

Каждая из этих записей, или строк, называется “документ”, но это не тот документ типа.txt или.html. Данная запись хранится в памяти в JSON формате.

Пример:

Предположим, в нашей коллекции содержится 500 документов. Как уже говорилось раньше, каждый из них может содержать разные поля. Единственное поле, которое должно быть у каждой записи, - это уникальный идентификатор (id), который добавляется автоматически.

Поначалу данная терминология может быть непривычной. Всё будет намного понятнее, когда вы увидите работу с СУБД на практике.

Установка MongoDB на Windows

Сперва качаем архив с MongoDB для win32 или win64 .

Распаковываем скачанный архив и помещаем его, к примеру, на диск C, в каталог mongodb. Причём, проследите за тем, чтобы каталог bin был доступен по адресу C:\mongodb\bin .

Далее прописываем путь к папке bin в настройках нашей ОС, для того чтобы к.exe файлам данной папки мы могли достучаться из любого места. Итак, делаем правый клик на Компьютер - Свойства. В списке слева, выбираем “Дополнительные параметры системы”:

В открывшемся окне ищем системную переменную Path. Кликаем по ней дважды. В поле “значение переменной” переходим в самый конец, ставим знак “;” и вписываем путь к каталогу bin:

Отлично! Жмём “ок”... и переходим к следующему шагу.

Для начала, нам необходимо создать каталог, где будут храниться наши БД. К примеру, C:\databases . Создаём эту папку.

Echo logpath=C:\mongodb\log\mongo.log > C:\mongodb\mongod.cfg

Данная команда создаст специальный лог файл и настройки конфигурации для сервиса.

Mongod --config C:\mongodb\mongod.cfg --install

Прежде чем запустить его, давайте отредактируем файл mongod.cfg , вписав туда настройку dbpath - путь к папке с нашими базами данных. В моём случае, после правки файла его содержание должно выглядеть примерно так:

Logpath=C:\mongodb\log\mongo.log dbpath=C:\databases

Возвращаемся к командной строке и запускаем сервис MongoDB:

Net start MongoDB

Для того чтобы проверить, будет ли сервис запускаться автоматически, нажимаем сочетание клавиш “windows+r”, пишем “services.msc”, нажимаем ОК.

В списке сервисов ищем MongoDB и, если его тип запуска не автоматический, то выставляем данный пункт, предварительно сделав правый клик, и выбрав, “свойства”.

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

Для проверки работы MongoDB открываем командную строку и пишем:

В ответе вы должны увидеть вот такую вот строку:

Итог

Итак, MongoDB установлена и сконфигурирована. В следующей части мы рассмотрим основные команды для работы с данной СУБД.

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

На момент публикации данной статьи пакеты MongoDB из официальных репозиториев Ubuntu 16.04 ещё не были обновлены для использования новой системы инициализации systemd , . Использование MongoDB, установленного с помощью этих пакетов, на новом сервере с Ubuntu 16.04 требует дополнительного для настройки MongoDB как сервиса systemd для автоматического запуска при старте сервера.

Перед установкой

Для того, чтобы следовать инструкциям, описанным в этой статье, вам необходим сервер с Ubuntu 16.04, настроенный согласно инструкциям в нашей , включая настройку не-рутового (non-root) пользователя.

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

MongoDB доступен из стандартных репозиториев Ubuntu, однако, для установки самых последних версий рекомендуется использовать официальный репозиторий MongoDB. На этом шаге мы добавим этот репозиторий на наш сервер.

Ubuntu проверяет подлинность пакетов путём проверки подписей GPG ключей, поэтому сначала нам необходимо импортировать ключ официального репозитория MongoDB.

  • sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

После успешного импорта ключа вы увидите следующий вывод:

Gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)

Для этого выполните следующую команду:

  • echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

После добавления репозитория нам необходимо обновить список пакетов.

  • sudo apt-get update

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

Теперь мы можем установить пакеты MongoDB.

  • sudo apt-get install -y mongodb-org

Эта команда установит несколько пакетов, содержащих последнюю стабильную версию MongoDB, а также некоторые средства настройки сервера MongoDB.

Для того, чтобы запускать MongoDB в виде сервиса Ubuntu 16.04, нам необходимо создать юнит-файл описывающий этот сервис. Юнит-файлы сообщают systemd , как управлять соответствующими ресурсами. Наиболее часто встречающимся типом юнит-файла является сервис , который указывает, как запускать и останавливать тот или иной сервис. Также этот файл указывает, надо ли запускать соответствующий сервис при старте системы, а также, имеет ли сервис зависимости от другого программного обеспечения.

Мы создадим юнит-файл для управления сервисом MongoDB. Создайте файл конфигурации mongodb.service в директории /etc/systemd/system с помощью nano или любого другого текстового редактора.

  • sudo nano /etc/systemd/system/mongodb.service

Вставьте следующий текст в этот файл, сохраните и закройте его.

/etc/systemd/system/mongodb.service

Description=High-performance, schema-free document-oriented database After=network.target User=mongodb ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf WantedBy=multi-user.target

Этот файл имеет простую структуру:

    Секция Unit описание сервиса MongoDB, а также его зависимостей, которые должны быть удовлетворены до запуска сервиса. В нашем случае MongoDB требует наличия сетевого подключения для запуска, поэтому мы указали директиву network.target .

    Секция Service описывает параметры запуска сервиса. Директива User указывает, что сервис будет запущен от имени пользователя mongodb , а директива ExecStart задаёт команду запуска сервера MongoDB.

    Последняя секция Install сообщает systemd , когда необходимо автоматически запускать сервис. Параметр multi-user.target задаёт стандартную последовательность запуска, что означает, что сервер будет автоматически запущен в процессе загрузки.

  • sudo systemctl start mongodb

Эта команда не выводит ничего в консоль после завершения. Мы можем использовать systemctl для проверки успешного запуска сервиса.

  • sudo systemctl status mongodb
● mongodb.service - High-performance, schema-free document-oriented database Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2016-04-25 14:57:20 EDT; 1min 30s ago Main PID: 4093 (mongod) Tasks: 16 (limit: 512) Memory: 47.1M CPU: 1.224s CGroup: /system.slice/mongodb.service └─4093 /usr/bin/mongod --quiet --config /etc/mongod.conf

Последнее, что нам осталось сделать, это включить автоматический запуск MongoDB при старте системы.

  • sudo systemctl enable mongodb

Теперь сервер MongoDB настроен и запущен, и вы можете управлять им с помощью команды systemctl (например, sudo systemctl mongodb stop , sudo systemctl mongodb start).

Шаг 3 - Настройка файрвола (Опционально)

Если вы следовали инструкциям в нашей и настроили файрвол на вашем сервере, сервер MongoDB будет не доступен из Интернета.

Если вы планируете использовать сервер MongoDB только локально с приложениями, запущенными на этом же сервере, то это самая безопасная и рекомендуемая настройка. Если же вы хотите иметь доступ к вашему серверу MongoDB через Интернет, то вам необходимо настроить входящие соединения в ufw .

Для разрешения доступа к MongoDB на порту по умолчанию 27017 откуда угодно, вы можете использовать команду sudo ufw allow 27017 . Тем не менее, разрешение удалённого доступа через Интернет к серверу MongoDB с настройками по умолчанию даёт полный доступ к серверу баз данных.

Чаще всего доступ к MongoDB должен осуществляться только из определённых приложений, находящихся на других заранее известных серверах. Для этого мы можем разрешить доступ к порту по умолчанию MongoDB с указанием IP адресов серверов, которым разрешено соединяться с MongoDB.

  • sudo ufw allow from your_other_server_ip /32 to any port 27017

Вы можете проверить настройки файрвола ufw следующей командой.

  • sudo ufw status

В выводе вы должны видеть, что трафик разрешён для порта 27017 . Если вы решили разрешить трафик только с определённых IP адресов, эти IP адреса будут указаны вместо слова Anywhere .

Status: active To Action From -- ------ ---- 27017 ALLOW Anywhere OpenSSH ALLOW Anywhere 27017 (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

Описание более продвинутых настроек файрвола можно найти в статье .

Заключение

Вы можете ознакомиться с более детальными инструкциями по установке и настройке MongoDB в .