Tag Archives: CouchDB noSQL

在CentOS 5.4上安装CouchDB

CouchDB一种半结构化面向文档的分布式,高容错的数据库系统,具体的可以参见其网站上的文档,以及这里的一篇技术简介的翻译。CouchDB在Ubuntu下安装非常方便,只需要使用sudo apt-get install couchdb即可,我以为在CentOS中也会比较容易,没想到却遇到了比较多的问题。主要包括:

  1. CentOS的安装源里不包含CouchDB
  2. CouchDB需要Erlang的运行时支持,CentOS的安装源里也没有Erlang

OK,我们一步一步来搞定在CentOS下安装CouchDB。首先需要安装Erlang,却Erlang的官方网站下载源码,然后在本地编译安装:具体的脚本为:

   1: wget http://www.erlang.org/download/otp_src_R13B02-1.tar.gz
   2: tar–xzvf otp_src_R13B02-1.tar.gz
   3: cd otp_src_R13B02-1
   4: ./configure
   5: make && make install

中途有可能会遇到一些依赖的问题,比如缺少icu、ncurses、wxWindows等,前面几个大略都可以从yum时行安装,wxWindows可以不问,如果你之后不准备使用Erlang进行UI编程的话,这些也足够用了。

Erlang安装完成之后,测试一下在bash里erl和erlc能否使用,若能,则这一步就完成了。

接着是安装CouchDB,由于CouchDB里用到了JavaScript,所以其依赖于SpiderMonkey,需要先安装libmozjs这个库,步骤为:

   1: wget ftp://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz
   2: tar–xzvf js-1.8.0-rc1.tar.gz
   3: cd js/src
   4: make BUILD_OPT=1–f Makefile.ref

编译应该不会出什么问题,如果你的机器没有配置编译环境,你可以参考这篇文章进行配置。

可以当我执行make –f Makefile.ref install的时候傻了,没有这个target,好吧,我们自己写脚本安装这个库。代码如下:

   1: #!/bin/bash
   2: mkdir -p /usr/include/mozjs/ -v
   3: cp *.{h,tbl}
   4: /usr/include/mozjs/ -v
   5: cd Linux_All_OPT.OBJ
   6: cp *.h /usr/include/mozjs/ -v
   7: mkdir -p /usr/local/{bin,lib}/ -v
   8: cp js /usr/local/bin/ -v
   9: cp libjs.so /usr/local/lib/ -v

把上面的代码保存成install.sh,并放在src文件夹下,执行一遍即可。

终于可以编译CouchDB了,脚本如下:

   1:
   2: wget http://labs.xiaonei.com/apache-mirror/couchdb/0.10.0/apache-couchdb-0.10.0.tar.gz
   3: tar–xzvf apache-couchdb-0.10.0.tar.gz
   4: cd apache-couchdb-0.10.0
   5: ./configure
   6: make && make install

这次编译应该不会出什么问题,如果出了,也应该是比较好解决的,我们假设你看这篇文章的时候,有这个能力来解决那些小问题。

然后这个时候就安装成功了。接着是配置CouchDB,官方建议不要用root帐户来运行,所以,我们新建一个账户跟组来运行。脚本如下:

   1: groupadd couchdb
   2: useradd couchdb–g couchdb–d /usr/local/var/lib/couchdb
   3: su– couchdb–c “/user/local/bin/couchdb -b”

最后一行是用来启动couchdb的后台进程,如果要停止,把参数从-b改成-d即可。

新版本的配置文件好像是/user/local/etc/couchdb/local.ini,各取所需,自己修改吧。