流浪汉 是一个开源软件,它提供了一个干净、易于配置、可重现和可移植的开发环境。 使用 Vagrant,我们可以轻松快速地构建和维护不同的虚拟软件开发环境。 在本指南中,我们将了解如何在 Linux 操作系统中使用 Vagrant 安装 mongoDB。
什么是MongoDB?
MongoDB 是一个 NoSQL 面向文档的数据库,用于处理大量数据。 MongoDB 使用集合和文档来存储数据。 文档是存储在集合中的一组键值对 (JSON)。
下面是一个示例文档 JSON
格式供您参考。
{ title: 'Install MongoDB-5 In Linux Using Vagrant', url: 'https://ostechnix.com/', Site: 'ostechnix', owner: 'sk', author: 'Karthick', tags: ['community Edition', 'Linux', 'NoSQL', 'MongoDB5'], mongo_version: 5 }
最新版本的 mongoDB 是 5. MongoDB 有两种变体——社区版和企业版。 在本文中,我们将在 Linux 中使用 Vagrant 安装 mongoDB 5 社区版。
先决条件
在继续下一步之前,请确保您已安装 Oracle VirtualBox 和 Vagrant 在你的 Linux 机器上。 甲骨文 VirtualBox 在流行的 Linux 发行版的官方存储库中可用,因此您可以使用发行版的默认包管理器安装它。
然后,按照以下链接中的说明在您的 Linux 系统上安装 Vagrant。
- 如何在 Linux 上安装 Vagrant
初始化 Vagrant 环境
出于本指南的目的,我将使用 Oracle Virtualbox 作为管理程序,它是 Vagrant 的默认提供程序。 我正在使用 Ubuntu 20.04 Vagrant box 在其中部署 mongoDB。
为 MongoB 创建一个新的项目目录。
$ mkdir mongodb_vagrant
切换到项目目录,运行以下命令初始化 vagrant 环境:
$ cd mongodb_vagrant
$ vagrant init -m "ubuntufocal64"
这将在项目目录中创建一个新的 Vagrantfile。 在您喜欢的编辑器中打开 Vagrantfile 并在其中复制/粘贴以下行:
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "ubuntu/focal64" config.vm.box_check_update = false config.vm.define "MongoDB5" config.vm.network "public_network" config.vm.provision "shell", path: "mongo-bootstrap.sh" config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 v.name = "MongoDB-5" end end
请允许我解释一下上面代码中的重要参数。
参数 vm.box
指向我们用来安装 MongoDB 的底层 Linux 发行版。 在我们的例子中,它是 Ubuntu 20.04 LTS。
config.vm.box = "ubuntu/focal64"
每次启动 VM 时,Vagrant 都会检查所使用的盒子是否有任何更新。 设置参数 box_check_update = false
将禁用更新检查。 这是可选的! 您更喜欢更新 Vagrant 框,您可以删除此行:
config.vm.box_check_update = false
每个流浪虚拟机都分配有 default
作为名字。 参数 vm.define
可用于为您的 VM 设置自定义名称。 在这种情况下,我已将名称设置为 MongoDB5
.
config.vm.define "MongoDB5"
你可以运行 global-status
检查分配给 VM 的名称的命令:
$ vagrant global-status --prune
id name provider state directory
--------------------------------------------------------------------------------------------
76c3e81 MongoDB5 virtualbox running /home/karthick/Work/Lab/vagrant/mongodb_vagrant
以下参数决定了如何为您的 VM 设置网络。
config.vm.network "public_network"
我已经设置 Public_network
. 我也没有提供接口名称,因为它可能会有所不同,并且在连接过程中会提示要连接的接口 vagrant up
如下面的日志输出所示。
==> MongoDB5: Available bridged network interfaces: 1) wlo1 2) eno1 3) docker0 ==> MongoDB5: When choosing an interface, it is usually the one that is ==> MongoDB5: being used to connect to the internet. ==> MongoDB5: MongoDB5: Which interface should the network bridge to? 1 ==> MongoDB5: Preparing network interfaces based on configuration... MongoDB5: Adapter 1: nat MongoDB5: Adapter 2: bridged ==> MongoDB5: Forwarding ports... MongoDB5: 22 (guest) => 2222 (host) (adapter 1)
我使用 shell 配置器来安装和设置 MongoDB。 脚本名称是 mongo-bootstrap.sh
. 您可以根据需要命名脚本。
config.vm.provision "shell", path: "mongo-bootstrap.sh"
以下参数将为您的虚拟机配置内存和 CPU。 我已将内存设置为 2演出 和 2 个 Vcore. 您可以通过修改 v.memory
和 v.cpus
参数。
config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 v.name = "MongoDB-5" end
分配给参数的名称 v.name
是您的 Virtualbox GUI 中将显示的内容。
创建引导 shell 脚本
如前所述,shell 配置器用于在 vagrant 框中安装和配置 mongoDB。
创建一个名为 mongo-bootstrap.sh
:
$ vi mongo-bootstrap.sh
并在其中添加以下代码:
#!/usr/bin/env bash # Adding Repo echo "-------------------------- ADDING REPO -------------------------------------" wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list # Updating Package Index and Installing MongoDB-5 echo "-------------------------- UPDATING PACKAGE INDEX -------------------------------------" sudo apt update echo "-------------------------- INSTALL PACKAGES --------------------------" sudo apt install -y mongodb-org net-tools # Start and Enable Mongod echo "-------------------------- START & ENABLE MONGOD --------------------------" sudo systemctl enable --now mongod sleep 20 # Create user echo "-------------------------- CREATE VAGRANT USER --------------------------" mongosh << BLK use admin db.createUser( { user: "vagrant", pwd: "vagrant", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] }) exit BLK ## Enable Authorization sudo cat << EOB >> /etc/mongod.conf #security: security: authorization: "enabled" EOB echo "-------------------------- RESTARTED MONGOD --------------------------" sudo systemctl restart mongod
按 ESC
并输入 :wq
保存文件并 close 它。
让我对上面代码中的每个部分进行简要说明。
默认情况下,Ubuntu 附带了一个旧版本的 mongoDB。 如果你想要 mongodDB 最新版本,你必须在 mongo-bootstrap.sh
文件。
以下代码部分将负责添加存储库、更新包索引、安装 mongoDB 并启动 mongod
守护进程。
以下代码块将创建一个流浪用户 admin 特权。 用户名将是 vagrant
并且密码也设置为 vagrant
. 如果您愿意,您可以设置不同的用户名和密码。

