2

Portage から FreeBSD に CouchDB 1.3.1 をインストールしました。root ユーザーが起動すると、find が実行されます。ただし、rc-script で起動しようとすると起動しません。

/var/log/couchdb /var/run/couchdbおよび_/usr/local/etc/couchdb

しかし、それはリックをしませんでした。ユーザー アカウントにログインし、couchdbcouchdb を起動しようとしました。その結果、私はこれを得ました:

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 ()

root以外のアカウントからcouchdbを起動するには、他に何ができますか?

4

1 に答える 1

2

問題が解決しました。それが機能しない理由がいくつかあります。短いバージョンは次のとおりです。

ポートをインストールした後は、couchdbroot として実行しないでください。それを行うと、権限が混乱します。

そのための簡単な修正は、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 でテストされています。

何が間違っていたのかについての重要な手がかりが含まれていたので、このブログ投稿に特に感謝します.

于 2013-08-24T09:25:53.203 に答える