新购置了一台阿里云(CentOS7 64),要在上面安装MongoDB 3.0, 这里记录一下整个安装的过程,以供以后参考:
开始都是使用root操作的:
1. 使用yum 安装numactl
yum install -y numactl
2. 安装mongoDB,(参考的官网:http://docs.mongodb.org/master/tutorial/install-mongodb-on-red-hat/)
a. 添加mongoDB的源:新建一个文件/etc/yum.repos.d/mongodb-org-3.0.repo,内容如下:
[mongodb-org-3.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/ gpgcheck=0 enabled=1
b. 用yum安装mongoDB
yum install -y mongodb-org
安装完成后,有2个目录要注意:
/var/lib/mongo --- 数据库的数据存放目录
/var/log/mongodb --- mongoDB的运行日志文件
还有一个配置文件要注意:
/etc/mongod.conf --- mongoDB的配置项都在里面
用yum安装,会帮我们做好mongoDB的启动脚本:
/etc/init.d/mongod
有了这个启动脚本,我们可以用如下的命令来操作我们的mongoDB:
service mongod start - 启动mongoDB service mongod stop - 关闭mongoDB service mongod restart - 重启mongoDB
但是现在还不急启动,因为不建议用root来启动我们的mongoDB, 所以我新建了一个新的账户(mongodb)专门用来启动mongoDB,怎么在CentOS下建立新账户,我这里就不记录了,应该都会。
新账户建立好以后,我切换到这个账户(mongodb)下,使用 sudo service mongod start启动,要求输入mongodb这个账户的密码,密码输入完成后,结果出错:
mongodb不在sudoers文件中。此事将被报告。
这个是由于sudo命令可以让你以root身份执行命令,来完成一些我们这个帐号完成不了的任务。其实并非所有用户都能够执行sudo,因为有权限的用户都在/etc/sudoers中呢,所以我们修改这个文件,必须切换到root用户了,在root ALL=(ALL:ALL) ALL 后面加上了一段,
root ALL=(ALL:ALL) ALL mongodb ALL=(ALL:ALL) ALL
这样再切换回mongodb启动, sudo service mongod start,可以正常启动了,启动的同时,用taill看着log文件,看到NETWORK [initandlisten] connection accepted from 127.0.0.1:46370 #1 (1 connection now open),就是启动ok了。
然后,我们执行mongo命令链接服务器, 会出来如下警告:
2015-09-11T13:46:11.119+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2015-09-11T13:46:11.119+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2015-09-11T13:46:11.119+0800 I CONTROL [initandlisten] 2015-09-11T13:46:11.120+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2015-09-11T13:46:11.120+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2015-09-11T13:46:11.120+0800 I CONTROL [initandlisten] 2015-09-11T13:46:11.120+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
这些警告是干什么的,我不记录了,网上可以查到,我只记录我怎么解决的:
1. 前2个警告,打开那个启动脚本 /etc/init.d/mongod, 在“start()” 前加了一段(start就是启动函数):
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
2. 第3个警告,soft rlimits too low , 进入/etc/security/limits.d目录,修改20-nproc.conf文件(不一定是这个)
* soft nproc 4096(修改这个数字到32768) root soft nproc unlimited
注意,这里修改保存,请使用root账户了.
最后,我们重新切换回mongodb用户,sudo service mongod restart(重启服务),启动完成后, 再用mongo命令连接服务器,没有警告了,大功告成!
[mongodb@iZ114z54nuyZ init.d]$ mongo MongoDB shell version: 3.0.6 connecting to: test