1、下载
官网地址:https://www.mongodb.com/download-center?jmp=nav#community
选择的是community版的
注:如果选择已经编译好的安装包会简单一些,因version选择项里都是x64,我的电脑是32位,所以只能选择从Download Source里下载源码。
这里看到也可以用yum方式安装,应该会更简单,点进去有安装步骤,但是是针对64位机的。
下载到的安装包为:mongodb-src-r3.6.3.tar.gz
2、解压
tar -zxv -f 安装包名称 -C 安装路径
然后修改安装包文件名
3、Build MongoDB
解压后的文件夹里没有bin和configure之类的文件,有个README,看一下,里面没有如何编译之类的内容,讲了如何运行、哪里下载驱动等,其中提到building参见docs/building.md.。找到./docs/building.md.,打开看下:
1)build MongoDB需要先安装其他软件,
确认满足要求后进行下一步
注意这里要求的是Python 2.7版本,其他版本可能会报错的
如果没有装python2.7的话,这里面有提示如何安装正确的版本
2)编译
我选择了all
注:起初我用python3装的,然后报错如下:
用python2设置后报了个问题:
WiredTiger不支持32位,需要把它关掉。
python2 buildscripts/scons.py all --wiredtiger=off
又报错:
GCC版本低于要求的版本,这个之前应该先检查下的。
升级GCC:yum -v update gcc
yum更新的缺点是更新到的软件版本未必是最新的,更新后发现版本还是无法满足要求,当前的GCC版本为4.8.5
注:用pip安装回复没有安装包,所以自己下载来安装
两个方法:安装新版本GCC;选择低版本MongoDB
下载了几个版本的MongoDB发现3.2仅需要GCC4.8.2
下载了GCC5.5.0,./configure时报错:
查了下gmp和mpfr都装了,并且版本高于所要求的版本,需要指定下安装路径。
mpc没有安装,用yum安装回复没有可用的软件包,只能去上面给出的路径里下载,选择了最新版本mpc-1.0.3.tar.gz
安装包里有个install文件,看了下安装步骤,其中说到要事先安装好gmp和mpfr及其版本要求,并且如果compiler默认的查找路径找不到这两个软件安装路径的话需要指定它们的安装路径。--with-gmp=DIR or--with-mpfr=DIR with ./configure
试了下./configure,报错:
还是需要定义一下路径。但是却找不到gmp和mpfr的安装路径,用rpm -qa确认已安装和其版本号,用rpm -ql找到的都是帮助文档和.so文件,不明白为什么。
重装或者使用anaconda下的安装路径。我重装了下gmp和mpfr。
gmp、mpfr和mpc安装都是./configure->make->make install。完成后安装gcc,编译时间很长。
安装完gcc后继续之前的mongodb编译操作,此时又报了两个错误,缺少typing和Cheetah.Template模块,这两个都是python的模块,看来现有的python2没有装。然而我在python2.7的安装路径下找到了typing.py,Cheetah.Template倒是没找到。不知道怎么装,没有找到模块安装包阿(后来发现个好方法,用pycharm安装python的package,真的很好用,不用自己去找下载地址了),然后退而求其次,降低mongodb版本,选择3.4,重复以上操作,又报错:
搜索了下,js-config.h在mongodb/src/third_party/mozjs-45/platform下的几个文件夹下都有:
这几个文件夹里的内容基本是一样的,可能不同的设备选择不同的文件夹,猜测是不是因为我是32位机,这些文件夹都是64位机的,自定义一个x86_32,复制js-config.h的相关文件进去看看。试了下还是不行。
怀疑32位装不了这个版本,换回mongodb3.6试一下(python2的typing和Cheetah两个模块已通过pycharm安装好了)。又报错:
这个问题和刚刚的js-config.h一样,mongodb/src/third_party/gperftools-2.5下几个文件夹里包含了这个config.h,但是都是64位的。
看来32位机装不了较高版本的mongodb,还是装mongodb3.2吧。
看了下3.2版的js-config.h的路径,果然platform下有i386,看来高版本的果真是不支持32位了。好吧,老老实实装3.2版,编译的时间很长。
编译了几个小时之后又报错了,也不知道怎么改。
重新编译了下又成功了。
3)安装
如果编译是成功的话,可以执行安装了,python2 buildscripts/scons.py --prefix=/opt/mongo install。这里32位机要加上--wiredtiger=off,不然会报错。
不想编译的话也可以选择下载已经编译好的安装包,支持32位机的最高版本为3.2。
安装过程中报了个openSSL的错误,重新安装后又没有报错。可是运行mongod失败,还是没有成功安装。最后还是用编译好的安装包,无需bulid,直接运行./bin/mongod即可。
4、设置数据路径
/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)。data/db不会自动新增,需要手动建立:mkdir -p /data/db
5、启动mongodb服务
1)mongod
./bin/mongod,然后报错了:
需增加option,./mongod --storageEngine=mmapv1 (--journal,可选),顺利启动,等待连接。
2)HTTP用户界面
3.4及更早版本由此功能,./mongod --rest,然后在浏览器中输入:http://localhost:27017
6、连接服务器
使用 MongoDB shell,./mongo。
注:一定要重新打开个终端运行。
7、连接数据库
mongodb://[username:password@]host1[:port1][,host2[:port2],……[,hostn[:postn]]][/[database][?options]]
另:使用过程中遇到问题
1、启动时报错,无法启动
[initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
解决方法:删除数据存放目录(默认为/data/db)中的mongod.lock文件
删除后依然报错
网上说造成的原因是mongodb异常关闭导致,然而之前使用的时候都是正常关闭的,应该是因为无法打开mongod.lock导致,发现原来是普通用户没有权限(mongod和mongod.lock普通用户都只有r权限,不知道是缺乏哪个权限引起的问题),改用管理员权限后就能顺利启动mongodb。