在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/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1 #将plugins的值修改为0
installonly_limit=5
修改好配置后:
yum –y install lrzsz
rz上传mongodb文件
2、在/usr/local目录下创建一个mongodb文件夹,然后把mongodb的安装包解压到mongodb文件中
3、在第二步创建的mongodb目录中:
创建一个存放数据的文件夹data和日志文件logs
cd /usr/local/mongodb
mkdir data
touch 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 ]
then
echo "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 --fork
echo 'mongodb started!'
fi
参考文档:
http://blog.sina.com.cn/s/blog_7e513d7e01015j9b.html
http://coderschool.cn/1709.html