介绍
MongoDB是一个免费和开源的NoSQL文档数据库,通常用于现代Web应用程序。
在本教程中,您将安装MongoDB,管理其服务,并可选地启用远程访问。
前提条件
要遵循本教程,您需要一个 Debian 9 服务器通过遵循本 初始服务器设置教程来设置,包括一个有 sudo 功能的非 root 用户和一个防火墙。
步骤1:安装 MongoDB
Debian 9 的官方包存储库包括 MongoDB 的稍微过时版本,这意味着我们将从官方 MongoDB 复制品中安装。
首先,我们需要添加apt-key add
的MongoDB签名密钥,我们需要确保在这样做之前安装了curl
命令:
1sudo apt install curl
接下来我们下载密钥并将其传输到添加apt-key
:
1curl https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -
接下来我们将创建一个 MongoDB repo 的源列表,所以apt
知道从哪里下载,首先在文本编辑器中打开源列表文件:
1sudo nano /etc/apt/sources.list.d/mongodb-org-4.0.list
这将打开一个新的空格文件. 粘贴如下:
1[label /etc/apt/sources.list.d/mongodb-org-4.0.list]
2deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main
保存并关闭文件,然后更新您的包缓存:
1sudo apt update
安装mongodb-org
包来安装服务器和一些支持工具:
1sudo apt-get install mongodb-org
最后,启用并启动mongod
服务,让您的MongoDB数据库运行:
1sudo systemctl enable mongod
2sudo systemctl start mongod
我们已经安装并启动了MongoDB的最新稳定版本,以及MongoDB服务器的有用的管理工具。
接下来,让我们检查服务器是否运行并正常工作。
步骤 2:检查服务和数据库
我们在上一步启动了 MongoDB 服务,现在让我们验证它已经启动,并且数据库正在工作。
首先,检查服务的状态:
1sudo systemctl status mongod
你会看到这个输出:
1[secondary_label Output]
2● mongod.service - MongoDB Database Server
3 Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
4 Active: active (running) since Wed 2018-09-05 16:59:56 UTC; 3s ago
5 Docs: https://docs.mongodb.org/manual
6 Main PID: 4321 (mongod)
7 Tasks: 26
8 CGroup: /system.slice/mongod.service
9 └─4321 /usr/bin/mongod --config /etc/mongod.conf
根据systemd
,MongoDB服务器正在运行。
我们可以通过实际连接到数据库服务器并执行诊断命令来进一步验证这一点。
执行此命令:
1mongo --eval 'db.runCommand({ connectionStatus: 1 })'
这将输出当前数据库版本、服务器地址和端口以及状态命令的输出:
1[secondary_label Output]
2MongoDB shell version v4.0.2
3connecting to: mongodb://127.0.0.1:27017
4MongoDB server version: 4.0.2
5{
6 "authInfo" : {
7 "authenticatedUsers" : [ ],
8 "authenticatedUserRoles" : [ ]
9 },
10 "ok" : 1
11}
响应中的OK
字段的值为1
,表示服务器正在正常工作。
接下来,我们将看看如何管理服务器实例。
第3步:管理MongoDB服务
MongoDB 作为 systemd 服务安装,这意味着您可以使用 Ubuntu 中的所有其他系统服务一起使用标准 systemd
命令来管理它。
要检查服务的状态,键入:
1sudo systemctl status mongod
您可以随时停止服务器通过键入:
1sudo systemctl stop mongod
要在停止服务器时启动,键入:
1sudo systemctl start mongod
您也可以使用单个命令重新启动服务器:
1sudo systemctl restart mongod
在之前的步骤中,我们启用了 MongoDB 自动启动服务器. 如果您想要禁用自动启动,请键入:
1sudo systemctl disable mongod
同样容易再次启用它. 要做到这一点,请使用:
1sudo systemctl enable mongod
接下来,让我们调整我们的MongoDB安装的防火墙设置。
步骤 4 – 调整防火墙(可选)
假設您已遵循 初始伺服器安裝教程指示,在您的伺服器上啟用防火牆,MongoDB伺服器將無法從互聯網上存取。
如果您打算只在本地使用MongoDB服务器,并在同一服务器上运行应用程序,这是推荐的安全设置,但是,如果您希望能够从互联网连接到MongoDB服务器,则必须在ufw
中允许接入连接。
要允许从任何地方访问MongoDB的默认端口27017
,您可以使用sudo ufw allow 27017
。
在大多数情况下,MongoDB 只能从某些受信任的位置访问,例如另一个服务器托管应用程序. 为了完成此任务,您可以允许访问 MongoDB 的默认端口,同时指定另一个服务器的 IP 地址,该服务器将被明确允许连接:
1sudo ufw allow from your_other_server_ip/32 to any port 27017
您可以通过ufw
验证防火墙设置的更改:
1sudo ufw status
您应该看到输出中允许的27017
端口的流量:
1[label Output]
2Status: active
3
4To Action From
5-- ------ ----
6OpenSSH ALLOW Anywhere
727017 ALLOW Anywhere
8OpenSSH (v6) ALLOW Anywhere (v6)
927017 (v6) ALLOW Anywhere (v6)
如果您决定只允许某个特定 IP 地址连接到 MongoDB 服务器,则允许位置的 IP 地址将列入输出中,而不是任何地方
。
您可以在 UFW Essentials: Common Firewall Rules and Commands中找到更高级的防火墙设置来限制访问服务。
即使端口是开放的,MongoDB 目前只在本地地址127.0.0.1
上收听,要允许远程连接,请将服务器的公开可路由 IP 地址添加到mongod.conf
文件中。
在您的编辑器中打开 MongoDB 配置文件:
1sudo nano /etc/mongod.conf
将您的服务器的 IP 地址添加到bindIP
值:
1[label /etc/mongod.conf]
2. . .
3# network interfaces
4net:
5 port: 27017
6 bindIp: 127.0.0.1,your_server_ip
7. . .
请确保在现有 IP 地址和您添加的 IP 地址之间放置一个。
保存文件,离开编辑器,然后重新启动 MongoDB:
1sudo systemctl restart mongod
现在MongoDB正在听取远程连接,但任何人都可以访问它。
结论
您可以在 这些 DigitalOcean 社区文章中找到有关如何配置和使用 MongoDB 的更多深入教程。