CentOS6 mininal 安裝CouchDB2 詳細(xì)版
couchdb官網(wǎng):http://couchdb.apache.org/
安裝依賴
-Erlang OTP (>=R61B03, =<19.x)-ICU-OpenSSL-Mozilla SpiderMonkey (1.8.5)-GNU Make-GNU Compiler Collection-libcurl-help2man-Python (>=2.7)fordocs-Python Sphinx (>=1.1.3)
參考教程:http://docs.couchdb.org/en/2.0.0/install/unix.html
# 初始設(shè)置,避免不必要的權(quán)限問題/etc/init.d/iptablesstopsetenforce0sed -i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config# 安裝依賴yum -yupdateyum -ygroupinstall"Development Tools""Development Libraries"rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmyum install autoconf automake curl-devel help2man libicu-devel libtoolperl-Test-Harness wget libicu-devel curl-devel ncurses-devel libtool libxslt fop java-1.7.0-openjdk java-1.7.0-openjdk-devel unixODBC unixODBC-develvimopenssl-devel
源碼安裝erlang
yum install erlang-asn1 erlang-erts erlang-eunit erlang erlang-os_mon erlang-xmerlwget http://erlang.org/download/otp_src_19.3.tar.gz? #滿足依賴的最新版erlangtar -xvf otp_src_19.3.tar.gzcd otp_src_19.3./configure && makemake install
源碼安裝 js-devel
js-devel-1.8.5 # 無yum安裝包
wget http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gzcdjs-1.8.5/js/src./configure && makesudo make install
安裝autoconf-archive
配置puias-computational.repo 安裝autoconf-arch
vim /etc/yum.repos.d/puias-computational.repo[PUIAS_6_computational]name=PUIAS computational Base$releasever-$basearchmirrorlist=http://puias.math.ias.edu/data/puias/computational/$releasever/$basearch/mirrorlistgpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puiasInstall autoconf-archive rpm package:yum install autoconf-archive -y
源碼安裝CouchDB
wget http://mirror.bit.edu.cn/apache/couchdb/source/2.0.0/apache-couchdb-2.0.0.tar.gztar zxvf apache-couchdb-2.0.0.tar.gzcdapache-couchdb-2.0.0./configuremakerelease? # 這里有報(bào)錯(cuò)柴灯,根據(jù)解決方法修改完成之后重新makerelease,在文章末尾
添加用戶啟動(dòng)couchdb
# groupadd CouchDB Administrator# adduser --system --no-create-home --shell /bin/bash --group --gecos "CouchDB Administrator" couchdb? # 默認(rèn)CouchDB Administrator不存在胆萧,官網(wǎng)命令有點(diǎn)坑# - adduser: group '--gecos' does not existadduser --system--no-create-home --shell /bin/bash -c"CouchDB Administrator"couchdb# 使用此條命令mv /usr/local/src/apache-couchdb-2.0.0/rel/couchdb /usr/local/chown-R couchdb:couchdb /usr/local/couchdb# find /usr/local/couchdb -type d -exec chmod 0770 {} \;# chmod 0644 /usr/local/couchdb/etc/*
配置couchdb栏账,特別重要
vim /usr/local/couchdb/etc/vm.args-name couchdb@n1couchdb.aniu.so> 注意:前提時(shí)設(shè)置系統(tǒng)需要設(shè)置hostname孙乖,修改完成系統(tǒng)hosts文件為0.0.0.0localhost localhost.localdomain n1couchdb.aniu.so#0.0.0.0localhost localhost.localdomain n1couchdb.aniu.so192.168.0.154n1couchdb.aniu.sohostname n1couchdb.aniu.sosed -i 's/localhost.localdomain/n1couchdb.aniu.so/g' /etc/sysconfig/network> 上面幾步操作是修改hostname销睁,方便識(shí)別菌仁,為后面配置couchdb集群方便# -kernel inet_dist_listen_min9100# -kernel inet_dist_listen_max9200> 上面兩個(gè)參數(shù)暫時(shí)不用汹买,配置集群的時(shí)候在使用# 修改couchdb啟動(dòng)時(shí)默認(rèn)監(jiān)聽的ip佩伤,默認(rèn)127.0.0.1,不能通過瀏覽器進(jìn)行初始化設(shè)置晦毙,改為0.0.0.0sed -i 's/127.0.0.1/0.0.0.0/g' /usr/local/couchdb/etc/default.ini
配置完成之后使用couchdb用戶啟動(dòng)couchdb
su- couchdbcd/usr/local/couchdb./bin/couchdb
啟動(dòng)成功界面如下:
[info]2017-07-04T13:09:39.587046Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch_log startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.593768Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application folsom startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.649564Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch_stats startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.649666Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application khash startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.662118Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch_event startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.670377Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application ibrowse startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.678054Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application ioq startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.678117Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application mochiweb startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.678238Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application oauth startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.689266Z couchdb@n1couchdb.aniu.so<0.210.0> -------- Apache CouchDB2.0.0isstarting.[info]2017-07-04T13:09:39.689396Z couchdb@n1couchdb.aniu.so<0.211.0> -------- Starting couch_sup[info]2017-07-04T13:09:39.937994Z couchdb@n1couchdb.aniu.so<0.210.0> -------- Apache CouchDBhasstarted. Timetorelax.[info]2017-07-04T13:09:39.938230Z couchdb@n1couchdb.aniu.so<0.210.0> -------- Apache CouchDBhasstartedonhttp://0.0.0.0:5986/[info]2017-07-04T13:09:39.938366Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.938520Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application ets_lru startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:39.953625Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application rexi startedonnode'couchdb@n1couchdb.aniu.so'[error]2017-07-04T13:09:40.065167Z couchdb@n1couchdb.aniu.so<0.293.0> -------- ** System runningtouse fully qualified hostnames **** Hostname localhostisillegal **[info]2017-07-04T13:09:40.099794Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application mem3 startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.099886Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application fabric startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.126321Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application chttpd startedonnode'couchdb@n1couchdb.aniu.so'[notice]2017-07-04T13:09:40.145151Z couchdb@n1couchdb.aniu.so<0.328.0> -------- chttpd_auth_cachechangeslistener died database_does_not_exist at mem3_shards:load_shards_from_db/6(line:327) <= mem3_shards:load_shards_from_disk/1(line:315) <= mem3_shards:load_shards_from_disk/2(line:331) <= mem3_shards:for_docid/3(line:87) <= fabric_doc_open:go/3(line:38) <= chttpd_auth_cache:ensure_auth_ddoc_exists/2(line:187) <= chttpd_auth_cache:listen_for_changes/1(line:134)[error]2017-07-04T13:09:40.145263Z couchdb@n1couchdb.aniu.soemulator -------- Error in process <0.329.0>onnode'couchdb@n1couchdb.aniu.so'withexitvalue:{database_does_not_exist,[{mem3_shards,load_shards_from_db,"_users",[{file,"src/mem3_shards.erl"},{line,327}]},{mem3_shards,load_shards_from_disk,1,[{file,"src/mem3_shards.erl"},{line,315}]},{mem3_shards,load_shards_from_disk,2,[{file,"src/mem3_shards.erl"},{line,331}]},{mem3_shards,for_docid,3,[{file,"src/mem3_shards.erl"},{line,87}]},{fabric_doc_open,go,3,[{file,"src/fabric_doc_open.erl"},{line,38}]},{chttpd_auth_cache,ensure_auth_ddoc_exists,2,[{file,"src/chttpd_auth_cache.erl"},{line,187}]},{chttpd_auth_cache,listen_for_changes,1,[{file,"src/chttpd_auth_cache.erl"},{line,134}]}]}[info]2017-07-04T13:09:40.151849Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch_index startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.151985Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch_mrview startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.152078Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch_plugins startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.193218Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch_replicator startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.193271Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application couch_peruser startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.205124Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application ddoc_cache startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.225182Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application global_changes startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.225319Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application jiffy startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.233555Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application mango startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.241861Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application setup startedonnode'couchdb@n1couchdb.aniu.so'[info]2017-07-04T13:09:40.241950Z couchdb@n1couchdb.aniu.so<0.9.0> -------- Application snappy startedonnode'couchdb@n1couchdb.aniu.so'[notice]2017-07-04T13:09:45.145647Z couchdb@n1couchdb.aniu.so<0.328.0> -------- chttpd_auth_cachechangeslistener died database_does_not_exist at mem3_shards:load_shards_from_db/6(line:327) <= mem3_shards:load_shards_from_disk/1(line:315) <= mem3_shards:load_shards_from_disk/2(line:331) <= mem3_shards:for_docid/3(line:87) <= fabric_doc_open:go/3(line:38) <= chttpd_auth_cache:ensure_auth_ddoc_exists/2(line:187) <= chttpd_auth_cache:listen_for_changes/1(line:134)[error]2017-07-04T13:09:45.145807Z couchdb@n1couchdb.aniu.soemulator -------- Error in process <0.455.0>onnode'couchdb@n1couchdb.aniu.so'withexitvalue:{database_does_not_exist,[{mem3_shards,load_shards_from_db,"_users",[{file,"src/mem3_shards.erl"},{line,327}]},{mem3_shards,load_shards_from_disk,1,[{file,"src/mem3_shards.erl"},{line,315}]},{mem3_shards,load_shards_from_disk,2,[{file,"src/mem3_shards.erl"},{line,331}]},{mem3_shards,for_docid,3,[{file,"src/mem3_shards.erl"},{line,87}]},{fabric_doc_open,go,3,[{file,"src/fabric_doc_open.erl"},{line,38}]},{chttpd_auth_cache,ensure_auth_ddoc_exists,2,[{file,"src/chttpd_auth_cache.erl"},{line,187}]},{chttpd_auth_cache,listen_for_changes,1,[{file,"src/chttpd_auth_cache.erl"},{line,134}]}]}
查看couchdb進(jìn)程
[root@n1couchdb ~]# ps -ef | grep couchdbcouchdb35821020:59 ?? ? ? ? 00:00:00 /usr/local/couchdb/bin/../erts-8.3/bin/epmd -daemonroot38043789021:06 pts/2? ? 00:00:00 su - couchdbcouchdb38053804021:06 pts/2? ? 00:00:00 -bashcouchdb39013805321:09 pts/2? ? 00:00:04 /usr/local/couchdb/bin/../erts-8.3/bin/beam.smp -K true -A16-Bd -- -root /usr/local/couchdb/bin/.. -progname couchdb -- -home /home/couchdb -- -boot /usr/local/couchdb/bin/../releases/2.0.0/couchdb -name couchdb@n1couchdb.aniu.so -setcookie monster -kernel error_logger silent -sasl sasl_error_logger false -noshell -noinput -kernel inet_dist_listen_min9100-kernel inet_dist_listen_max9200-config /usr/local/couchdb/bin/../releases/2.0.0/sys.configcouchdb39283901021:09 ?? ? ? ? 00:00:00 erl_child_setup 1024couchdb39343928021:09 ?? ? ? ? 00:00:00 sh -s disksupcouchdb39363928021:09 ?? ? ? ? 00:00:00 /usr/local/couchdb/bin/../lib/os_mon-2.4.2/priv/bin/memsupcouchdb39373928021:09 ?? ? ? ? 00:00:00 /usr/local/couchdb/bin/../lib/os_mon-2.4.2/priv/bin/cpu_supcouchdb39383928021:09 ?? ? ? ? 00:00:00 inet_gethost 4couchdb39393938021:09 ?? ? ? ? 00:00:00 inet_gethost 4root39613945021:12 pts/3? ? 00:00:00 grep couchdb[root@n1couchdb ~]# netstat -nlptActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address? ? ? ? ? ? ? Foreign Address? ? ? ? ? ? State? ? ? PID/Program nametcp000.0.0.0:5984? ? ? ? ? ? ? ? 0.0.0.0:*? ? ? ? ? ? ? ? ? LISTEN? ? ? 4355/beam.smptcp000.0.0.0:5986? ? ? ? ? ? ? ? 0.0.0.0:*? ? ? ? ? ? ? ? ? LISTEN? ? ? 4355/beam.smptcp000.0.0.0:4369? ? ? ? ? ? ? ? 0.0.0.0:*? ? ? ? ? ? ? ? ? LISTEN? ? ? 3582/epmd
檢查couchdb是否正常工作
[root@n1couchdb ~]# curl -I http://0.0.0.0:5984/_utils/index.htmlHTTP/1.1 200 OKCache-Control: private, must-revalidateContent-Length: 1886Content-Security-Policy:default-src'self';img-src'self'data:;font-src'self';script-src'self''unsafe-eval';style-src'self''unsafe-inline';Content-Type: text/htmlDate: Tue, 04 Jul 2017 13:26:40 GMTlast-modified: Tue, 04 Jul 2017 12:43:17 GMTServer: CouchDB/2.0.0 (Erlang OTP/19)
單點(diǎn)情況下通過瀏覽器訪問
http://192.168.0.154:5984/_utils/#verifyinstall生巡,進(jìn)行初始化設(shè)置,如下圖:
這里初始設(shè)置 username: admin password: password ,方便記憶,后面需要再改
登錄成功见妒,配置單節(jié)點(diǎn)
CouchDB管理頁面還有許多操作颗管,這里就不過多演示
安裝過程中報(bào)錯(cuò)修復(fù)
ERROR: compile failed while processing /usr/local/src/apache-couchdb-2.0.0/src/couch: rebar_abort
解決報(bào)錯(cuò):
cd/usr/local/src/apache-couchdb-2.0.0egrep -r js-1.8.5*vim +106src/couch/rebar.config.script{"linux",? CouchJSPath, CouchJSSrc, [{env, [{"CFLAGS", JS_CFLAGS ++" -DXP_UNIX -I/usr/include/js"}, {"LDFLAGS", JS_LDFLAGS ++" -lm"}]}]},改為:{"linux",? CouchJSPath, CouchJSSrc, [{env, [{"CFLAGS", JS_CFLAGS ++" -DXP_UNIX -I/usr/local/include/js"}, {"LDFLAGS", JS_LDFLAGS ++" -lm"}]}]},# 根本原因就是couchdb編譯的時(shí)候找到默認(rèn)的js# 還有種方式就是做軟鏈接ln -s/usr/local/include/js/usr/include/j# 這種方法尚未嘗試踪古,修改完成就可以繼續(xù)編譯啦
安裝依賴缺失報(bào)錯(cuò)
[root@localhost apache-couchdb-2.0.0]# make releaseUncaughterrorinrebar_core: {'EXIT',? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {undef,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [{crypto,start,[],[]},? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {rebar,run_aux,2,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [{file,"src/rebar.erl"},{line,212}]},? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {rebar,main,1,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [{file,"src/rebar.erl"},{line,58}]},? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {escript,run,2,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [{file,"escript.erl"},{line,760}]},? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {escript,start,1,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [{file,"escript.erl"},{line,277}]},? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {init,start_em,1,[]},? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {init,do_boot,3,[]}]}}make: *** [couch]Error1
次報(bào)錯(cuò)是編譯erlang前沒安裝openssl-devel瞎惫,安裝openssl-devel重新編譯erlang
安裝完成
WARN:'generate'commanddoesnotapplytodirectory/usr/local/src/apache-couchdb-2.0.0... done? ? You can now copytherel/couchdbdirectoryanywhereonyoursystem.? ? Start CouchDBwith./bin/couchdbfromwithinthatdirectory.
下面是程序本身BUG
[notice]2017-07-04T13:18:55.255565Z couchdb@n1couchdb.aniu.so<0.328.0> -------- chttpd_auth_cachechangeslistener died database_does_not_exist at mem3_shards:load_shards_from_db/6(line:327) <= mem3_shards:load_shards_from_disk/1(line:315) <= mem3_shards:load_shards_from_disk/2(line:331) <= mem3_shards:for_docid/3(line:87) <= fabric_doc_open:go/3(line:38) <= chttpd_auth_cache:ensure_auth_ddoc_exists/2(line:187) <= chttpd_auth_cache:listen_for_changes/1(line:134)[error]2017-07-04T13:18:55.255823Z couchdb@n1couchdb.aniu.soemulator -------- Error in process <0.9372.0>onnode'couchdb@n1couchdb.aniu.so'withexitvalue:{database_does_not_exist,[{mem3_shards,load_shards_from_db,"_users",[{file,"src/mem3_shards.erl"},{line,327}]},{mem3_shards,load_shards_from_disk,1,[{file,"src/mem3_shards.erl"},{line,315}]},{mem3_shards,load_shards_from_disk,2,[{file,"src/mem3_shards.erl"},{line,331}]},{mem3_shards,for_docid,3,[{file,"src/mem3_shards.erl"},{line,87}]},{fabric_doc_open,go,3,[{file,"src/fabric_doc_open.erl"},{line,38}]},{chttpd_auth_cache,ensure_auth_ddoc_exists,2,[{file,"src/chttpd_auth_cache.erl"},{line,187}]},{chttpd_auth_cache,listen_for_changes,1,[{file,"src/chttpd_auth_cache.erl"},{line,134}]}]}
作為單個(gè)節(jié)點(diǎn)運(yùn)行2.0時(shí)驮审,它不會(huì)在啟動(dòng)時(shí)創(chuàng)建系統(tǒng)數(shù)據(jù)庫(kù),必須手動(dòng)執(zhí)行此操作:
curl -XPUThttp://0.0.0.0:5984/_userscurl -XPUThttp://0.0.0.0:5984/_replicatorcurl -XPUThttp://0.0.0.0:5984/_global_changes
參考教程
http://guide.couchdb.org/draft/security.html
http://docs.couchdb.org/en/latest/install/setup.html
https://medium.com/linagora-engineering/setting-up-a-couchdb-2-cluster-on-centos-7-8cbf32ae619f
http://docs.couchdb.org/en/2.0.0/install/unix.html
https://issues.apache.org/jira/browse/COUCHDB-2995# 最重要報(bào)錯(cuò)修復(fù)
http://docs.couchdb.org/en/2.0.0/cluster/setup.html#the-cluster-setup-wizard