*Автор выбрал Creative Commons Corporation для получения пожертвования $100 в рамках программы Write for DOnations.*

Введение

MongoDB — бесплатная база данных документов NoSQL с открытым исходным кодом, часто используемая в современных веб-приложениях.

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

Предварительные требования

mongodb illustration for: Предварительные требования

Для данного обучающего модуля вам потребуется следующее:

Шаг 1 — Установка MongoDB

Официальные хранилища пакетов Ubuntu включают актуальную версию MongoDB, и это означает, что мы можем установить необходимые пакеты с помощью apt.

Вначале необходимо обновить список пакетов, чтобы получить последнюю версию списка хранилища:

				
					
sudo apt update

				
			

Затем мы установим сам пакет MongoDB:

				
					
sudo apt install -y mongodb

				
			

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

Затем нужно убедиться, что сервер запущен и работает корректно.

Шаг 2 — Проверка службы и базы данных

Запуск MongoDB был автоматически выполнен в процессе установки, но теперь нужно убедиться, что служба запущена и база данных работает.

Вначала проверим состояние службы:

				
					
sudo systemctl status mongodb

				
			

Вы увидите следующий результат:

				
					
[secondary_label Output]

● <^>mongodb.service<^> - An object/document-oriented database

   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)

   Active: <^>active (running)<^> since Sat 2018-05-26 07:48:04 UTC; 2min 17s ago

     Docs: man:mongod(1)

 Main PID: 2312 (mongod)

    Tasks: 23 (limit: 1153)

   CGroup: /system.slice/mongodb.service

           └─2312 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf

				
			

Согласно systemd, сервер MongoDB запущен и работает.

Мы можем дополнительно подтвердить это, выполнив фактическое подключение к серверу базы данных и запустив диагностическую команду

Запустите следующую команду:

				
					
mongo --eval 'db.runCommand({ connectionStatus: 1 })'

				
			

Команда выведет текущую версию базы данных, адрес и порт сервера, а также результаты выполнения команды status:

				
					
[secondary_label Output]

MongoDB shell version v3.6.3

connecting to: <^>mongodb://127.0.0.1:27017<^>

MongoDB server version: <^>3.6.3<^>

{

        "authInfo" : {

                "authenticatedUsers" : [ ],

                "authenticatedUserRoles" : [ ]

        },

        <^>"ok" : 1<^>

}

				
			

Значение 1 поля ok в ответе означает, что сервер работает нормально.

Теперь мы рассмотрим, как управлять экземпляром сервера.

Шаг 3 — Управление службой MongoDB

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

Чтобы проверить состояние службы, введите:

				
					
sudo systemctl status mongodb

				
			

Вы можете остановить сервер в любое время, введя следующую команду:

				
					
sudo systemctl stop mongodb

				
			

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

				
					
sudo systemctl start mongodb

				
			

Также вы можете перезапустить сервер с помощью одной команды:

				
					
sudo systemctl restart mongodb

				
			

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

				
					
sudo systemctl disable mongodb

				
			

Точно так же легко снова включить его. Для этого нужно использовать следующую команду:

				
					
sudo systemctl enable mongodb

				
			

Теперь изменим настройки параметров брандмауэра для нашей системы MongoDB.

Шаг 4 — Настройка брандмауэра (необязательно)

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

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

Чтобы разрешить доступ к MongoDB через порт по умолчанию 27017 из любой точки, можно использовать команду sudo ufw allow <^>27017<^>. Однако включение доступа к серверу MongoDB через интернет с параметрами по умолчанию даст кому угодно доступ к серверу базы данных и его содержимому.

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

				
					
sudo ufw allow from &lt;^&gt;your_other_server_ip&lt;^&gt;/32 to any port &lt;^&gt;27017&lt;^&gt;  

				
			

Вы можете проверить изменение параметров брандмауэра с помощью ufw:

				
					
sudo ufw status

				
			

В результатах вывода должно быть видно, что трафик на порт 27017 разрешен:

				
					
[label Output]

Status: active



To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere

&lt;^&gt;27017                      ALLOW       Anywhere&lt;^&gt;

OpenSSH (v6)               ALLOW       Anywhere (v6)

&lt;^&gt;27017 (v6)                 ALLOW       Anywhere (v6)&lt;^&gt;

				
			

Если вы решили разрешить подключение к серверу MongoDB только для одного IP-адреса, этот адрес должен быть указан в выводимом списке вместо *«Anywhere»*.

Дополнительные настройки брандмауэра для ограничения доступа к службам можно найти в разделе Основы UFW: распространенные правила и команды брандмауэра.

Хотя порт открыт, MongoDB прослушивает только локальный адрес 127.0.0.1. Чтобы разрешить удаленные подключения, добавьте публичный маршрутизируемый IP-адрес вашего сервера в файл mongod.conf.

Откройте файл конфигурации MongoDB в редакторе:

				
					
sudo nano /etc/mongodb.conf

				
			

Добавьте IP-адрес вашего сервера в значение bindIP:

				
					
[label ]

...

logappend=true



bind_ip = 127.0.0.1&lt;^&gt;,your_server_ip&lt;^&gt;

#port = 27017



...

				
			

Обязательно поставьте запятую между уже записанным IP-адресом и добавленным.

Сохраните файл, закройте редактор и перезапустите MongoDB:

				
					
sudo systemctl restart mongodb

				
			

Теперь MongoDB прослушивает удаленные соединения, но доступ к нему открыт для всех. Следуйте указаниям части 2 руководства «Установка и защита MongoDB в Ubuntu 16.04», чтобы добавить административного пользователя и дополнительные ограничения.

Заключение

Более подробные обучающие модули по настройке и использованию MongoDB можно найти в следующих статьях сообщества the cloud provider. Официальная документация по MongoDB также содержит много информации о возможностях, предоставляемых MongoDB.