MongoDB – это свободная и открытая документная база данных NoSQL, которая используется преимущественно в современных веб-приложениях.
Данный мануал поможет вам установить MongoDB, а также научит управлять сервисом и по желанию настроить удаленный доступ.
Требования
Для работы вам понадобится сервер Ubuntu 18.04, настроенный по этому мануалу.
1: Установка MongoDB
Современную версию MongoDB можно установить из официального репозитория Ubuntu с помощью стандартного менеджера пакетов apt.
Для начала обновите индекс пакетов:
sudo apt update
Затем установите пакет MongoDB.
sudo apt install -y mongodb
Эта команда установит несколько пакетов, включая последнюю версию MongoDB и несколько вспомогательных пакетов для управления сервером MongoDB. База данных автоматически запускается сразу после установки.
2: Проверка сервиса и БД
Как правило, после установки БД запускается самостоятельно, однако лучше убедиться, что сервис запущен и БД работает.
Проверьте состояние сервиса:
sudo systemctl status mongodb
Команда должна вернуть такой вывод:
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 })'
Команда должна вывести текущую версию, адрес и порт сервера, а также вывод команды состояния:
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
}
Если в поле ok содержится значение 1, значит, сервер работает правильно.
Теперь давайте посмотрим, как управлять этим сервером.
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
4: Настройка брандмауэра (опционально)
Если вы настроили свой сервер по этому мануалу и включили брандмауэр, то сервер MongoDB не будет доступен в Интернете.
Если вы собираетесь использовать сервер MongoDB только локально для поддержки приложений, работающих в рамках одной машины, не меняйте настроек брандмауэра. Однако если вы хотите, чтобы у сервера MongoDB был выход в Интернет, вам нужно перенастроить ufw.
Чтобы открыть доступ к MongoDB по стандартному порту 27017, используйте команду sudo ufw allow 27017. Однако при этом у всех пользователей появится неограниченный доступ к БД и всем данным.
Как правило, доступ к MongoDB должен совершаться только из определенных доверенных локаций, например, с другого сервера или приложения. Для этого нужно открыть доступ к стандартному порту БД, указав IP-адреса доверенных машин.
sudo ufw allow from your_other_server_ip/32 to any port 27017
Убедитесь, что настройки брандмауэра изменились:
sudo ufw status
Трафик на порт 27017 должен быть открыт:
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:
sudo nano /etc/mongodb.conf
Добавьте IP-адрес сервера в строку bindIP:
...
logappend=true
bind_ip = 127.0.0.1,your_server_ip
#port = 27017
...
Между текущим значением и вашим IP-адресом нужно поставить запятую.
Сохраните и закройте файл. Перезапустите MongoDB:
sudo systemctl restart mongodb
Теперь MongoDB прослушивает удаленные соединения, но у посторонних пользователей нет доступа к данным.
Чтобы добавить администратора и повысить безопасность установки, читайте мануал Установка и защита MongoDB в Ubuntu 16.04.
Читайте также: Документация MongoDB