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