2 votes

CouchDB sur FreeBSD ne démarre pas en tant qu'utilisateur couchdb

J'ai installé CouchDB 1.3.1 sur FreeBSD à partir du portage. Il fonctionne bien lorsqu'il est démarré par l'utilisateur Root. Cependant, lorsqu'on essaie de le lancer par rc-script, il ne se lance pas.

J'ai mis les bonnes permissions (couchdb en est le propriétaire) pour /var/log/couchdb /var/run/couchdb y /usr/local/etc/couchdb

Cela n'a pas fait le rick cependant. Je me suis connecté au couchdb compte utilisateur et a essayé de démarrer couchdb. En conséquence, j'ai obtenu ceci :

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

Que puis-je essayer d'autre pour que couchdb démarre à partir d'un compte non-Root ?

2voto

Problème résolu. Il y avait plusieurs raisons pour que ça ne fonctionne pas. Voici la version courte :

Après avoir installé le port, NE PAS exécuter couchdb comme Root. Faire cela bouleverse les permissions.

El solution rapide pour cela, il faudrait supprimer complètement couchdb et le réinstaller. Bien sûr, ce n'est une option que tant qu'il n'y a rien dans la base de données. Le script suivant s'assurera que couchdb est complètement purgé de votre système :

cd /usr/ports/database/couchdb
make deinstall
make clean
rm -rf /var/{db,lib,log,run}/couchdb /usr/local/etc/couchdb/

Après cela, installez à nouveau couchdb et exécutez-le comme il est censé le faire.

cd /usr/ports/database/couchdb
make install clean
service couchdb start

Si la réinstallation n'est pas une option pour vous exécutez le script suivant pour réparer les permissions.

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/

La dernière ligne supprime les permissions pour les utilisateurs autres que couchdb car c'est là que sont stockées toutes les données. Ceci est bien sûr facultatif, mais améliore la sécurité.

Ces solutions ont été testées avec FreeBSD 9.1 et CouchDB 1.3.1 du portage.

Remerciements particuliers à ce blogpost car il contenait des indices vitaux sur ce qui n'allait pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X