Как установить MongoDB на Ubuntu 16.04

Обсудить

Введение

MongoDB – это бесплатная и документоориентированная СУБД с открытым исходным кодом, которая часто используется в современных веб-проектах. Из данного руководства вы узнаете, как установить MongoDB на свой сервер.

Требования

Для того, чтобы выполнить все шаги этого руководства, вам понадобится сервер с установленной ОС Ubuntu 16.04 и пользователем, который может выполнять команды sudo.

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

MongoDB входит в репозиторий Ubuntu 16.04, однако официальный репозиторий MongoDB, как правило, содержит более актуальную версию СУБД, а также рекомендации по установке данного ПО. Поэтому сначала вам необходимо добавить репозиторий на свой сервер.

Ubuntu проверяет подлинность загружаемого ПО через GPG ключи, поэтому первым делом необходимо импортировать ключи из официального репозитория MongoDB. Для этого введите следующую команду (актуальную команду можно найти на этой странице официального сайта):

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

После того, как ключ будет загружен, вы увидите следующее:

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

Далее вам нужно добавить данные о репозитории MongoDB для того, чтобы потом установить СУБД при помощи apt-get. Для этого введите:

$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

После этого необходимо обновить список пакетов:

$ sudo apt-get update

Шаг 2: установка и подтверждение MongoDB

Теперь вы можете установить сам пакет MongoDB. Введите следующую команду:

$ sudo apt-get install -y mongodb-org

После этого произойдет установка нескольких пакетов MongoDB, содержащих самую последнюю версию этой СУБД вместе с полезными инструментами для настройки сервера MongoDB.

Для того, чтобы СУБД MongoDB запускалась правильно (как один из сервисов Ubuntu 16.04), вам необходимо создать юнит-файл с описанием сервиса. Этот файл объяснит системе, как именно нужно использовать данное ПО. Самым распространенным типом юнит-файла является service, который определяет, например, когда запускать или останавливать работу программы, должна ли программа запускаться при старте системы и так далее.

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

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

В него вам нужно скопировать и сохранить следующий текст:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf

[Install]
WantedBy=multi-user.target

Расшифровка содержания этого файла следующая:

  • Первая часть под названием Unit содержит общее, понятное для пользователей описание сервиса MongoDB, а также зависимости – требования, которые должны быть удовлетворены до того, как сервис будет запущен. В данном случае речь идет о сетевом подключении, поэтому вы видите строку с целью network.target. Эта зависимость есть у всех служб, которые связаны с сетью.
  • Следующая часть – Service – определяет, как служба будет запущена. Строка User показывает, что сервер будет запущен от пользователя mongodb, а ExecStart определяет команду для запуска сервера MongoDB.
  • Последняя часть – Install – отвечает за время, когда сервис должен быть запущен. multi-user.target определяет, что служба начнет свою работу сразу после запуска системы.

Теперь запустите только что созданную службу командой systemctl (при помощи нее можно запускать созданный юнит):

$ sudo systemctl start mongodb 

Так как эта команда не предполагает какого-то вывода данных в консоли, введите другую команду для того, чтобы убедиться, что служба работает корректно:

$ 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-01-30 12:31:49 EDT; 2min 17s 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 stop mongodb – для остановки службы;
  • sudo systemctl start mongodb – для запуска службы.

Шаг 3: настройка Firewall

Если на вашем сервере включен Firewall, то MongoDB будет недоступна из Интернета.

Если вы собираетесь использовать MongoDB для местной сети, то подобную настройку можно назвать рекомендуемой. Однако если вам нужно подключить MongoDB к Интернету, то нужно внести соответствующие изменения в ufw (инструмент для настройки сетевой защиты Ubuntu).

Для того, чтобы СУБД стала доступна отовсюду, необходимо открыть порт 27017, который является портом по умолчанию для MongoDB. Для этого используйте команду:

$ sudo ufw allow 27017

Однако в таком случае получается ситуация, когда доступ к серверу с базой данных становится неограниченным. Поэтому необходимо внести еще одни изменения, которые сделают доступ возможным только из определенных дислокаций, например, с другого сервера. Для этого вам нужно написать его IP-адрес в команду ниже:

$ sudo ufw allow from IP-адрес_другого_сервера/32 to any port 27017

А для того, чтобы убедиться, что изменения вступили в силу, введите:

$ sudo ufw status

В итоге вы увидите примерно следующую таблицу:

Status: active

To           Action From
--           ------ ----
27017        ALLOW Anywhere
OpenSSH      ALLOW Anywhere
27017 (v6)   ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)

Но если вы уже ввели конкретный IP-адрес для доступа, то он будет отображен вместо “Anywhere”.

Заключение

Теперь у вас есть установленная и готовая к работе MongoDB.

VDS VPS

Комментарии