FreeBSD上的CouchDB不';不能以couchdb用户身份启动

FreeBSD上的CouchDB不';不能以couchdb用户身份启动,couchdb,freebsd,Couchdb,Freebsd,我已经从portage在FreeBSD上安装了CouchDB 1.3.1。它由根用户启动时运行find。但是,当试图通过rc脚本启动它时,它不会出现 我已经为/var/log/couchdb/var/run/couchdb和/usr/local/etc/couchdb设置了正确的权限(couchdb拥有它) 然而,这并没有起作用。我已登录到couchdb用户帐户并尝试启动couchdb。结果我得到了这个: Apache CouchDB 1.3.1 (LogLevel=info) is start

我已经从portage在FreeBSD上安装了CouchDB 1.3.1。它由根用户启动时运行find。但是,当试图通过rc脚本启动它时,它不会出现

我已经为
/var/log/couchdb
/var/run/couchdb
/usr/local/etc/couchdb
设置了正确的权限(couchdb拥有它)

然而,这并没有起作用。我已登录到
couchdb
用户帐户并尝试启动couchdb。结果我得到了这个:

Apache CouchDB 1.3.1 (LogLevel=info) is starting.
[error] [<0.97.0>] {error_report,<0.30.0>,
                    {<0.97.0>,crash_report,
                     [[{initial_call,{couch_file,init,['Argument__1']}},
                       {pid,<0.97.0>},
                       {registered_name,[]},
                       {error_info,
                        {exit,
                         {{badmatch,{error,eacces}},
                          [{couch_file,init,1,
                            [{file,"couch_file.erl"},{line,314}]},
                           {gen_server,init_it,6,
                            [{file,"gen_server.erl"},{line,304}]},
                           {proc_lib,init_p_do_apply,3,
                            [{file,"proc_lib.erl"},{line,227}]}]},
                         [{gen_server,init_it,6,
                           [{file,"gen_server.erl"},{line,328}]},
                          {proc_lib,init_p_do_apply,3,
                           [{file,"proc_lib.erl"},{line,227}]}]}},
                       {ancestors,[<0.96.0>]},
                       {messages,[]},
                       {links,[#Port<0.2176>,<0.96.0>]},
                       {dictionary,[]},
                       {trap_exit,true},
                       {status,running},
                       {heap_size,610},
                       {stack_size,24},
                       {reductions,478}],
                      [{neighbour,
                        [{pid,<0.96.0>},
                         {registered_name,[]},
                         {initial_call,{erlang,apply,2}},
                         {current_function,{proc_lib,sync_wait,2}},
                         {ancestors,[]},
                         {messages,
                          [{ack,<0.97.0>,
                            {error,
                             {{badmatch,{error,eacces}},
                              [{couch_file,init,1,
                                [{file,"couch_file.erl"},{line,314}]},
                               {gen_server,init_it,6,
                                [{file,"gen_server.erl"},{line,304}]},
                               {proc_lib,init_p_do_apply,3,
                                [{file,"proc_lib.erl"},{line,227}]}]}}}]},
                         {links,[<0.86.0>,<0.97.0>]},
                         {dictionary,[]},
                         {trap_exit,false},
                         {status,runnable},
                         {heap_size,233},
                         {stack_size,20},
                         {reductions,28}]}]]}}
{"init terminating in do_boot",{{badmatch,{error,{bad_return,{{couch_app,start,[normal,["/usr/local/etc/couchdb/default.ini","/usr/local/etc/couchdb/local.ini"]]},{'EXIT',{{badmatch,{error,shutdown}},[{couch_server_sup,start_server,1,[{file,"couch_server_sup.erl"},{line,98}]},{application_master,start_it_old,4,[{file,"application_master.erl"},{line,274}]}]}}}}}},[{couch,start,0,[{file,"couch.erl"},{line,18}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}
init terminating in do_boot ()
apachecouchdb1.3.1(LogLevel=info)正在启动。 [错误][{错误报告,, {,撞车报告, [[{initial_call,{coach_file,init,['Argument__1']}, {pid,}, {注册名称,[]}, {错误信息, {退出, {{badmatch,{error,eacces}}, [{coach_文件,init,1, [{file,“coach_file.erl”},{line,314}]}, {gen_server,init_it,6, [{file,“gen_server.erl”},{line,304}]}, {proc_lib,init_p_do_apply,3, [{file,“proc_lib.erl”},{line,227}]}, [{gen_server,init_it,6, [{file,“gen_server.erl”},{line,328}]}, {proc_lib,init_p_do_apply,3, [{file,“proc_lib.erl”},{line,227}]}, {祖先,[]}, {消息,[]}, {links,[#Port,]}, {字典,[]}, {trap_exit,true}, {状态,正在运行}, {heap_size,610}, {堆栈大小,24}, {减少,478}], [{邻居, [{pid,}, {注册名称,[]}, {initial_call,{erlang,apply,2}}, {current_函数,{proc_lib,sync_wait,2}}, {祖先,[]}, {信息, [{ack,, {错误, {{badmatch,{error,eacces}}, [{coach_文件,init,1, [{file,“coach_file.erl”},{line,314}]}, {gen_server,init_it,6, [{file,“gen_server.erl”},{line,304}]}, {proc_lib,init_p_do_apply,3, [{file,“proc_lib.erl”},{line,227}]}}, {links,[,]}, {字典,[]}, {trap_exit,false}, {status,runnable}, {heap_size,233}, {堆栈大小,20}, {减少,28}]}]} {“init终止于do_boot”{{badmatch,{error,{bad_return,{{coach_app,start,[normal,[/usr/local/etc/couchdb/default.ini],“/usr/local/etc/couchdb/local.ini”]},{EXIT',{badmatch,{error,shutdown},{coach_server,start_server,start_server,1,[{file,[{coach server,super.erl},{line,98,old,application,{start,{master 4,}主应用程序,{,{line,274}]}}},[{coach,start,0,[{file,“coach.erl”},{line,18}]},{init,start{it,1,[]},{init,start{em,1,[]} 初始化终止于do_引导()
我还可以尝试从非根帐户启动couchdb吗?

问题已解决。有几个原因导致couchdb无法运行。以下是简短版本:

安装端口后,不要以root用户身份运行
couchdb
。这样做会扰乱权限

chown -R couchdb:couchdb /var/{db,lib,log,run}/couchdb /usr/local/etc/couchdb/
chmod -R ug+rw /var/{db,lib,log,run}/couchdb /usr/local/etc/couchdb/local.ini
chmod -R o-rwx /var/{db,lib,log,run}/couchdb /usr/local/etc/couchdb/
快速修复方法是完全删除couchdb并重新安装。当然,这只是一个选项,只要数据库中没有任何内容。以下脚本将确保couchdb完全从系统中清除:

cd /usr/ports/database/couchdb
make deinstall
make clean
rm -rf /var/{db,lib,log,run}/couchdb /usr/local/etc/couchdb/
之后,再次安装couchdb并按预期运行它

cd /usr/ports/database/couchdb
make install clean
service couchdb start
如果您不选择重新安装请运行以下脚本以修复权限

chown -R couchdb:couchdb /var/{db,lib,log,run}/couchdb /usr/local/etc/couchdb/
chmod -R ug+rw /var/{db,lib,log,run}/couchdb /usr/local/etc/couchdb/local.ini
chmod -R o-rwx /var/{db,lib,log,run}/couchdb /usr/local/etc/couchdb/
最后一行删除了除
couchdb
之外的用户权限,因为所有数据都存储在那里。这当然是可选的,但提高了安全性

这些解决方案已经通过portage的FreeBSD 9.1和CouchDB 1.3.1进行了测试


特别感谢,因为它包含了关于错误的重要线索。

还记得将
/var/lib
上的
chmod a+x
设置为最小值。否则couchdb进程无法遵循自己的符号链接。