MongoDB представляет собой систему управления базами данных NoSQL с открытым исходным кодом, которая широко используется в современных приложениях. В этой статье мы опишем процесс установки MongoDB на ваш сервер для использования в production-среде.
На момент публикации данной статьи пакеты MongoDB из официальных репозиториев Ubuntu 16.04 ещё не были обновлены для использования новой системы инициализации systemd
, которая включена по умолчанию в Ubuntu 16.04. Использование MongoDB, установленного с помощью этих пакетов, на новом сервере с Ubuntu 16.04 требует дополнительного для настройки MongoDB как сервиса systemd
для автоматического запуска при старте сервера.
Для того, чтобы следовать инструкциям, описанным в этой статье, вам необходим сервер с Ubuntu 16.04, настроенный согласно инструкциям в нашей статье о первичной настройке сервера, включая настройку не-рутового (non-root) пользователя.
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)
Далее нам необходимо добавить настройки репозитория в apt
, чтобы иметь возможность загрузить MongoDB с помощью apt
.
Для этого выполните следующую команду:
- 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
Теперь мы можем установить пакеты MongoDB.
- sudo apt-get install -y mongodb-org
Эта команда установит несколько пакетов, содержащих последнюю стабильную версию MongoDB, а также некоторые средства настройки сервера MongoDB.
Для того, чтобы запускать MongoDB в виде сервиса Ubuntu 16.04, нам необходимо создать юнит-файл описывающий этот сервис. Юнит-файлы сообщают systemd
, как управлять соответствующими ресурсами. Наиболее часто встречающимся типом юнит-файла является сервис, который указывает, как запускать и останавливать тот или иной сервис. Также этот файл указывает, надо ли запускать соответствующий сервис при старте системы, а также, имеет ли сервис зависимости от другого программного обеспечения.
Мы создадим юнит-файл для управления сервисом MongoDB. Создайте файл конфигурации mongodb.service
в директории /etc/systemd/system
с помощью nano
или любого другого текстового редактора.
- sudo nano /etc/systemd/system/mongodb.service
Вставьте следующий текст в этот файл, сохраните и закройте его.
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
Этот файл имеет простую структуру:
Секция Unit описание сервиса MongoDB, а также его зависимостей, которые должны быть удовлетворены до запуска сервиса. В нашем случае MongoDB требует наличия сетевого подключения для запуска, поэтому мы указали директиву network.target
.
Секция Service описывает параметры запуска сервиса. Директива User
указывает, что сервис будет запущен от имени пользователя mongodb
, а директива ExecStart
задаёт команду запуска сервера MongoDB.
Последняя секция Install сообщает systemd
, когда необходимо автоматически запускать сервис. Параметр multi-user.target
задаёт стандартную последовательность запуска, что означает, что сервер будет автоматически запущен в процессе загрузки.
Далее запустим только что созданный нами сервис с помощью systemctl
.
- sudo systemctl start mongodb
Эта команда не выводит ничего в консоль после завершения. Мы можем использовать systemctl
для проверки успешного запуска сервиса.
- sudo systemctl status mongodb
Вывод● 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 mongodb
Теперь сервер MongoDB настроен и запущен, и вы можете управлять им с помощью команды systemctl
(например, sudo systemctl mongodb stop
, sudo systemctl mongodb start
).
Если вы следовали инструкциям в нашей статье о первичной настройке сервера и настроили файрвол на вашем сервере, сервер MongoDB будет не доступен из Интернета.
Если вы планируете использовать сервер MongoDB только локально с приложениями, запущенными на этом же сервере, то это самая безопасная и рекомендуемая настройка. Если же вы хотите иметь доступ к вашему серверу MongoDB через Интернет, то вам необходимо настроить входящие соединения в ufw
.
Для разрешения доступа к MongoDB на порту по умолчанию 27017
откуда угодно, вы можете использовать команду sudo ufw allow 27017
. Тем не менее, разрешение удалённого доступа через Интернет к серверу MongoDB с настройками по умолчанию даёт полный доступ к серверу баз данных.
Чаще всего доступ к MongoDB должен осуществляться только из определённых приложений, находящихся на других заранее известных серверах. Для этого мы можем разрешить доступ к порту по умолчанию MongoDB с указанием IP адресов серверов, которым разрешено соединяться с MongoDB.
- sudo ufw allow from your_other_server_ip/32 to any port 27017
Вы можете проверить настройки файрвола ufw
следующей командой.
- sudo ufw status
В выводе вы должны видеть, что трафик разрешён для порта 27017
. Если вы решили разрешить трафик только с определённых IP адресов, эти IP адреса будут указаны вместо слова Anywhere.
ВыводStatus: active
To Action From
-- ------ ----
27017 ALLOW Anywhere
OpenSSH ALLOW Anywhere
27017 (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Описание более продвинутых настроек файрвола можно найти в статье Настройка UFW: распространённые правила и команды файрвола.
Вы можете ознакомиться с более детальными инструкциями по установке и настройке MongoDB в этих статьях коммьюнити DigitalOcean.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Теперь сервер MongoDB настроен и запущен, и вы можете управлять им с помощью команды systemctl (например, sudo systemctl mongodb stop, sudo systemctl mongodb start). В скобках не верные команды. Верные - sudo systemctl stop mongodb, sudo systemctl start mongodb
Теперь сервер MongoDB настроен и запущен, и вы можете управлять им с помощью команды systemctl (например, sudo systemctl mongodb stop, sudo systemctl mongodb start).
должно быть вот так: (например,sudo systemctl stop mongodb, sudo systemctl start mongodb).