Для корректной работы системы требуется MongoDB версии 3.6 – 6.0. В статье описана установка MongoDB 6.0 для ОС Ubuntu Linux 22.04. Вы также можете ознакомиться с кратким руководством в официальной документации MongoDB.
начало внимание
В рамках статьи используется имя базы elma365, пользователь elma365 и пароль SecretPassword.
При настройке задайте эти данные согласно политике безопасности, принятой в вашей организации.
конец внимание
Установка состоит из шести этапов:
- Установка MongoDB.
- Настройка MongoDB.
- Настройка подключения к MongoDB.
- Инициализация реплики.
- Безопасность MongoDB.
- Подключение к MongoDB.
Шаг 1: Установка MongoDB
Для установки MongoDB добавьте официальный репозиторий:
sudo apt-get install gnupg
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
Далее установите MongoDB:
sudo apt install mongodb-org
Запустите MongoDB:
sudo systemctl enable --now mongod
Шаг 2: Настройка MongoDB
Начало внимание
Для пароля разрешается применять следующие символы:
- Заглавные латинские буквы: от A до Z;
- Строчные латинские буквы: от a до z;
- Цифры от 0 до 9;
- Символы: -_.
Зарезервированные (недопустимые) символы:
! * ' ( ) ; : @ & = + $ , / ? % # [ ]
Конец внимание
- Зайдите в mongosh (Command Line Interface) и создайте базу данных:
mongosh
- Используйте базу ELMA365. Если база отсутствует, её необходимо создать:
use elma365
- Создайте отдельного пользователя elma365 для работы с БД с паролем SecretPassword. Имя пользователя и пароль приведены для примера:
db.createUser({user:'elma365', pwd:'SecretPassword', roles:[{role:"readWrite", db:"elma365"},{"role":"root", "db":"admin"}]})
- Убедитесь, что пользователь создан:
show users
- Для включения аутентификации создайте суперпользователя:
use admin
db.createUser({user:'superuser', pwd:'SecretPassword', roles: ["root"]})
- Убедитесь, что пользователь создан:
show users
- Завершите настройку:
exit
Шаг 3: Настройка подключения к MongoDB
Внесите изменения в файл конфигурации /etc/mongod.conf
:
sudo nano /etc/mongod.conf
Настройте значения переменных:
bindIp
— список адресов, с которых можно принимать соединения по порту 27017 (в данном случае это делает доступным сервис MongoDB со всех внешних адресов);replSetName
— название реплики, по умолчанию "rs0".
. . .
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
. . .
replication:
replSetName: "rs0"
enableMajorityReadConcern: true
. . .
Настройка включения TLS/SSL в MongoDB
Для включения поддержки TLS/SSL в MongoDB необходимо:
net: Подробнее о настройке TLS/SSL в MongoDB читайте в официальной документации MongoDB. |
Перезапустите MongoDB, чтобы изменение вступило в силу:
sudo systemctl restart mongod
Шаг 4: Инициализация реплики
- Откройте консоль mongosh для конфигурирования.
Для подключения к MongoDB:
sudo mongosh
Для подключения к MongoDB с включённым TLS/SSL:
sudo mongosh --tls --host mongodb-server1.your_domain --tlsCAFile /etc/ssl/CA.pem
- Инициализируйте реплику:
rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "<mongodb-server-address>" }]})
- Проверьте конфигурацию:
rs.conf()
Шаг 5: Безопасность MongoDB
- Создайте файл с общим ключом аутентификации, укажите права для файла:
openssl rand -base64 756 > /var/lib/mongodb/keyfile
chmod 400 /var/lib/mongodb/keyfile
chown mongodb:mongodb /var/lib/mongodb/keyfile
- Включите безопасный доступ к серверу MongoDB, если он находится в открытой зоне.
Для настройки необходимо отредактировать файл /etc/mongod.conf
на каждом из серверов. Строки должны выглядеть следующим образом:
. . .
setParameter:
enableLocalhostAuthBypass: false
security:
authorization: "enabled"
keyFile: /var/lib/mongodb/keyfile
. . .
- Перезапустите MongoDB:
sudo systemctl restart mongod
- Откройте консоль mongosh, используя пользователя для доступа к MongoDB.
Для подключения к MongoDB:
sudo mongosh -u superuser
Для подключения к MongoDB с включённым TLS/SSL:
sudo mongosh -u superuser --tls --host mongodb-server.your_domain --tlsCAFile /etc/ssl/CA.pem
- Проверьте конфигурацию:
rs.status()
Шаг 6: Подключение к MongoDB
Строка для подключения к MongoDB:
mongodb://elma365:SecretPassword@<mongodb-server-address>:27017/elma365?ssl=false&replicaSet=rs0&readPreference=nearest
Строка для подключения к MongoDB c TLS/SSL:
mongodb://elma365:SecretPassword@mongodb-server.your_domain:27017/elma365?ssl=true&replicaSet=rs0&readPreference=nearest