CentOS6 mininal 安裝CouchDB2 詳細版
CentOS6 mininal 安裝CouchDB2 詳細版
couchdb官網: https://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) for docs
- Python Sphinx (>=1.1.3)
# 初始設置,避免不必要的權限問題
/etc/init.d/iptables stop
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 安裝依賴
yum -y update
yum -y groupinstall "Development Tools" "Development Libraries"
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
yum install autoconf automake curl-devel help2man libicu-devel libtool perl-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-devel vim openssl-devel
源碼安裝erlang
yum install erlang-asn1 erlang-erts erlang-eunit erlang erlang-os_mon erlang-xmerl
wget https://erlang.org/download/otp_src_19.3.tar.gz #滿足依賴的最新版erlang
tar -xvf otp_src_19.3.tar.gz
cd otp_src_19.3
./configure && make
make install
源碼安裝 js-devel
js-devel-1.8.5 # 無yum安裝包
wget https://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz
cd js-1.8.5/js/src
./configure && make
sudo 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 - $basearch
mirrorlist=https://puias.math.ias.edu/data/puias/computational/$releasever/$basearch/mirrorlist
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puias
Install autoconf-archive rpm package:
yum install autoconf-archive -y
源碼安裝CouchDB
wget https://mirror.bit.edu.cn/apache/couchdb/source/2.0.0/apache-couchdb-2.0.0.tar.gz
tar zxvf apache-couchdb-2.0.0.tar.gz
cd apache-couchdb-2.0.0
./configure
make release # 這裏有報錯,根據解決方法修改完成之後重新make release,在文章末尾
添加用戶啟動couchdb
# groupadd CouchDB Administrator
# adduser --system --no-create-home --shell /bin/bash --group --gecos "CouchDB Administrator" couchdb # 默認CouchDB Administrator不存在,官網命令有點坑
# - adduser: group '--gecos' does not exist
adduser --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
> 注意:前提時設置係統需要設置hostname,修改完成係統hosts文件為
0.0.0.0 localhost localhost.localdomain n1couchdb.aniu.so
#0.0.0.0 localhost localhost.localdomain n1couchdb.aniu.so
192.168.0.154 n1couchdb.aniu.so
hostname n1couchdb.aniu.so
sed -i 's/localhost.localdomain/n1couchdb.aniu.so/g' /etc/sysconfig/network
> 上麵幾步操作是修改hostname,方便識別,為後麵配置couchdb集群方便
# -kernel inet_dist_listen_min 9100
# -kernel inet_dist_listen_max 9200
> 上麵兩個參數暫時不用,配置集群的時候在使用
# 修改couchdb啟動時默認監聽的ip,默認127.0.0.1,不能通過瀏覽器進行初始化設置,改為0.0.0.0
sed -i 's/127.0.0.1/0.0.0.0/g' /usr/local/couchdb/etc/default.ini
配置完成之後使用couchdb用戶啟動couchdb
su - couchdb
cd /usr/local/couchdb
./bin/couchdb
- 啟動成功界麵如下:
[info] 2017-07-04T13:09:39.587046Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application couch_log started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.593768Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application folsom started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.649564Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application couch_stats started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.649666Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application khash started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.662118Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application couch_event started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.670377Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application ibrowse started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.678054Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application ioq started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.678117Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application mochiweb started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.678238Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application oauth started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.689266Z couchdb@n1couchdb.aniu.so <0.210.0> -------- Apache CouchDB 2.0.0 is starting.
[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 CouchDB has started. Time to relax.
[info] 2017-07-04T13:09:39.938230Z couchdb@n1couchdb.aniu.so <0.210.0> -------- Apache CouchDB has started on https://0.0.0.0:5986/
[info] 2017-07-04T13:09:39.938366Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application couch started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.938520Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application ets_lru started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:39.953625Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application rexi started on node 'couchdb@n1couchdb.aniu.so'
[error] 2017-07-04T13:09:40.065167Z couchdb@n1couchdb.aniu.so <0.293.0> -------- ** System running to use fully qualified hostnames **
** Hostname localhost is illegal **
[info] 2017-07-04T13:09:40.099794Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application mem3 started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.099886Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application fabric started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.126321Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application chttpd started on node 'couchdb@n1couchdb.aniu.so'
[notice] 2017-07-04T13:09:40.145151Z couchdb@n1couchdb.aniu.so <0.328.0> -------- chttpd_auth_cache changes listener 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.so emulator -------- Error in process <0.329.0> on node 'couchdb@n1couchdb.aniu.so' with exit value:
{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 started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.151985Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application couch_mrview started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.152078Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application couch_plugins started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.193218Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application couch_replicator started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.193271Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application couch_peruser started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.205124Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application ddoc_cache started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.225182Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application global_changes started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.225319Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application jiffy started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.233555Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application mango started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.241861Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application setup started on node 'couchdb@n1couchdb.aniu.so'
[info] 2017-07-04T13:09:40.241950Z couchdb@n1couchdb.aniu.so <0.9.0> -------- Application snappy started on node 'couchdb@n1couchdb.aniu.so'
[notice] 2017-07-04T13:09:45.145647Z couchdb@n1couchdb.aniu.so <0.328.0> -------- chttpd_auth_cache changes listener 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.so emulator -------- Error in process <0.455.0> on node 'couchdb@n1couchdb.aniu.so' with exit value:
{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進程
[root@n1couchdb ~]# ps -ef | grep couchdb
couchdb 3582 1 0 20:59 ? 00:00:00 /usr/local/couchdb/bin/../erts-8.3/bin/epmd -daemon
root 3804 3789 0 21:06 pts/2 00:00:00 su - couchdb
couchdb 3805 3804 0 21:06 pts/2 00:00:00 -bash
couchdb 3901 3805 3 21:09 pts/2 00:00:04 /usr/local/couchdb/bin/../erts-8.3/bin/beam.smp -K true -A 16 -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_min 9100 -kernel inet_dist_listen_max 9200 -config /usr/local/couchdb/bin/../releases/2.0.0/sys.config
couchdb 3928 3901 0 21:09 ? 00:00:00 erl_child_setup 1024
couchdb 3934 3928 0 21:09 ? 00:00:00 sh -s disksup
couchdb 3936 3928 0 21:09 ? 00:00:00 /usr/local/couchdb/bin/../lib/os_mon-2.4.2/priv/bin/memsup
couchdb 3937 3928 0 21:09 ? 00:00:00 /usr/local/couchdb/bin/../lib/os_mon-2.4.2/priv/bin/cpu_sup
couchdb 3938 3928 0 21:09 ? 00:00:00 inet_gethost 4
couchdb 3939 3938 0 21:09 ? 00:00:00 inet_gethost 4
root 3961 3945 0 21:12 pts/3 00:00:00 grep couchdb
[root@n1couchdb ~]# netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5984 0.0.0.0:* LISTEN 4355/beam.smp
tcp 0 0 0.0.0.0:5986 0.0.0.0:* LISTEN 4355/beam.smp
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 3582/epmd
檢查couchdb是否正常工作
[root@n1couchdb ~]# curl -I https://0.0.0.0:5984/_utils/index.html
HTTP/1.1 200 OK
Cache-Control: private, must-revalidate
Content-Length: 1886
Content-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/html
Date: Tue, 04 Jul 2017 13:26:40 GMT
last-modified: Tue, 04 Jul 2017 12:43:17 GMT
Server: CouchDB/2.0.0 (Erlang OTP/19)
單點情況下通過瀏覽器訪問
https://192.168.0.154:5984/_utils/#verifyinstall,進行初始化設置,如下圖:
- 這裏初始設置 username: admin password: password ,方便記憶,後麵需要再改
- 登錄成功,配置單節點
CouchDB管理頁麵還有許多操作,這裏就不過多演示
安裝過程中報錯修複
ERROR: compile failed while processing /usr/local/src/apache-couchdb-2.0.0/src/couch: rebar_abort
- 解決報錯:
cd /usr/local/src/apache-couchdb-2.0.0
egrep -r js-1.8.5 *
vim +106 src/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編譯的時候找到默認的js
# 還有種方式就是做軟鏈接
ln -s /usr/local/include/js /usr/include/j # 這種方法尚未嚐試,修改完成就可以繼續編譯啦
安裝依賴缺失報錯
[root@localhost apache-couchdb-2.0.0]# make release
Uncaught error in rebar_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] Error 1
次報錯是編譯erlang前沒安裝openssl-devel,安裝openssl-devel重新編譯erlang
- 安裝完成
WARN: 'generate' command does not apply to directory /usr/local/src/apache-couchdb-2.0.0
... done
You can now copy the rel/couchdb directory anywhere on your system.
Start CouchDB with ./bin/couchdb from within that directory.
下麵是程序本身BUG
[notice] 2017-07-04T13:18:55.255565Z couchdb@n1couchdb.aniu.so <0.328.0> -------- chttpd_auth_cache changes listener 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.so emulator -------- Error in process <0.9372.0> on node 'couchdb@n1couchdb.aniu.so' with exit value:
{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}]}]}
作為單個節點運行2.0時,它不會在啟動時創建係統數據庫,必須手動執行此操作:
curl -X PUT https://0.0.0.0:5984/_users
curl -X PUT https://0.0.0.0:5984/_replicator
curl -X PUT https://0.0.0.0:5984/_global_changes
參考教程
- https://guide.couchdb.org/draft/security.html
- https://docs.couchdb.org/en/latest/install/setup.html
- https://medium.com/linagora-engineering/setting-up-a-couchdb-2-cluster-on-centos-7-8cbf32ae619f
- https://docs.couchdb.org/en/2.0.0/install/unix.html
- https://issues.apache.org/jira/browse/COUCHDB-2995 # 最重要報錯修複
- https://docs.couchdb.org/en/2.0.0/cluster/setup.html
最後更新:2017-07-04 23:02:09