avatar

目录
MongoDb配置与踩雷


为什么安装MongoDb

用scrapy_redis 写分布式时候,存储数据是 通过redis 存进去。但是redis 看中文时候,是会被 unicode 编码的。

类似这样

看起来非常不舒服,后面想着一边存储redis,一边存储 Mysql吧,但是这么写,爬数据时候就一直返回None,只能等爬虫开始时候,在另外运行一个 redis 转存到 Mysql 的程序才可以。

读取时候也会有问题,转着转着,数据读不出来,就会出现KeyError的报错,然后需要把mysql存储语句注释掉,通过print 打印一次数据 才能继续转存。

后面有一次把time.sleep 语句注释了,一次性读取打印数据,输出很快,但是程序很快就卡住了,没报错,到redis desktop Manager 中查看发现 sfw:items 这个Key 被删除了。

查看log日志发现 数据执行到最后时候 自动执行 LPOP 命令。

通过百度,设置了redis 的持久化配置,最大内存等等都设置了一遍,还是这样,决定不用redis存储数据了。用Mongo直接存储更方便。

安装Mongo

下载链接:https://www.mongodb.com/download-center/community

安装方法百度一大堆。就不重复写了。

这里碰到一个坑。

按照百度的方法,配置好以后。 通过 localhost:27017 或者 127.0.0.1:27017都可以访问。但是通过本机ip 访问。就访问不了

碰到这种情况,根据多年的环境配置经验,就知道是配置文件中ip绑定的问题,通常改成0.0.0.0 就好了。

进入到bin 目录下,有个mongod.cfg 文件(\bin\mongod.cfg),通常这种都是配置文件。里面有一条配置信息

Code
1
2
3
net:
port: 27017
bindIp: 127.0.0.1

通常把 binIp改成这样就可以了

Code
1
2
3
net:
port: 27017
bindIp: 0.0.0.0

重启服务,访问,还是被限制了。

百度了将近三小时,突然发现,一直以来我配置时候使用的命令 mongo

Code
1
mongo  --dbpath "K:\Mongodb\data\db" --config "K:\Mongodb\mongo.conf" --install --serviceName "MongoDB"

而bin 目录下也有一个 mongod.exe ,配置文件名字也叫mongod.cfg ,会不会是因为这里的问题。

Code
1
2
3
4
进入 管理员模式下cmd
sc delete Mongodb

mongod --dbpath "K:\Mongodb\data\db" --install --serviceName "MongoDB"

这样子配置后,果然成功了。

如果还是访问不了

就在比如 “K:\Mongodb” 下 新建一个mongod.conf ,将bin 目录下的 配置信息复制过来

在运行命令

Code
1
2
3
4
在管理员模式下运行CMD
sc delete MongoDB

mongod --dbpath "K:\Mongodb\data\db" --config "K:\Mongodb\mongod.conf" --install --serviceName "MongoDB"

如果报错Unrecognized option: mp

就将配置文件中 这个 mp 注释掉,在重新运行就好了。

结尾

今天年二十八,但是如今全国各地都受到 新型冠状病毒感染的肺炎影响,在此希望我身边的人每个人都健健康康的。如今医学如此发达,对抗药总会研制出来的。非典都这么过来了不是吗。

温馨提示:

积极防护,保护自己。戴口罩,勤洗手。

文章作者: KeyboArd
文章链接: https://www.wrpzkb.cn/MongoDbInstall/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KeyboArd's Blog
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论