Tutorial

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

Published on January 7, 2020
Default avatar

By Mateusz Papiernik

Software Engineer, CTO @Makimo

Русский
Установка MongoDB в Ubuntu 18.04

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

Введение

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

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

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

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

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

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

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

  1. sudo apt update

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

  1. sudo apt install -y mongodb

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

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

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

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

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

  1. sudo systemctl status mongodb

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

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 запущен и работает.

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

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

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

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

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.

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

  1. sudo systemctl status mongodb

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

  1. sudo systemctl stop mongodb

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

  1. sudo systemctl start mongodb

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

  1. sudo systemctl restart mongodb

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

  1. sudo systemctl disable mongodb

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

  1. sudo systemctl enable mongodb

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

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

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

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

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

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

  1. sudo ufw allow from your_other_server_ip/32 to any port 27017

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

  1. sudo ufw status

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

Output
Status: active

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

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

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

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

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

  1. sudo nano /etc/mongodb.conf

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

[label ]
...
logappend=true

bind_ip = 127.0.0.1,your_server_ip
#port = 27017

...

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

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

  1. sudo systemctl restart mongodb

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

Заключение

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar

Software Engineer, CTO @Makimo

Creating bespoke software ◦ CTO & co-founder at Makimo. I’m a software enginner & a geek. I like making impossible things possible. And I need tea.



Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel