Debian 8 上 MongoDB 安装教程

介绍

MongoDB 是一种常用的免费开源 NoSQL 文档数据库。本教程将帮助您在服务器上设置 MongoDB,以便在生产应用程序环境中使用。您将安装 MongoDB 并配置防火墙规则以限制对 MongoDB 的访问。

步骤1 – 安装MongoDB

MongoDB 已经包含在 Debian 的软件包存储库中,但是官方 MongoDB 存储库提供了最新版本,并且是安装软件的推荐方法。在这一步中,我们将把这个官方的存储库添加到我们的服务器中。

Debian 通过验证它们是否使用 GPG 密钥进行签名来确保软件包的真实性,因此我们首先必须导入他们用于官方 MongoDB 存储库的密钥。

sudo apt-key adv --keyserver hkp://keyserver.Ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

成功导入密钥后,您将看到:

gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

接下来,我们必须添加 MongoDB 存储库详细信息,以便apt知道从哪里下载软件包。

为MongoDB创建列表文件:

echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

添加存储库详细信息后,更新软件包列表:

sudo apt-get update

现在使用以下命令安装 MongoDB 包本身:

sudo apt-get install -y mongodb-org

这将安装 MongoDB 的最新稳定版本,以及 MongoDB 服务器的一些有用的管理工具。

一旦安装了MongoDB,启动服务,并确保在服务器重新启动时启动该服务:

sudo systemctl enable mongod.service

sudo systemctl start mongod

然后用systemctl来检查服务是否正常启动:

sudo systemctl status mongod

您应该看到以下输出,表示该服务正在运行:

mongod.service - High-performance, schema-free document-oriented database


Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
   Active: active (running) since Tue 2017-02-28 19:51:51 UTC; 7s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 8958 (mongod)
   CGroup: /system.slice/mongod.service
           └─8958 /usr/bin/mongod --quiet --config /etc/mongod.conf

Feb 28 19:51:51 cart-61037 systemd[1]: Started High-performance, schema-free document-oriented database.

现在,MongoDB 成功安装,我们用软件防火墙来保护它。

步骤2 – 使用防火墙保护 MongoDB

在大多数情况下,MongoDB 只能从某些受信任的位置访问,例如托管应用程序的其他服务器。要完成此任务,您可以允许访问 MongoDB 的默认端口,同时指定将被明确允许连接的另一个服务器的 IP 地址。我们将使用 iptables 防火墙来设置此规则,以及一些其他规则来保护系统。

在我们编写任何规则之前,请安装 iptables-persistent 软件包,以便您可以保存创建的规则。这样,每次重新启动服务器时都会应用规则。执行此命令:

sudo apt-get install iptables-persistent

注意:在安装过程中,可能会询问您是否要保留现有规则。您可以丢弃现有的规则。

接下来,删除可能存在的任何现有规则,以防万一:

sudo iptables -F

然后添加允许已建立的连接继续通话的规则。这样我们现有的 SSH 连接不会中断:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

接下来,确保允许 SSH 访问:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

如果您计划从远程服务器连接到 MongoDB,请添加这些规则,以允许从应用程序服务器访问 MongoDB 的默认端口:

sudo iptables -A INPUT -s your_other_server_ip -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -d your_other_server_ip -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

接下来,添加允许本地环回设备上的流量的这些规则:

sudo iptables -A INPUT -i lo -j ACCEPT

sudo iptables -A OUTPUT -o lo -j ACCEPT

最后,更改防火墙策略以删除所有其他流量:

sudo iptables -P INPUT DROP

验证规则是否正确:

sudo iptables -S

你应该看到类似的输出:

-P INPUT DROP


-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s your_other_server_ip/32 -p tcp -m tcp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -d your_other_server_ip/32 -p tcp -m tcp --sport 27017 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

最后,保存规则:

netfilter-persistent save

步骤 3 – 启用对外部服务器的访问(可选)

MongoDB 的当前版本默认不接受外部连接。如果您使用防火墙限制对特定 IP 地址的访问,则可以修改 MongoDB 的配置以接受远程连接。

编辑 MongoDB 配置文件:

sudo nano /etc/mongod.conf

找到这一节:

# network interfaces
  net:
  port: 27017
  bindIp: 127.0.0.1

Mongo 正在监听本地环回地址,所以它只接受本地连接。更改 bindIp 值,使其包含您的 MongoDB 服务器的 IP 地址:

# network interfaces
  net:
  port: 27017
  bindIp: 127.0.0.1, your_server_ip

保存文件并退出编辑器。

然后重新启动 MongoDB 应用更改:

sudo systemctl restart mongod

您的远程机器现在应该能够连接。但是,您可能还需要启用身份验证以进一步保护数据库。

更多MongoDB相关教程见以下内容

MongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里

相关推荐