Вступление
MongoDB - это бесплатная база данных документов NoSQL с открытым исходным кодом, широко используемая в современных веб-приложениях. Этот учебник поможет вам настроить MongoDB на вашем сервере для среды производственных приложений.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Один сервер Ubuntu 16.04, настроенный в соответствии с этимinitial server setup tutorial, включая пользователя sudo без полномочий root и брандмауэр.
[[step-1 -—- add-the-mongodb-repository]] == Шаг 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
знал, откуда загружать пакеты.
Выполните следующую команду, чтобы создать файл списка для MongoDB.
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
После добавления сведений о репозитории нам необходимо обновить список пакетов.
sudo apt-get update
[[step-2 -—- install-and-verifying-mongodb]] == Шаг 2 - Установка и проверка MongoDB
Теперь мы можем установить сам пакет MongoDB.
sudo apt-get install -y mongodb-org
Эта команда установит несколько пакетов, содержащих последнюю стабильную версию MongoDB, а также полезные инструменты управления для сервера MongoDB.
Затем запустите MongoDB сsystemctl
.
sudo systemctl start mongod
Вы также можете использоватьsystemctl
, чтобы проверить правильность запуска службы.
sudo systemctl status mongod
Выход
● 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
Последний шаг - включить автоматический запуск MongoDB при запуске системы.
sudo systemctl enable mongod
Теперь сервер MongoDB настроен и работает, и вы можете управлять службой MongoDB с помощью командыsystemctl
(например, sudo systemctl stop mongod
,sudo systemctl start mongod
).
[[step-3 -—- adjusting-the-firewall-optional]] == Шаг 3 - Настройка брандмауэра (необязательно)
Предполагая, что вы выполнили инструкцииinitial server setup tutorial, чтобы включить брандмауэр на своем сервере, сервер MongoDB будет недоступен из Интернета.
Если вы планируете использовать сервер MongoDB только локально с приложениями, работающими на том же сервере, это рекомендуемый и безопасный параметр. Однако, если вы хотите иметь возможность подключаться к своему серверу MongoDB из Интернета, мы должны разрешить входящие подключения вufw
.
Чтобы разрешить доступ к MongoDB через порт по умолчанию27017
отовсюду, вы можете использоватьsudo ufw allow 27017
. Однако включение доступа в Интернет к серверу MongoDB при установке по умолчанию дает неограниченный доступ ко всему серверу базы данных.
в большинстве случаев доступ к MongoDB следует осуществлять только из определенных надежных расположений, например с другого сервера, на котором размещено приложение. Для выполнения этой задачи вы можете разрешить доступ к порту MongoDB по умолчанию, указав IP-адрес другого сервера, которому будет разрешено подключаться.
sudo ufw allow from your_other_server_ip/32 to any port 27017
Вы можете проверить изменение настроек брандмауэра с помощьюufw
.
sudo ufw status
Вы должны увидеть трафик на разрешенный порт27017
в выводе. Если вы решили разрешить только определенному IP-адресу для подключения к серверу MongoDB, IP-адрес разрешенного местоположения будет указан вместоAnywhere на выходе.
Выход
Status: active
To Action From
-- ------ ----
27017 ALLOW Anywhere
OpenSSH ALLOW Anywhere
27017 (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Дополнительные настройки брандмауэра для ограничения доступа к службам описаны вUFW Essentials: Common Firewall Rules and Commands.
Заключение
Вы можете найти более подробные инструкции по установке и настройке MongoDB вthese DigitalOcean community articles.