介绍
MongoDB是一个在现代Web应用程序中常用的免费和开源的NoSQL文档数据库。 本教程将帮助您在服务器上为生产应用程序环境设置MongoDB。
截至发布时,Ubuntu官方MongoDB的16.04包尚未更新使用新的systemd
初始化系统是默认启用在Ubuntu 16.04 。 用干净的Ubuntu 16.04服务器上的那些包运行的MongoDB包括以下额外的步骤,以MongoDB的配置为systemd
服务,将在启动时自动启动。
先决条件
要遵循本教程,您需要:
- 一个Ubuntu的16.04服务器通过以下方法设置初始服务器设置教程 ,包括Sudo非root用户
第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
粘贴以下内容,然后保存并关闭文件。
[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 stop
, sudo 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社区的文章 。