Powered By GitBook
Установка MongoDB на Ubuntu
MongoDB - бесплатная, открытая NoSQL база данных, стремительно набирающая популярность в современных веб-приложениях.
В этой статье рассмотрим установку MongoDB на сервер под управлением Ubuntu 18.04.

Установка MongoDB

Официальный репозиторий пакетов Ubuntu уже включает свежую версию MongoDB, поэтому нам даже не придётся устанавливать сторонние репозитории.
В первую очередь обновите список пакетов Apt:
1
apt update
Copied!
Теперь установите пакет MongoDB:
1
apt-get -y install mongodb
Copied!
Эта команда установит последнюю версию MongoDB и все необходимые для её работы пакеты.

Настройка сервиса

Проверьте, запущен ли сервис MongoDB с помощью команды:
1
systemctl status mongodb
Copied!
Вы должны увидеть примерно следующий вывод:
1
mongodb.service - An object/document-oriented database
2
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
3
Active: active (running) since Sat 2018-05-26 07:48:04 UTC; 2min 17s ago
4
Docs: man:mongod(1)
5
Main PID: 2312 (mongod)
6
Tasks: 23 (limit: 1153)
7
CGroup: /system.slice/mongodb.service
8
??2312 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
Copied!
Согласно этому выводу, сервер MongoDB запущен и работает.
Теперь можно проверить работу сервера MongoDB путём запроса к нему. Выполните команду:
1
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
Copied!
В результате Вы должны видеть текущую версию сервера, его адрес и порт для подключения:
1
MongoDB shell version v3.6.3
2
connecting to: mongodb://127.0.0.1:27017
3
MongoDB server version: 3.6.3
4
{
5
"authInfo" : {
6
"authenticatedUsers" : [ ],
7
"authenticatedUserRoles" : [ ]
8
},
9
"ok" : 1
10
}
Copied!
Значение 1 в поле ok обозначает, что сервер работает и корректно обработал Ваш запрос.

Управление сервисом MongoDB

MongoDB устанавливается как сервис systemd, что даёт возможность управлять им с помощью стандартной утилиты systemctl.
Для просмотра статуса работы сервера MongoDB используйте:
1
systemctl status mongodb
Copied!
Для остановки сервера MongoDB:
1
systemctl stop mongodb
Copied!
Для запуска сервера MongoDB:
1
systemctl start mongodb
Copied!
И, соответственно, для перезапуска:
1
systemctl restart mongodb
Copied!
По уолчанию MongoDB запускается автоматически при запуске системы. Если Вам это не нужно, то Вы можете легко отключить автозапуск с помощью команды:
1
systemctl disable mongodb
Copied!
И, аналогично, если после захочется включить его автозапуск, используйте команду:
1
systemctl enable mongodb
Copied!

Настройка firewall

Предположим, что Вы хотите чтобы сервер MongoDB был доступен из Интернета и к нему могли подключаться внешние приложения, запущенные на других серверах. Хоть это и не рекомендуется делать, но в некоторых случаях это необходимо.
Это можно сделать путём соответствующей настройки firewall ufw. Нужно разрешить доступ к порту MongoDB, которым по умолчанию является порт 27017.
Для того, чтобы разрешить внешний доступ, выполните команду:
1
ufw allow 27017
Copied!
Чтобы обезопасить MongoDB и Ваши данные, лучше всего разрешить доступ только с конкретных IP-адресов или подсетей IP-адресов, это можно сделать следующей командой:
1
ufw allow from <IP-адрес>/32 to any port 27017
Copied!
Теперь, когда порт открыт, нужно внести изменения в настройки MongoDB, чтобы сервер работал не только на локальном IP-адресе 127.0.0.1, но и на внешнем IP-адресе сервера.
Для этого откройте файл /etc/mongodb.conf через Ваш любимый редактор (nano, mcedit, vi):
1
nano /etc/mongodb.conf
Copied!
Далее добавить внешний IP-адрес Вашего сервера в значение параметра bind_ip. Должно получиться так:
/etc/mongodb.conf
1
bind_ip = 127.0.0.1,<IP-адрес>
Copied!
Сохраните изменения и перезапустите сервер MongoDB:
1
systemctl restart mongodb
Copied!
Если всё сделано верно, то MongoDB будет доступен и извне.
Обратите внимание на то, что по умолчанию MongoDB вместе со всеми данными внутри баз данных будет доступен для любого желающего. Крайне рекомендуется защитить данные.

Настройка защищённого доступа к MongoDB

Чтобы доступ к MongoDB был возможен только для тех, кто владеет паролем, нужно создать административного пользователя и назначить ему пароль.
Для начала войдите в командную строку MongoDB:
1
mongodb
Copied!
Далее введите:
1
use admin
Copied!
Теперь мы можем создать пользователя и назначить ему доступ ко всем базам данных сервера MongoDB:
1
db.createUser(
2
{
3
user: "<ЛОГИН>",
4
pwd: "<ПАРОЛЬ>",
5
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
6
}
7
)
Copied!
Если создание пользователя пройдёт успешно, Вы увидите на экране надпись: Successfully added user.
Теперь нужно настроить аутентификацию через этого пользователя. Для этого откройте для редактирования файл /etc/mongodb.conf через Ваш любимый редактор (nano, mcedit, vi):
1
nano /etc/mongodb.conf
Copied!
Найдите в нём секцию #security и удалите # (хэш) перед security, чтобы включить аутентификацию.
Должно получиться примерно следующее:
/etc/mongodb.conf
1
security:
2
authorization: "enabled"
Copied!
Теперь перезапустите сервер MongoDB:
1
systectl restart mongodb
Copied!
Для того, чтобы подключиться к MongoDB с данными только что созданного пользователя, используйте команду:
1
mongo -u <ЛОГИН> -p --authenticationDatabase admin
Copied!
Last modified 1yr ago