在32位的centos上安装32位的mongodb,较于在64位的centos上安装64位的mongodb会麻烦些,现将安装过程记录如下:
我的32位 Centos6.4是新搭建的。安装Mongodb步骤如下:
1、上传32位的mongodb-linux-i686-3.2.3.gz安装包,使用rz命令上传时,报如下信息:
[root@Linz yum.repos.d]# yum -y install lrzsz
Loaded plugins: fastestmirror, refresh-packagekit
解决方法:
步骤1、
vi /etc/yum/pluginconf.d/fastestmirror.conf
[main] enabled=0 //把1改为0 verbose=0 socket_timeout=3 hostfilepath=/var/cache/yum/timedhosts.txt maxhostfileage=10 maxthreads=15 #exclude=.gov, facebook步骤2、
#vi /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=0debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1 #将plugins的值修改为0installonly_limit=5修改好配置后:
yum –y install lrzsz
rz上传mongodb文件
2、在/usr/local目录下创建一个mongodb文件夹,然后把mongodb的安装包解压到mongodb文件中
3、在第二步创建的mongodb目录中:
创建一个存放数据的文件夹data和日志文件logs
cd /usr/local/mongodbmkdir datatouch logs
4、启动mongodb
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
在安装过程中,出现了一些错误,记录如下:
当第1,2,3步完成后,执行第4步启动mongodb的操作,提示如下图所示错误:
第一反应是用户有没有执行的权限,查看当前用户信息:
没发现异常,再次反应是不是文件没有执行的权限:
查看64位还是32位:
getconf LONG_BIT
由此得知下载的mongodb位数和系统位数不对
下载32位的mongodb,再次重复上述步骤1到4,在进行第4步操作的时候,出现如下图所示错误:
调整启动命令,如下:
再次调整启动命令,如下:
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --journal --storageEngine=mmapv1 --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
常用的启动参数:
--dbpath的意思是指定存储数据的文件夹 --logpath的意思是指定日志存储文件 --logappend的意思是日志以增加方式产生 --port指定端口,如果不写的话,默认是27017 --fork 代表后台运行查看系统中mongodb的进程:
在/usr/local/mongodb/bin这个目录下执行mongo可执行文件,如下图:
至此,mongodb安装启动成功。
5、使用MongoChef连接虚拟机上的mongodb,出现如下错误:
远程连接mongodb时,27017端口连接不上的解决办法
1、mongodb的配置文件中的bind_ip 默认为127.0.0.1,默认只有本机可以连接。
此时,需要将bind_ip配置为0.0.0.0,表示接受任何IP的连接,这一步是关键。
2、防火墙阻止了27017端口。
这一步要根据操作系统来决定如何操作,我使用的是CentOS 6.4:
关闭虚拟机防火墙:
关闭命令:service iptables stop永久关闭防火墙:chkconfig iptables off两个命令同时运行,运行完成后,查看防火墙状态service iptables status再次尝试使用mongochef连接虚拟机上的mongodb:
6、在/bin目录下配置mongodb启动脚本
#!/bin/bash
pid=`ps -ef|grep /usr/local/mongodb/bin/mongod|grep -v "grep" | awk '{print $2}'`if [ $pid ]thenecho "mongodb is running..."else/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --journal --storageEngine=mmapv1 --logpath=/usr/local/mongodb/logs --logappend --port=27017 --forkecho 'mongodb started!'fi
参考文档:
http://blog.sina.com.cn/s/blog_7e513d7e01015j9b.html
http://coderschool.cn/1709.html