Для настройки MongoDB на сервере Linux необходимо установить официальный репозиторий MongoDB, установить mongod, запустить и включить службу, задать bindIp и security.authorization в файле mongod.conf, создать пользователя-администратора через mongosh, открыть правила брандмауэра и включить TLS. Наконец, настройте ограничения Linux и объем хранилища для повышения производительности WiredTiger, а также настройте резервное копирование и мониторинг.
В этом пошаговом руководстве вы узнаете, как правильно настроить MongoDB на сервере Linux для работы в производственной среде в 2026 году. Мы рассмотрим установку на системах Ubuntu/Debian и RHEL, безопасную конфигурацию, оптимизацию производительности, репликационные наборы, резервное копирование, мониторинг и распространенные способы устранения неполадок. Инструкции понятны новичкам, но основаны на реальном опыте эксплуатации.
Поисковые намерения и чему вы научитесь
Данное руководство предназначено для пользователей, ищущих информацию о том, «как настроить MongoDB в Linux-сервер,Включая администраторов, развертывающих новые экземпляры, разработчиков, переходящих в производственную среду, и команды, повышающие безопасность существующих установок. Вы получите практические команды, проверенные значения по умолчанию и контекст для принятия обоснованных решений при работе с дистрибутивами на базе Ubuntu, Debian и RHEL.
Предпосылки и системные требования
- Linux-сервер (Ubuntu 22.04/24.04, Debian 12, RHEL/AlmaLinux/Rocky 8 или 9)
- 64-бит CPU2+ ядра (рекомендуется 4+), 4 ГБ RAM минимум (8–32 ГБ для производственной среды)
- Доступ root или sudo
- Открытые порты: 27017/TCP (MongoDB), 27018/27019 при шардинге или репликации
- Синхронизация времени (chrony или systemd-timesyncd) для предотвращения расхождения в аутентификации и репликации.
- Основной фокус на ключевых словах: Как настроить MongoDB на сервере Linux (плюс дополнительные функции: установка MongoDB, настройка MongoDB, усиление безопасности, оптимизация производительности)
Шаг 1: Добавьте официальный репозиторий MongoDB.
Ubuntu 22.04/24.04 (Jammy/Noble) и Debian 12 (Bookworm)
При необходимости замените кодовое имя на название вашего дистрибутива. В примере используется MongoDB 7.0 (широко распространенная стабильная версия). Всегда проверяйте наличие последних поддерживаемых версий в официальной документации.
# Ubuntu Jammy example (22.04). For Noble (24.04), replace 'jammy' with 'noble'
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt-get update# Debian 12 (Bookworm) example
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt-get updateRHEL 8/9, AlmaLinux, Rocky Linux
sudo tee /etc/yum.repos.d/mongodb-org-7.0.repo >/dev/null <<'EOF'
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc
EOF
sudo dnf clean allШаг 2: установить сервер MongoDB
# Ubuntu/Debian
sudo apt-get install -y mongodb-org
# RHEL/Alma/Rocky
sudo dnf install -y mongodb-orgЭто установит mongod, mongosh и связанные инструменты. Следите за тем, чтобы ваша операционная система и ветка MongoDB соответствовали вашей политике поддержки.
Шаг 3: Запустите и включите службу.
sudo systemctl enable --now mongod
sudo systemctl status mongod --no-pager
journalctl -u mongod -b --no-pager | tail -n 50Если mongod не запускается, проверьте права доступа к пути к данным, контекст SELinux или конфликты портов на порту 27017.
Шаг 4: Базовая конфигурация (mongod.conf)
В большинстве дистрибутивов конфигурационный файл находится по адресу /etc/mongod.conf. В нём задаются параметры привязки сети, пути к данным/журналам и включается авторизация. Всегда создавайте резервную копию этого файла перед редактированием.
Рекомендуемые производственные настройки по умолчанию
sudo cp /etc/mongod.conf /etc/mongod.conf.bak.$(date +%F)
sudo tee /etc/mongod.conf >/dev/null <<'EOF'
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
wiredTiger:
engineConfig:
# Set later based on RAM; omit to auto-calc
# cacheSizeGB: 8
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
net:
port: 27017
bindIp: 127.0.0.1,10.0.0.10 # replace 10.0.0.10 with your server's private IP
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: enabled
# replication:
# replSetName: rs0 # uncomment when configuring a replica set
# net:
# tls:
# mode: requireTLS
# certificateKeyFile: /etc/ssl/mongo/mongo.pem
EOF
sudo systemctl restart mongodПо умолчанию используется привязка к localhost и частному IP-адресу (в производственной среде никогда не используется 0.0.0.0). TLS и репликацию мы включим позже.
Шаг 5: Создание первого пользователя-администратора
При включенной авторизации создайте администратора. пользователь в базе данных администратораИспользуйте SCRAM— SHA-256 и надежный пароль.
mongosh --host 127.0.0.1 --port 27017
use admin
db.createUser({
user: "siteAdmin",
pwd: passwordPrompt(),
roles: [ { role: "root", db: "admin" } ]
})
exitПовторное подключение с использованием аутентификации:
mongosh --username siteAdmin --authenticationDatabase admin --host 127.0.0.1Шаг 6: Безопасное открытие портов брандмауэра.
Ubuntu/Debian (UFW)
# Allow only trusted subnets or peers (replace CIDR)
sudo ufw allow from 10.0.0.0/24 to any port 27017 proto tcp
sudo ufw reload
sudo ufw statusRHEL/Alma/Rocky (firewalld)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="27017" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --list-allНикогда не предоставляйте доступ к порту 27017 из общедоступного интернета. Используйте частные сети, VPN или группы безопасности.
Шаг 7: Включите TLS/SSL Шифрование
Шифруйте трафик при передаче. Используйте внутренний сертификат центра сертификации или сертификат Let's Encrypt. Вот простой пример самоподписанного сертификата для лабораторных работ; для производственной среды используйте сертификат, подписанный реальным центром сертификации.
sudo mkdir -p /etc/ssl/mongo
sudo openssl req -newkey rsa:4096 -x509 -days 825 -nodes \
-keyout /etc/ssl/mongo/mongo.key \
-out /etc/ssl/mongo/mongo.crt \
-subj "/CN=mongo.internal.example.com"
sudo sh -c 'cat /etc/ssl/mongo/mongo.key /etc/ssl/mongo/mongo.crt > /etc/ssl/mongo/mongo.pem'
sudo chmod 600 /etc/ssl/mongo/mongo.pem
sudo chown mongod:mongod /etc/ssl/mongo/mongo.pemsudo tee -a /etc/mongod.conf >/dev/null <<'EOF'
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongo/mongo.pem
EOF
sudo systemctl restart mongodПодключайтесь к TLS от клиентов, используя указав SSL параметры в драйверах или Mongosh (для самоподписанных сертификатов предоставьте файл центра сертификации или разрешайте использование недействительных сертификатов только в тестовых средах).
Шаг 8: Настройка производительности Linux и WiredTiger
Увеличить количество файловых дескрипторов и процессов.
sudo tee /etc/security/limits.d/mongodb.conf >/dev/null <<'EOF'
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
EOFПерезагрузите или убедитесь, что ограничения PAM применены к службе mongod. Подтвердите это с помощью команд lsof и cat /proc/$(pidof mongod)/limits.
Отключить прозрачные большие страницы (THP) и настроить переключение между страницами.
# THP often hurts latency-sensitive databases
sudo tee /etc/systemd/system/disable-thp.service >/dev/null <<'EOF'
[Unit]
Description=Disable Transparent Huge Pages (THP)
After=network.target
[Service]
Type=simple
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled; echo never > /sys/kernel/mm/transparent_hugepage/defrag'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now disable-thp
# Lower swappiness
echo 'vm.swappiness=1' | sudo tee /etc/sysctl.d/99-mongo.conf
sudo sysctl --systemКэш WiredTiger оптимального размера
По умолчанию кэш WiredTiger составляет лишь часть от RAMВ средах с ограниченными ресурсами памяти или при работе на общих узлах установите параметр cacheSizeGB в файле mongod.conf, чтобы избежать чрезмерной нагрузки на операционную систему. Пример: 50–60% от RAM на выделенных серверах баз данных.
Шаг 9: Настройка репликационного набора (обеспечение высокой доступности)
Репликационные наборы обеспечивают избыточность и отказоустойчивость. Перед запуском задайте имя и перезапустите систему.
# In /etc/mongod.conf
replication:
replSetName: rs0
sudo systemctl restart mongod# On the primary node
mongosh --username siteAdmin --authenticationDatabase admin
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo1.internal:27017" },
{ _id: 1, host: "mongo2.internal:27017" },
{ _id: 2, host: "mongo3.internal:27017", arbiterOnly: false }
]
})
rs.status()Убедитесь, что все участники могут разрешить конфликт и связаться друг с другом по порту 27017. Используйте приватный режим. DNS или записи в файле /etc/hosts и согласованные настройки TLS.
Шаг 10: Резервное копирование и восстановление на определенный момент времени
Для обеспечения безопасности сочетайте логические резервные копии со снимками файловой системы или облачными снимками. Для кластеров с высокой загрузкой рассмотрите возможность использования «горячего» резервного копирования или агентов резервного копирования.
# Logical backup
mongodump --authenticationDatabase admin -u siteAdmin -h 127.0.0.1 \
--archive=/backups/mongo-$(date +%F).archive --gzip
# Restore
mongorestore --archive=/backups/mongo-YYYY-MM-DD.archive --gzipДля моментальных снимков LVM или облачных томов, по возможности, приостанавливайте запись или используйте вторичные реплики для более безопасного создания моментальных снимков. Всегда проверяйте восстановление.
Шаг 11: Мониторинг, ведение журналов и техническое обслуживание
- Инструменты для работы в режиме реального времени: mongostat, mongotop
- Системные метрики: node exporter, CloudWatch или ваша система мониторинга.
- Экспортер MongoDB для Prometheus и панелей мониторинга Grafana.
- Ротация логов: используйте logAppend true; запускайте с помощью sudo kill -SIGUSR1 $(pidof mongod)
- Оповещения о задержке репликации, нехватке кэша, медленных запросах, операциях ввода-вывода на диске и событиях нехватки памяти.
SELinux и перемещение каталогов данных
Если вы измените dbPath на пользовательский путь монтирования (например, /data/mongo) в системах на базе RHEL с включенным SELinux, установите правильные контексты, иначе mongod не сможет читать/записывать данные.
# Example: moving data to /data/mongo
sudo systemctl stop mongod
sudo rsync -aHAX /var/lib/mongo/ /data/mongo/
sudo semanage fcontext -a -t mongod_var_lib_t "/data/mongo(/.*)?"
sudo restorecon -Rv /data/mongo
sudo sed -i 's|dbPath: .*|dbPath: /data/mongo|' /etc/mongod.conf
sudo systemctl start mongodБыстрые решения проблем при устранении неполадок
- Порт уже используется: sudo ss -lntp | grep 27017
- Отказано в доступе к пути к данным: проверьте права собственности (mongod:mongod) и контекст SELinux.
- Ошибки аутентификации: Подтвердите базу данных, пользователя и роль; проверьте keyfile/clusterAuthMode в репликах.
- Соединение отклонено с удаленного сервера: проверьте настройки bindIp, брандмауэра и TLS.
- Высокий CPU или память: Проверьте медленные запросы, добавьте индексы, настройте кэш WiredTiger и убедитесь, что THP отключен.
Когда целесообразно использовать управляемый хостинг
Если вы предпочитаете сосредоточиться на своем приложении, а не на флагах ядра и резервных копиях, рассмотрите следующие варианты: managed MongoDB на оптимизированных VPS или облачных экземплярах. YouStableМы предоставляем серверы с поддержкой NVMe, частные сети, проактивный мониторинг и, по желанию, серверы с поддержкой NVMe. manageСервисы баз данных d идеально подходят для команд, которым необходимы высокая производительность, безопасность и предсказуемые затраты без бремени эксплуатации.
Краткое описание: Ваш контрольный список для подготовки MongoDB к работе в производственной среде
- Установите из официального репозитория MongoDB.
- Запустите и включите mongod через systemd.
- Настройте bindIp, включите авторизацию и создайте пользователя-администратора.
- Защитите брандмауэр и включите протокол TLS.
- Ограничения на настройку, THP, количество операций обмена и кэш WiredTiger.
- Используйте репликационные наборы для обеспечения высокой доступности и проверенные резервные копии для аварийного восстановления.
- Отслеживайте состояние, пропускную способность и производительность запросов.
Часто задаваемые вопросы: Как настроить MongoDB на сервере Linux
Какой дистрибутив Linux лучше всего подходит для MongoDB в 2026 году?
Ubuntu LTS (22.04/24.04) и дистрибутивы, совместимые с RHEL (AlmaLinux/Rocky 8/9), являются лучшим выбором благодаря стабильности, долгосрочным обновлениям и первоклассной поддержке репозитория MongoDB. Выберите тот, который уже есть у вашей команды. manageа также для упрощения установки обновлений и автоматизации.
Как обеспечить безопасность MongoDB, если она должна быть доступна через интернет?
Сначала используйте VPN или бастион. Если избежать утечки данных невозможно, внедрите TLS (requireTLS), надежную аутентификацию, списки разрешенных адресов в брандмауэре, ограничение скорости запросов на обратном прокси-сервере и непрерывный мониторинг. Никогда не подключайтесь к IP-адресу 0.0.0.0 без строгого сетевого контроля и оповещений.
Какой порт использует MongoDB и могу ли я его изменить?
MongoDB по умолчанию прослушивает порт TCP 27017. Измените его в файле mongod.conf в разделе net.port, скорректируйте правила брандмауэра и обновите строки подключения клиента. Изменение порта добавляет скрытности, а не безопасности; в любом случае используйте TLS и надлежащую аутентификацию.
Сколько RAM Стоит ли выделять ресурсы для MongoDB?
Для начала, для производственной среды, потребуется как минимум 8 ГБ оперативной памяти. В идеале — RAM близко к вашему рабочему набору данных. Установите кэш WiredTiger на ~50–60% от вашего набора данных. RAM на выделенных серверах баз данных. Отслеживайте ошибки страниц, нагрузку на кэш и задержку запросов для безопасной итерации.
Как переместить каталог данных MongoDB на новый диск?
Остановите mongod, синхронизируйте данные с помощью rsync по новому пути, обновите storage.dbPath в mongod.conf, исправьте права доступа и контексты SELinux, затем запустите mongod. После перемещения проверьте данные, журналы и производительность. Для реплик сначала переместите вторичные серверы, чтобы сохранить доступность.
Выполнив эти шаги, вы теперь знаете, как настроить MongoDB на сервере Linux — от установки и безопасности до оптимизации и обеспечения высокой доступности. Если вам нужна надежная, высокопроизводительная система с экспертной поддержкой, YouStable может помочь вам правильно развернуть MongoDB.