We hope you find this tutorial helpful. In addition to guides like this one, we provide simple cloud infrastructure for developers. Learn more →

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

PostedMarch 31, 2017 64.3k views MongoDB Ubuntu Ubuntu 16.04

Введение

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

На момент публикации данной статьи пакеты MongoDB из официальных репозиториев Ubuntu 16.04 ещё не были обновлены для использования новой системы инициализации systemd, которая включена по умолчанию в Ubuntu 16.04. Использование 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)

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

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

  • 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
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

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

[Install]
WantedBy=multi-user.target

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

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

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

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

Далее запустим только что созданный нами сервис с помощью systemctl.

  • 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)

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

Заключение

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

2 Comments

Creative Commons License