Установка MongoDB в Ubuntu 16.04

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

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

Примечание: При обновлении пакета MongoDB до версии для 16.04, вероятно, придётся удалить unit-файл, созданный в данном руководстве (раздел 2), чтобы избежать конфликта пакетов. Больше проблем при обновлении не должно возникнуть. Однако, если вы не уверены и не хотите рисковать, рекомендуем подождать до выхода официального пакета для Ubuntu 16.04.

Требования

  • Настроенный сервер Ubuntu 16.04 (инструкции по начальной настройке сервера можно найти здесь).
  • Не-root пользователь с доступом к команде sudo.

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)

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

Чтобы создать list-файл для MongoDB, введите:

sudo echo "deb http://repo.mongodb.org/apt/ubuntu trusty/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 --allow-unauthenticated mongodb-org

Примечание: Используемые в данном руководстве пакеты не соответствуют стандартам подписи Ubuntu 16.04, потому при установке используется дополнительный флаг –allow-unauthenticated.

Эта команда установит несколько пакетов, среди которых – последняя доступная версия MongoDB и полезные инструменты управления для сервера MongoDB.

Чтобы запустить MongoDB как сервис в Ubuntu 16.04, нужно создать дополнительный unit-файл. Такой файл сообщает системе инициализации systemd, как управлять тем или иным ресурсом. Сервисы – наиболее распространённый тип unit-файлов, определяющий зависимости и параметры запуска и остановки программы.

Создайте такой файл для MongoDB. Файл будет называться

mongodb.service и храниться в /etc/systemd/system.
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/mongod.conf
[Install] WantedBy=multi-user.target

Структура этого файла проста:

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

Чтобы запустить новый сервис, введите:

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

Теперь нужно включить автозапуск данного сервиса.

sudo systemctl enable mongodb

Теперь сервис MongoDB запущен и настроен. Управлять сервисом можно при помощи команд systemctl:

sudo systemctl mongodb stop
sudo systemctl mongodb start

3: Настройка брандмауэра

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

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

Чтобы разрешить доступ к стандартному порту MongoDB, 27017, введите:

sudo ufw allow27017

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

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

sudo ufw allow from ip_удалённого_сервера/32 to any port 27017

Убедитесь, что настройки ufw изменились:

sudo ufw status

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

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

Примечание: Подробнее о работе с правилами брандмауэра – в этом руководстве.

Заключение

Теперь СУБД MongoDB установлена и настроена. Дополнительные инструкции по работе с MongoDB можно найти в нашем Информатории.

Tags: , ,

Добавить комментарий