Manager, Developer Education
Предыдущая версия данного руководства была написана Мелиссой Андерсон.
MongoDB (или Mongo) — это документоориентированная база данных с открытым исходным кодом, используемая во многих современных веб-приложениях. Она относится к базам данных типа NoSQL, поскольку не опирается на традиционную табличную структуру реляционных баз данных.
Вместо этого она хранит документы типа JSON с помощью динамических схем, т. е., в отличие от реляционных баз данных, MongoDB не требует наличия предопределенной схемы перед добавлением данных в базу. Вы можете менять схему в любое время и так часто, как вам нужно, без необходимости настройки новой базы данных с обновленной схемой.
В этом руководстве мы установим MongoDB на сервере Ubuntu 20.04, протестируем ее и узнаем, как управлять ею как службой systemd
.
Для данного обучающего модуля вам потребуется следующее:
Официальные репозитории пакетов Ubuntu включают стабильную версию MongoDB. Однако на момент написания этого документа версия MongoDB, доступная в репозиториях Ubuntu по умолчанию, — это версия 3.6, в то время как последний стабильный выпуск — это версия 4.4.
Чтобы получить самую последнюю версию этого программного обеспечения, вам нужно добавить выделенный репозиторий пакетов MongoDB в ваши источники APT. Теперь вы сможете установить mongodb-org
, метапакет, который всегда указывает на последнюю версию MongoDB.
Для начала импортируйте публичный ключ GPG для последней стабильной версии MongoDB. Вы можете найти соответствующий файл ключа на сервере ключей MongoDB. Вам нужно найти файл, который включает номер последней стабильной версии и заканчивается на .asc
. Например, если вы хотите установить MongoDB версии 4.4, необходимо искать файл с именем server-4.4.asc.
Нажмите правой кнопкой мыши на файл и выберите опцию Copy link address (Скопировать адрес ссылки). Затем вставьте эту ссылку в следующую команду curl
, заменив выделенный URL:
- curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
cURL — это инструмент командной строки, который доступен во многих операционных системах и используется для передачи данных. Он читает все данные, хранящиеся в переданном URL, и выводит содержание в вывод системы. В следующем примере cURL выводит содержание файла ключа GPG, а затем вводит его в команду sudo apt-key add -
, добавляя ключ GPG в ваш список доверенных ключей.
Также обратите внимание, что команда curl
использует опции -fsSL
, которые вместе указывают cURL не выполнять скрипт без каких-либо обязательств. Это означает, что, если по какой-либо причине cURL не может связаться с сервером GPG, либо сервер GPG не работает, он не добавит полученный код ошибки к вашему списку доверенных ключей случайно.
Эта команда покажет вывод OK
, если ключ добавлен успешно:
OutputOK
Если вы хотите еще раз убедиться, что ключ добавлен корректно, вы можете сделать это, выполнив следующую команду:
- apt-key list
Эта команда возвращает ключ MongoDB в выводе:
Output/etc/apt/trusted.gpg
--------------------
pub rsa4096 2019-05-28 [SC] [expires: 2024-05-26]
2069 1EEC 3521 6C63 CAF6 6CE1 6564 08E3 90CF B1F5
uid [ unknown] MongoDB 4.4 Release Signing Key <packaging@mongodb.com>
. . .
На этом этапе ваша система APT все еще не знает, где искать пакет mongodb-org
, который необходим для установки последней версии MongoDB.
На вашем сервере есть два места, где APT ищет онлайн-источники пакетов для загрузки и установки: файл sources.list
и каталог sources.list.d
. sources.list
— это файл, который перечисляет активные источники данных APT (по одному источнику в строке, наиболее предпочтительные указываются первыми). Каталог sources.list.d
позволяет добавлять такие записи sources.list
в качестве отдельных файлов.
Запустите следующую команду, которая создает файл в каталоге sources.list.d
под именем mongodb-org-4.4.list
. В этом файле содержится только одна строка: deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
:
- echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Эта единственная строка указывает APT все, что необходимо знать об источнике, и где его найти:
deb
: означает, что источник ссылается на обычную архитектуру Debian. В других случаях эта часть строки может выглядеть как deb-src
. Это означает, что источник представляет исходный код дистрибутива Debian.[ arch=amd64,arm64 ]
: указывает, в какие архитектуры загружать данные APT. В данном случае это архитектуры amd64
и arm64
.https://repo.mongodb.org/apt/ubuntu
: это URI, представляющий местоположение данных APT. В данном случае URI указывает на адрес HTTPS, где находится официальный репозиторий MongoDB.focal/mongodb-org/4.4
: репозитории Ubuntu могут содержать несколько разных выпусков. Это означает, что вам нужна только версия 4.4
пакета mongodb-org
, доступная для выпуска Ubuntu focal
(«Focal Fossa» — это кодовое название Ubuntu 20.04).multiverse
: эта часть указывает APT на один из четырех основных репозиториев Ubuntu. В данном случае — на репозиторий multiverse
.После запуска этой команды обновите локальный индекс пакетов вашего сервера, чтобы APT знал, где найти пакет mongodb-org
:
- sudo apt update
После этого вы можете установить MongoDB:
- sudo apt install mongodb-org
При появлении запроса нажмите Y
, а затем ENTER
, чтобы подтвердить, что вы хотите установить пакет.
После завершения выполнения команды MongoDB будет установлена на вашей системе. Однако она еще не готова к использованию. На следующем шаге мы запустим MongoDB и убедимся, что она работает корректно.
Процесс установки, описанный на предыдущем шаге, автоматически настраивает MongoDB для запуска в качестве демона с помощью systemd
, а это означает, что вы можете управлять MongoDB, используя различные команды systemctl
. Но данная процедура установки не запускает службу автоматически.
Выполните следующую команду systemctl
, чтобы запустить службу MongoDB:
- sudo systemctl start mongod.service
Затем проверьте статус службы. Обратите внимание, что эта команда не включает .service
в определение служебного файла. systemctl
будет автоматически добавлять этот суффикс для любого аргумента, который вы передаете, если он еще не присутствует, поэтому нет необходимости включать его:
- sudo systemctl status mongod
Эта команда возвращает вывод, аналогичный следующему, указывая на то, что служба запущена и работает:
Output● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago
Docs: https://docs.mongodb.org/manual
Main PID: 37128 (mongod)
Memory: 64.8M
CGroup: /system.slice/mongod.service
└─37128 /usr/bin/mongod --config /etc/mongod.conf
После подтверждения того, что служба работает нормально, установите активацию службы MongoDB при загрузке:
- sudo systemctl enable mongod
Теперь вы можете убедиться, что база данных работает, подключившись к серверу базы данных и выполнив диагностическую команду. Следующая команда подключает к базе данных и выводит текущую версию, адрес сервера и порт. Также она выводит результат внутренней команды MongoDB connectionStatus
:
- mongo --eval 'db.runCommand({ connectionStatus: 1 })'
connectionStatus
проверяет и возвращает статус подключения базы данных. Значение 1
поля ok
в ответе означает, что сервер работает нормально:
OutputMongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") }
MongoDB server version: 4.4.0
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
Также обратите внимание, что база данных работает на порту 27017
на 127.0.0.1
, локальном циклическом адресе, представляющем локальный хост localhost. Это номер порта MongoDB по умолчанию.
На следующем шаге мы рассмотрим, как управлять экземпляром сервера MongoDB с помощью systemd
.
Как уже упоминалось ранее, процесс установки, описанный в шаге 1, настраивает MongoDB для работы в качестве службы systemd
. Это означает, что вы можете управлять ею, используя стандартные команды systemctl
, используемые для работы с другими службами системы Ubuntu.
Как уже упоминалось ранее, команда systemctl status
проверяет статус службы MongoDB:
- sudo systemctl status mongod
Вы можете остановить работу службы в любое время с помощью следующей команды:
- sudo systemctl stop mongod
Чтобы запустить службу после остановки, введите команду:
- sudo systemctl start mongod
Также вы можете перезапустить сервер, когда он уже работает:
- sudo systemctl restart mongod
На шаге 2 вы установили активацию MongoDB автоматически при загрузке сервера. Если вы хотите отключить автоматический запуск, введите:
- sudo systemctl disable mongod
Для повторной установки активации при загрузке запустите команду enable
снова:
- sudo systemctl enable mongod
Дополнительную информацию о том, как управлять службами systemd
, можно найти в статье Основы работы с Systemd: работа со службами, блоками и журналом.
В ходе выполнения этого обучающего руководства вы добавили официальный репозиторий MongoDB в ваш экземпляр APT и установили последнюю версию MongoDB. Затем вы протестировали функциональность Mongo и попробовали использовать некоторые команды systemctl
.
В качестве непосредственного следующего шага мы настоятельно рекомендуем вам усилить защиту системы MongoDB с помощью нашего руководства Обеспечение безопасности MongoDB в Ubuntu 20.04. После того как вы обеспечили безопасность системы, вы можете настраивать MongoDB для удаленного подключения.
Больше обучающих модулей по настройке и использованию MongoDB можно найти в этих статьях сообщества DigitalOcean. Также мы рекомендуем вам ознакомиться с официальной документацией MongoDB, так как это большой ресурс, описывающий все возможности MongoDB.
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!