# 1.4.2 MongoDB的安装
MongoDB 是由 C++ 语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似 Json 对象,它的字段值可以包含其他文档,数组及文档数组,非常灵活。
MongoDB 支持多种平台,包括 Windows、Linux、Mac OS、Solaris 等,在其官方网站均可找到对应的安装包,[https://www.mongodb.com/download-center](https://www.mongodb.com/download-center)
本节我们来看下它的安装过程。
## 1. 相关链接 {#1-相关链接}
* 官方网站:[https://www.mongodb.com](https://www.mongodb.com/)
* 官方文档:[https://docs.mongodb.com](https://docs.mongodb.com/)
* GitHub:[https://github.com/mongodb](https://github.com/mongodb)
* 中文教程:[http://www.runoob.com/mongodb/mongodb-tutorial.html](http://www.runoob.com/mongodb/mongodb-tutorial.html)
## 2. Windows下的安装 {#2-windows下的安装}
目前最新版本的MongoDB,不用这么麻烦的配置服务和日志了
直接在官网下载安装包即可,链接为:[https://www.mongodb.com/download-center\#community](https://www.mongodb.com/download-center#community)
![](https://germey.gitbooks.io/python3webspider/content/assets/1-29.jpg)
直接点击 Download 下载 msi 安装包即可。
下载完成之后双击开始安装,指定 MongoDB 的安装路径,例如在此处我指定安装路径为 C:\MongoDB\Server\3.4,当然路径可以自行选择
![](https://germey.gitbooks.io/python3webspider/content/assets/1-30.jpg)
点击下一步执行安装即可。
安装成功之后,进入 MongoDB 的安装目录,在此处所在路径是 C:\MongoDB\Server\3.4,在 bin 目录下新建同级目录 data
![](https://germey.gitbooks.io/python3webspider/content/assets/1-31.jpg)
然后进入 data 文件夹新建子文件夹 db,作为数据目录存储的文件夹,之后打开命令行,进入 MongoDB 安装目录的 bin 目录下,运行 MongoDB 服务:
```text
mongod --dbpath "C:\MongoDB\Server\3.4\data\db"
```
请记得将此处的路径替换成你的主机 MongoDB 安装路径。
如果想一直使用 MongoDB 就不能关闭此命令行,如果意外关闭或重启 MongoDB 服务就不能使用了,这显然不是我们想要的,所以接下来我们还需将 MongoDB 配置成系统服务。
首先我们要以管理员模式运行命令行,注意此处一定要是管理员模式运行,否则可能配置失败,如图 1-34 所示:
![](https://germey.gitbooks.io/python3webspider/content/assets/1-34.jpg)
图 1-34 管理员模式
开始菜单搜索 cmd,找到命令行,然后右键以管理员身份运行即可。
随后新建一个日志文件,在 bin 目录同级目录新建 logs 文件夹,进入之后新建一个 mongodb.log 文件,用于保存 MongoDB 运行的日志,如图 1-35 所示。
![](https://germey.gitbooks.io/python3webspider/content/assets/1-35.jpg)
图 1-35 新建 mongodb.log 结果
在命令行下输入如下内容:
```text
mongod --bind_ip 0.0.0.0 --logpath "C:\MongoDB\Server\3.4\logs\mongodb.log" --logappend --dbpath "C:\MongoDB\Server\3.4\data\db" --port 27017 --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
```
这里的意思是绑定 IP 为 0.0.0.0,即任意 IP 均可访问,指定日志路径、数据库路径、端口,指定服务名称,注意这里依然需要把路径替换成你的 MongoDB 安装路径,运行此命令后即可安装服务。
如果没有出现错误提示,则证明 MongoDB 服务已经安装成功。
可以设置它的开机启动方式,如自动启动或手动启动等。这样我们就可以非常方便地管理 MongoDB 服务了。
启动服务之后我们在命令行下就可以利用 mongo 命令进入 MongoDB 命令交互环境了
这样 Windows 下 MongoDB 配置就完成了。
## 3. Linux下的安装 {#3-linux下的安装}
在这里以 MongoDB 3.4 为例说明 MongoDB 的安装过程。
### Ubuntu {#ubuntu}
首先导入 MongoDB 的 GPG Key:
```text
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
```
随后创建 apt-get 源列表,各个系统版本对应的命令如下:
* Ubuntu 12.04
```text
echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
```
* Ubuntu 14.04
```text
echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
```
* Ubuntu 16.04
```text
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
```
随后更新 apt-get 源:
```text
sudo apt-get update
```
之后安装 MongoDB 即可:
```text
sudo apt-get install -y mongodb-org
```
安装完成之后运行 MongoDB,命令如下:
```text
mongod --port 27017 --dbpath /data/db
```
运行命令之后 MongoDB 就在 27017 端口上运行了,数据文件会保存在 /data/db 路径下。
一般我们在 Linux 上配置 MongoDB 都是为了远程连接使用的,所以在这里还需要配置一下 MongoDB 的远程连接和用户名密码:
接着我们进入到 MongoDB 命令行:
```text
mongo --port 27017
```
现在我们就已经进入到 MongoDB 的命令行交互模式下了,在此模式下运行如下命令:
```text
>use admin
switched to db admin
>db.createUser({user: 'admin', pwd: 'admin123', roles: [{role: 'root', db: 'admin'}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
```
这样我们就创建了一个用户名为 admin,密码为 admin123 的用户,赋予最高权限。
随后需要修改 MongoDB 的配置文件,
执行如下命令:
```text
sudo vi /etc/mongod.conf
```
修改 net 部分为:
```text
net:
port: 27017
bindIp: 0.0.0.0
```
这样配置后 MongoDB 可被远程访问。
另外还需要添加如下权限认证配置,直接添加如下内容到配置文件:
```text
security:
authorization: enabled
```
配置完成之后我们需要重新启动 MongoDB 服务,命令如下:
```text
sudo service mongod restart
```
这样远程连接和权限认证就配置完成了。
### CentOS、RedHat {#centos、redhat}
首先添加 MongoDB 源:
```text
sudo vi /etc/yum.repos.d/mongodb-org.repo
```
修改为如下内容保存:
```text
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
```
然后执行 yum 命令安装:
```text
sudo yum install mongodb-org
```
启动 MongoDB 服务:
```text
sudo systemctl start mongod
```
停止和重新加载 MongoDB 服务:
```text
sudo systemctl stop mongod
sudo systemctl reload mongod
```
有关远程连接和认证配置可以参考上文,方式是相同的。
更多 Linux 发行版的 MongoDB 安装方式可以参考官方文档:[https://docs.mongodb.com/manual/administration/install-on-linux/](https://docs.mongodb.com/manual/administration/install-on-linux/)。
## 4. Mac下的安装 {#4-mac下的安装}
推荐使用 Homebrew 安装,执行 brew 命令即可:
```text
brew install mongodb
```
然后创建一个新文件夹 /data/db,用于存放 MongoDB 数据。
启动 MongoDB 服务:
```text
brew services start mongodb
sudo mongod
```
这样就启动了 MongoDB 服务。
停止、重启 MongoDB 服务的命令:
```text
brew services stop mongodb
brew services restart mongodb
```
## 5.使用docker安装 {#5-可视化工具}
1.查找docker中的mongo
```text
sudo docker search mongo
```
2.拉取镜像
```text
sudo docker pull mongo:3.6
```
3.查看是否已经下载下来
```text
sudo docker images
```
4.运行mongo镜像
```text
sudo docker run -p 27917:27017 -e $PWD/db:/data/db -d mongo:3.6
```
5.查看容器启动情况
```text
sudo docker ps
```
## 6. 可视化工具 {#5-可视化工具}
RoboMongo/Robo 3T,官方网站:[https://robomongo.org/](https://robomongo.org/),下载链接:[https://robomongo.org/download](https://robomongo.org/download)。
Studio 3T,官方网站:[https://studio3t.com](https://studio3t.com/),下载链接:[https://studio3t.com/download/](https://studio3t.com/download/)。
- 介绍
- 1.开发环境配置
- 1.1 python3的安装
- 1.1.1 windows下的安装
- 1.1.2 Linux下的安装
- 1.1.3 Mac下的安装
- 1.2 请求库的安装
- 1.2.1 requests的安装
- 1.2.2 selenium的安装
- 1.2.3 ChromeDriver的安装
- 1.2.4 GeckoDriver 的安装
- 1.2.5 PhantomJS的安装
- 1.2.6 aiohttp的安装
- 1.3 解析库的安装
- 1.3.1 lxml的安装
- 1.3.2 Beautiful Soup的安装
- 1.3.3 pyquery的安装
- 1.3.4 tesserocr的安装
- 1.4 数据库的安装
- 1.4.1 MySQL的安装
- 1.4.2 MongoDB的安装
- 1.4.3 Redis的安装
- 1.5 存储库的安装
- 1.5.1 PyMySQL的安装
- 1.5.2 PyMongo的安装
- 1.5.3 redis-py的安装
- 1.5.4 RedisDump的安装
- 1.6 Web库的安装
- 1.6.1 Flask的安装
- 1.6.2 Tornado的安装
- 1.7 App爬取相关库的安装
- 1.7.1 Charles的安装
- 1.7.2 mitmproxy的安装
- 1.7.3 Appium的安装
- 1.8 爬虫框架的安装
- 1.8.1 pyspider的安装
- 1.8.2 Scrapy的安装
- 1.8.3 Scrapy-Splash的安装
- 1.8.4 ScrapyRedis的安装
- 1.9 布署相关库的安装
- 1.9.1 Docker的安装
- 1.9.2 Scrapyd的安装
- 1.9.3 ScrapydClient的安装
- 1.9.4 ScrapydAPI的安装
- 1.9.5 Scrapyrt的安装
- 1.9.6-Gerapy的安装
- 2.爬虫基础
- 2.1 HTTP 基本原理
- 2.1.1 URI和URL
- 2.1.2 超文本
- 2.1.3 HTTP和HTTPS
- 2.1.4 HTTP请求过程
- 2.1.5 请求
- 2.1.6 响应
- 2.2 网页基础
- 2.2.1网页的组成
- 2.2.2 网页的结构
- 2.2.3 节点树及节点间的关系
- 2.2.4 选择器
- 2.3 爬虫的基本原理
- 2.3.1 爬虫概述
- 2.3.2 能抓怎样的数据
- 2.3.3 javascript渲染的页面
- 2.4 会话和Cookies
- 2.4.1 静态网页和动态网页
- 2.4.2 无状态HTTP
- 2.4.3 常见误区
- 2.5 代理的基本原理
- 2.5.1 基本原理
- 2.5.2 代理的作用
- 2.5.3 爬虫代理
- 2.5.4 代理分类
- 2.5.5 常见代理设置
- 3.基本库使用
- 3.1 使用urllib
- 3.1.1 发送请求
- 3.1.2 处理异常
- 3.1.3 解析链接
- 3.1.4 分析Robots协议
- 3.2 使用requests
- 3.2.1 基本用法
- 3.2.2 高级用法
- 3.3 正则表达式
- 3.4 抓取猫眼电影排行
- 4.解析库的使用
- 4.1 使用xpath
- 4.2 使用Beautiful Soup
- 4.3 使用pyquery
- 5.数据存储
- 5.1 文件存储
- 5.1.1 TXT 文件存储
- 5.1.2 JSON文件存储
- 5.1.3 CSV文件存储
- 5.2 关系型数据库存储
- 5.2.1 MySQL的存储
- 5.3 非关系数据库存储
- 5.3.1 MongoDB存储
- 5.3.2 Redis存储
- 6.Ajax数据爬取
- 6.1 什么是Ajax
- 6.2 Ajax分析方法
- 6.3 Ajax结果提取
- 6.4 分析Ajax爬取今日头条街拍美图
- 7.动态渲染页面爬取
- 7.1 Selenium的使用
- 7.2 Splash的使用
- 7.3 Splash负载均衡配置
- 7.4 使用selenium爬取淘宝商品
- 8.验证码的识别
- 8.1 图形验证码的识别
- 8.2 极验滑动验证码的识别
- 8.3 点触验证码的识别
- 8.4微博宫格验证码的识别
- 9.代理的使用
- 9.1 代理的设置
- 9.2 代理池的维护
- 9.3 付费代理的使用
- 9.4 ADSL拨号代理
- 9.5 使用代理爬取微信公总号文章
- 10.模拟登录
- 10.1 模拟登陆并爬去GitHub
- 10.2 Cookies池的搭建
- 11.App的爬取
- 11.1 Charles的使用
- 11.2 mitmproxy的使用
- 11.3 mitmdump“得到”App电子书信息
- 11.4 Appium的基本使用
- 11.5 Appnium爬取微信朋友圈
- 11.6 Appium+mitmdump爬取京东商品
- 12.pyspider框架的使用
- 12.1 pyspider框架介绍
- 12.2 pyspider的基本使用
- 12.3 pyspider用法详解
- 13.Scrapy框架的使用
- 13.1 scrapy框架介绍
- 13.2 入门
- 13.3 selector的用法
- 13.4 spider的用法
- 13.5 Downloader Middleware的用法
- 13.6 Spider Middleware的用法
- 13.7 Item Pipeline的用法
- 13.8 Scrapy对接Selenium
- 13.9 Scrapy对接Splash
- 13.10 Scrapy通用爬虫
- 13.11 Scrapyrt的使用
- 13.12 Scrapy对接Docker
- 13.13 Scrapy爬取新浪微博
- 14.分布式爬虫
- 14.1 分布式爬虫原理
- 14.2 Scrapy-Redis源码解析
- 14.3 Scrapy分布式实现
- 14.4 Bloom Filter的对接
- 15.分布式爬虫的部署
- 15.1 Scrapyd分布式部署
- 15.2 Scrapyd-Client的使用
- 15.3 Scrapyd对接Docker
- 15.4 Scrapyd批量部署
- 15.5 Gerapy分布式管理
- 微信公总号文章实战
- 源码
- other