Ubuntu下安装Apache CouchDB

claytang 2009-09-10

CouchDB现在很是火热,已经获得了IBM的资助,成为Apache下的一个子项目, CouchDB是用Erlang开发,安装平台采用的是Ubuntu, 但应该也可以在其他Linux平台上使用

先下载CouchDB安装文件,源去CouchDB的官网下吧,版本为0.9.1

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

上面需要说明下的是在CouchDB的README中说是要安装libicu38, 但shitou在安装时报错说米有找到,后来apt-file search libicu后才发现不是libicu38,反倒有libicu36的包,装吧

2.解压缩

tar -zxvf apache-couchdb-0.9.1.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发展越来越好。

相关推荐