转自:http://www.codesky.net/article/200909/175483.html
CouchDB现在很是火热,已经获得了IBM的资助,成为Apache下的一个子项目, CouchDB是用Erlang开发,安装平台采用的是Ubuntu, 但应该也可以在其他Linux平台上使用
先下载CouchDB安装文件,源去CouchDB的官网下吧,版本为apache-couchdb-1.6.0.tar.gz
http://couchdb.apache.org/downloads.html
可能由于CouchDB是一个新的项目,Debian的仓库中还未收录,因此通过apt是无法找到的,所以这里就采用源码包的形式编译安装,是CouchDB的依赖包
sudo apt-get build-dep couchdb
sudo apt-get install libmozjs-dev libicu-dev libcurl4-gnutls-dev libtool(在ubuntu14.04下可能会提示libmozjs-dev不存在,可以忽略)
上面需要说明下的是在CouchDB的README中说是要安装libicu38, 但shitou在安装时报错说米有找到,后来apt-file search libicu后才发现不是libicu38,反倒有libicu36的包,装吧
2.解压缩
tar -zxvf apache-couchdb-1.6.0.tar.gz
3.开始安装
cd apache-couchdb-0.9.1
./configure
make
sudo make install
OK, 安装完毕
官方推荐为了安全的因素不要用root来运行CouchDB, 因此需要单独建立用户
4.启动couchdb
sudo couchdb
5.访问:http://127.0.0.1:5984/_utils/
-b为后台运行CouchDB服务
-d为关闭couchdb服务
CouchDB默认的配置文件在/usr/local/couchdb/etc/couchdb/couch.ini中, 端口为5984
紧接着赶紧测试下啦,shitou用的是ruby, 连接的库用的是官方网站的代码, couchdb_ruby.rb:(以下没有试验过)
require 'net/http'
module Couch
class Server
def initialize(host, port, options = nil)
@host = host;
@port = port;
@options = options;
end
def delete(uri)
request(Net::HTTP::Delete.new(uri))
end
def get(uri)
request(Net::HTTP::Get.new(uri))
end
def put(uri, json)
req = Net::HTTP::Put.new(uri)
req["content-type"] = "application/json"
req.body = json
request(req)
end
def post(uri, json)
req = Net::HTTP::Post.new(uri)
req["content-type"] = "application/json"
req.body = json
request(req)
end
def request(req)
res = Net::HTTP.start(@host, @port) {|http|
http.request(req)
}
if (not res.kind_of?(Net::HTTPSuccess))
handle_error(req, res)
end
res
end
private
def handle_error(req, res)
e = RuntimeError.new("#{res.code}:#{res.message}nMETHOD:" +
"#{req.method}nURI:#{req.path}n#{res.body}")
raise e
end
end
end
启动报错:
$ bin/couchdb
Apache CouchDB 0.9.0a691361-incubating (LogLevel=info) is starting.
{"init terminating in do_boot",{{badmatch,{error,shutdown}},[{couch_server_sup,start_server,1},{erl_eval,do_apply,5},{erl_eval,exprs,5},{init,start_it,1},{init,start_em,1}]}}
Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
查了一下官方wiki:
原来是安装文件夹的权限问题
解决办法:
sudo adduser couchdb
chown -R couchdb:couchdb /usr/local/etc/couchdb
chown -R couchdb:couchdb /usr/local/var/lib/couchdb
chown -R couchdb:couchdb /usr/local/var/log/couchdb
chown -R couchdb:couchdb /usr/local/var/run
chmod -R 0770 /usr/local/etc/couchdb
chmod -R 0770 /usr/local/var/lib/couchdb
chmod -R 0770 /usr/local/var/log/couchdb
chmod -R 0770 /usr/local/var/run
再此启动,看到欢迎界面,所有的testsuite run success,大功告成!
启动CouchDB后就可以正常使用了,感觉CouchDB用起来还是蛮简单快捷的, 提供几乎现在所有的语言支持,希望CouchDB发展越来越好。