Linux部署MongoDB

你说的曾经没有我的故事 提交于 2020-02-11 23:44:31

下载安装包

打开网站 https://www.mongodb.com/download-center/community查找与Linux版本一致的MongoDB安装包。我这里选择安装包格式为tgz压缩文件,版本是RHEL7.0 Linux 64-bit X64
ac587233ebe90cd5bc17ff71fdd8fb69.png

回到Xshell控制台,输入下载命令

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.3.tgz

这时候会在当前工作目录下将mongodb-linux-x86_64-rhel70-4.2.3.tgz下载下来。
如下图:
01ca1aa7bac39f058ddc6bd4e0f17ae9.png

解压安装包

输入以下命令

tar -zxvf mongodb-linux-x86_64-rhel70-4.2.3.tgz  

将解压后的目录剪切到一个新目录 mongodb

mv mongodb-linux-x86_64-rhel70-4.2.3 mongodb

创建数据库目录

MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。我们到mongodb下新建data/db目录

这里我把data目录也放置mongodb/mongodb下

cd mongodb
mkdir -p data/db

创建日志目录

还是在mongodb目录下继续创建子目录log,后续mongodb的日志文件会存储在这目录下。

mkdir log

创建配置文件目录

还是在mongodb下,我们需要创建一个etc子目录,在子目录下创建mongodb.conf
重点:mongodb.conf文件非常重要,它的配置如果错误则mongodb启动会失败。

mkdir etc

创建好etc配置文件目录后我们输入ls查看mongodb目录下的信息
eed49c0aa415e5a9d9f8afcba3ef97d0.png
通过上图我们可以看得到mongodb的绝对路径和该目录下的详情信息,现在添加mongodb.conf

vim ./etc/mongodb.conf

在新建的mongodb.conf输入下面内容

dbpath=/root/mongodb/data/db  #数据文件存放目录
logpath=/root/mongodb/log/mongodb.log   #日志文件
port=27017   #端口
fork=true    #以守护程序的方式启用,即在后台运行
journal=false

这里需要注意我没加storageEngine=mmapv 这一行,网上很多人加了,这一行是针对以前版本的。以前Mongodb的引擎版本通过配置文件制定为mmapv,现在MongoDB默认的存储引擎就已经是WiredTiger了,加入了会出报“ERROR: child process failed, exited with error number 100”的错。

ok,现在配置文件已经好了,cat ./etc/mongodb.conf查看下如下图
dbc951ec524daeb51d8177d7b513dfed.png

启动Mongodb

新安装的Mongodb这时候是木有用户名和密码啥的,直接cd工作目录到mongodb目录下的bin目录

cd bin
pwd

b3da092480f8e8d537fda63011cc27ca.png

在启动命令前我们先通过ps -ef 给大家确认确实Mongodb目前是没有运行的,如下图
3398db0c96200a08a3105eb13fc2a062.png


f783f0cf3d988b6bcc409d493887dbee.png

在/root/mongodb/bin工作目录下执行下面命令开始启动Mongodb

./mongod --config /root/mongodb/etc/mongodb.conf

执行结果如下表示Mongodb已启动
68da86af78656804a07221d27196e5bd.png
再次输入ps -ef可查询的到
2018469a5850fc376a8f557f55ebbb4f.png

也可以通过下面命令查看27017端口的监听信息

netstat -lanp | grep "27017"

26eeddc5253034f42bdd66c4f98718fd.png

在远程客户端连接

之前在windows服务器上安装好Mongodb后只要服务已启动,端口确认打开则可以安装一些Mongodb客户端在本地客户端上连接和使用了。现在换成Linux,我也想要在客户端享受同样待遇,打开NoSQLBooster for MongoDB工具,创建一个新的链接,测试下是否能够链接成功,如下图
8dff6ac3523be497c33039dd1756382f.png
点击 Test Connection按钮,得到的结果是半天无响应,最后出来的错误信息如下图,我知道结果的。。。意料之内,毕竟成功没有这么简简单单啊~
445e8fe611c8ef40c5b83bb1b091eaab.png

我再次核查下我的腾讯云服务器安全组,确定27017是不是真的开放了,好吧检查发现确实安全组木有添加。。。 赶忙加上~
2c4fc17d7a011f4f73f3ab7f920c1684.png
开放端口后发现还是不行,输入下面命令查看了下

netstat -nputl

0d8492cac91455606adeafd4550281f7.png
可以主席的是我们的27017绑定的ip是127.0.0.1 意味着只有本地可以连接Mongodb。

查了下官网,发现我们可以在配置文件中添加bind_ip进行设置,我们先停止进程再设置。
mongodb.conf配置文件说明地址:

https://docs.mongodb.com/manual/reference/program/mongod/#bin.mongod

停止Mongodb进程
这里需要额外注意,如果啥也不管直接重启可能下次无法启动,下次再启动这种意外关闭Mongodb服务的需要通过几种方式才可以,具体参考 http://f.dataguru.cn/thread-107361-1-1.html

这里我采取 kill -15 <pid> 方式关闭进程,先通过ps -ef | grep mongodb* 查到pid
如下图
8ccc206fa0c1d2518bc5d46c577a20f4.png8ccc206fa0c1d2518bc5d46c577a20f4.png
找到了pid为9735的进程,输入下面命令干掉

kill -15 9735

配置mongodb.conf
我们在mongodb.conf加上bind_ip 如下图(切记字段名和等于号之间别留空格!)
更改后的配置文件如下图
0424b00f8663b96b98996c64e21fdf20.png

cd到/root/mongodb/bin目录下,再次执行下面命令启动MongoDB

./mongod --config /root/mongodb/etc/mongodb.conf

这个时候我们再从本地客户端工具试下
0437d787dfc59093a87feffc27f7ba4f.png
还是不行,不过不是连接不上,而是我本地客户端版本太低,更新下即可,更新后连接如下
183ae067fc9e89d6ade0b0c3e2255248.png

大功告成! 但是现在问题是只要是互联网上的人知道了我们Mongodb的地址后均可对数据进行增删改查,这样是不合理的,这时候就要开始创建用户,并设置登录步骤啦~ 下一篇博客写如何给Linux上的MongoDB设置登录用户

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!