2013-08-23 2 views
2

포 테이지에서 FreeBSD에 CouchDB 1.3.1을 설치했습니다. 루트 사용자가 시작할 때 find를 실행합니다. 그러나 rc-script로 시작하려고 시도하면 rc-script가 시작되지 않습니다.FreeBSD의 CouchDB가 couchdb 사용자로 시작하지 않습니다.

내가 그러나 릭을하지 않았다 /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() 

다른 내가 루트가 아닌 계정에서 CouchDB를 시작를 만들기 위해 시도 할 수 있습니다?

답변

2

문제가 해결되었습니다. 거기서 그것이 작동하지 않는 몇 가지 이유가 있습니다. 다음은 짧은 버전입니다.

포트를 설치 한 후 couchdb을 루트로 실행하지 마십시오. 그게 권능을 어지럽히는.

quick fix은 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에서 테스트되었습니다.

this blogpost에게 감사의 말은 무엇이 잘못되었는지에 대한 중요한 단서를 포함하고 있기 때문입니다.