如何在Ubuntu 16.04安装的MongoDB

MongoDB是在现代Web应用中常用的一个自由和开源的NoSQL数据库文件。本教程将帮助您设置的MongoDB服务器的生产应用环境上。

介绍

MongoDB是一个在现代Web应用程序中常用的免费和开源的NoSQL文档数据库。 本教程将帮助您在服务器上为生产应用程序环境设置MongoDB。

截至发布时,Ubuntu官方MongoDB的16.04包尚未更新使用新的systemd初始化系统是默认启用在Ubuntu 16.04 用干净的Ubuntu 16.04服务器上的那些包运行的MongoDB包括以下额外的步骤,以MongoDB的配置为systemd服务,将在启动时自动启动。

先决条件

要遵循本教程,您需要:

第1步 - 添加MongoDB存储库

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

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

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

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

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

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

发出以下命令为MongoDB创建列表文件。

echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

添加存储库详细信息后,我们需要更新包列表。

sudo apt-get update

第2步 - 安装和验证MongoDB

现在我们可以安装MongoDB包本身。

sudo apt-get install -y mongodb-org

此命令将安装包含最新稳定版本的MongoDB的几个软件包以及用于MongoDB服务器的有用的管理工具。

为了在Ubuntu 16.04上正常启动MongoDB作为服务,我们还需要创建一个描述服务的单元文件。 单位文件告诉systemd如何管理资源。 最常见的单元类型是一种服务 ,它决定如何启动或停止服务,当它应该在系统启动时自动启动,以及它是否是依赖于其他软件来运行。

我们将创建一个单元文件来管理MongoDB服务。 创建一个名为的配置文件mongodb.service/etc/systemd/system使用目录nano或您喜爱的文本编辑器。

sudo nano /etc/systemd/system/mongodb.service

粘贴以下内容,然后保存并关闭文件。

/etc/systemd/system/mongodb.service
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

这个文件有一个简单的结构:

  • 该股部分包含概述(如MongoDB的服务人类可读的描述)以及依赖该服务已启动之前必须得到满足。 在我们的情况下,MongoDB的依赖于网络已被使用,因此network.target在这里。

  • 服务部分服务应如何启动。 User指令指定服务器将下运行mongodb用户,并且ExecStart指令定义MongoDB的服务器启动命令。

  • 最后一节, 安装 ,告诉systemd服务时,应自动启动。 所述multi-user.target是一个标准的系统的启动顺序,这意味着服务器将引导期间被自动启动。

接下来,开始与新创建的服务systemctl

sudo systemctl start mongodb

虽然没有输出到这个命令,你也可以使用systemctl来检查该服务已正常启动。

sudo systemctl status mongodb
输出
● mongodb.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2016-04-25 14:57:20 EDT; 1min 30s ago
 Main PID: 4093 (mongod)
    Tasks: 16 (limit: 512)
   Memory: 47.1M
      CPU: 1.224s
   CGroup: /system.slice/mongodb.service
           └─4093 /usr/bin/mongod --quiet --config /etc/mongod.conf

最后一步是在系统启动时自动启动MongoDB。

sudo systemctl enable mongodb

MongoDB的服务器现在配置和运行,并且可以管理使用MongoDB的服务systemctl命令(如sudo systemctl mongodb stopsudo systemctl mongodb start )。

第3步 - 调整防火墙(可选)

假设你已经按照初始服务器设置教程说明,使您的服务器上的防火墙,MongoDB的服务器会从互联网访问。

如果您打算仅在本地使用运行在同一服务器上的应用程序使用MongoDB服务器,那么它是推荐的安全设置。 不过,如果你想成为能够从互联网连接到您的MongoDB服务器,我们必须允许传入的连接ufw

要允许访问的MongoDB其默认端口27017来自世界各地,你可以使用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允许的端口在output.If你已经决定只允许特定的IP地址连接到服务器的MongoDB,允许位置的IP地址将被列出,而不是在任何地方输出。

输出
Status: active

To                         Action      From
--                         ------      ----
27017                      ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
27017 (v6)                 ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

为限制访问服务的更高级的防火墙设置中描述UFW要点:通用防火墙规则和命令

结论

你可以找到关于MongoDB的安装和配置在更深入的说明, 这些DigitalOcean社区的文章