默认情况下,没有强制执行安全策略。 任何用户都可以调用 mongosh
shell 并开始使用数据库。 要强制执行基于角色的访问控制,应将以下参数添加到 /etc/mongod.conf
文件。
这段代码将负责添加参数并重新启动 mongod
使更改生效的守护程序。

小心: 在启用 RBAC(基于角色的访问控制)之前, admin 应该创建用户,以便他/她可以授予任何数据库中其他用户的访问权限。
启动 mongoDB Vagrant 机器
创建 Vagrant 文件和引导脚本后,您可以通过运行以下命令来启动 VM:
$ vagrant up
现在,等到机器启动并且 mongoDB 安装和配置部分由引导脚本处理。 这将需要几分钟。
要登录到 VM,请运行以下命令:
$ vagrant ssh
MongoDB 监听端口 27017
. 您可以使用 netstat
命令检查端口是否处于侦听状态。
$ sudo netstat -tlnup
样本输出:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 3306/mongod
运行以下命令检查状态 mongod
服务:
$ systemctl status mongod
样本输出:
● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-08-17 10:24:36 UTC; 2h 21min ago Docs: https://docs.mongodb.org/manual Main PID: 3306 (mongod) Memory: 162.3M CGroup: /system.slice/mongod.service └─3306 /usr/bin/mongod --config /etc/mongod.conf
访问 mongoDB 外壳
这 蒙哥壳 是一个连接mongoDB的cli客户端。 现在它被一个新的 cli 客户端取代 mongosh
从 mongoDB V5.
跑 mongosh
在终端中开始使用 shell。 由于启用了 RBAC,您必须提供凭据。
您可以使用连接到 MongoDB 数据库 monosh
使用以下连接字符串。
$ mongosh mongodb://<username>:<password>@localhost:<port>/<database>
在这里,我正在连接一个新创建的 vagrant 用户。
$ mongosh mongodb://vagrant:[email protected]:27017/admin
或者,您可以启动 shell 并运行以下命令进行连接:
$ monosh
$ use admin
$ db.auth("username","password")
$ db.auth("vagrant","vagrant")

从命令行管理 mongoDB vagrant box
以下 vagrant 命令将帮助您通过 CLI 管理 mongoDB VM:
$ vagrant --global-status --prune # check the status of the machine $ vagrant halt # Stop the VM $ vagrant destroy # Destroy the VM and associated VM disk. $ vagrant ssh # Login to Remote Host
有关更详细的 Vagrant 命令用法,请参阅我们的 Vagrant 教程:
- Vagrant 教程 – 在 Linux 中开始使用 Vagrant
结论
在这个分步指南中,我们已经了解了如何在 Ubuntu 20.04 Vagrant box 中轻松设置 mongoDB。 如果你正在测试一个 mongoDB 项目或学习 mongoDB,你可以快速启动一个 Vagrant 盒子并在 Vagrant 盒子中安装 mongodDB,如此处所述。