Назад | Перейти на главную страницу

Сервис Couchdb выключается через секунду после запуска

У меня проблемы с запуском службы couchdb. Когда я запускаю его, он живет всего секунду или около того, прежде чем выключиться. Вот пример - сначала команда статуса показывает, что она неактивна. При запуске он утверждает, что работает, следующая команда состояния говорит, что он активен, а выдача нового состояния всего через секунду говорит о сбое. В чем дело?

username@myPC:~$ /etc/init.d/couchdb status
? couchdb.service - System-wide CouchDB instance
   Loaded: loaded (/lib/systemd/system/couchdb.service; enabled; vendor preset: enabled)
   Active: failed (Result: start-limit) since to. 2016-01-28 22:56:32 CET; 9min ago
  Process: 2906 ExecStart=/usr/bin/couchdb (code=exited, status=1/FAILURE)
 Main PID: 2906 (code=exited, status=1/FAILURE)

jan. 28 22:56:32 myPC systemd[1]: couchdb.service: Main process exited, code=exited, status=1/FAILURE
jan. 28 22:56:32 myPC systemd[1]: couchdb.service: Unit entered failed state.
jan. 28 22:56:32 myPC systemd[1]: couchdb.service: Failed with result 'exit-code'.
jan. 28 22:56:32 myPC systemd[1]: couchdb.service: Service hold-off time over, scheduling restart.
jan. 28 22:56:32 myPC systemd[1]: Stopped System-wide CouchDB instance.
jan. 28 22:56:32 myPC systemd[1]: couchdb.service: Start request repeated too quickly.
jan. 28 22:56:32 myPC systemd[1]: Failed to start System-wide CouchDB instance.
jan. 28 22:56:32 myPC systemd[1]: couchdb.service: Unit entered failed state.
jan. 28 22:56:32 myPC systemd[1]: couchdb.service: Failed with result 'start-limit'.

username@myPC:~$ /etc/init.d/couchdb start
[ ok ] Starting couchdb (via systemctl): couchdb.service.

username@myPC:~$ /etc/init.d/couchdb status
? couchdb.service - System-wide CouchDB instance
   Loaded: loaded (/lib/systemd/system/couchdb.service; enabled; vendor preset: enabled)
   Active: active (running) since to. 2016-01-28 23:06:34 CET; 367ms ago
 Main PID: 3071 (beam)
   CGroup: /system.slice/couchdb.service
           +-3071 /usr/lib/erlang/erts-7.0/bin/beam -Bd -K true -A 4 -- -root /usr/lib/erlang -progname erl -- -home /var/...

jan. 28 23:06:34 myPC systemd[1]: couchdb.service: Service hold-off time over, scheduling restart.
jan. 28 23:06:34 myPC systemd[1]: Stopped System-wide CouchDB instance.
jan. 28 23:06:34 myPC systemd[1]: Started System-wide CouchDB instance.
jan. 28 23:06:34 myPC couchdb[3071]: {error_logger,{{2016,1,28},{23,6,34}},std_error,"File operation error: eacces....ver."}
jan. 28 23:06:34 myPC couchdb[3071]: {error_logger,{{2016,1,28},{23,6,34}},std_error,"File operation error: eacces....ver."}
jan. 28 23:06:34 myPC couchdb[3071]: =ERROR REPORT==== 29-Jan-2016::00:06:34 ===
jan. 28 23:06:34 myPC couchdb[3071]: File operation error: eacces. Target: /lost+found/ebin. Function: read_file_in...erver.
jan. 28 23:06:34 myPC couchdb[3071]: =ERROR REPORT==== 29-Jan-2016::00:06:34 ===
jan. 28 23:06:34 myPC couchdb[3071]: File operation error: eacces. Target: /root/ebin. Function: read_file_info. Pr...erver.
Hint: Some lines were ellipsized, use -l to show in full.


username@myPC:~$ /etc/init.d/couchdb status
? couchdb.service - System-wide CouchDB instance
   Loaded: loaded (/lib/systemd/system/couchdb.service; enabled; vendor preset: enabled)
   Active: failed (Result: start-limit) since to. 2016-01-28 23:06:35 CET; 1s ago
  Process: 3097 ExecStart=/usr/bin/couchdb (code=exited, status=1/FAILURE)
 Main PID: 3097 (code=exited, status=1/FAILURE)

jan. 28 23:06:35 myPC systemd[1]: couchdb.service: Main process exited, code=exited, status=1/FAILURE
jan. 28 23:06:35 myPC systemd[1]: couchdb.service: Unit entered failed state.
jan. 28 23:06:35 myPC systemd[1]: couchdb.service: Failed with result 'exit-code'.
jan. 28 23:06:35 myPC systemd[1]: couchdb.service: Service hold-off time over, scheduling restart.
jan. 28 23:06:35 myPC systemd[1]: Stopped System-wide CouchDB instance.
jan. 28 23:06:35 myPC systemd[1]: couchdb.service: Start request repeated too quickly.
jan. 28 23:06:35 myPC systemd[1]: Failed to start System-wide CouchDB instance.
jan. 28 23:06:35 myPC systemd[1]: couchdb.service: Unit entered failed state.
jan. 28 23:06:35 myPC systemd[1]: couchdb.service: Failed with result 'start-limit'.

Я не могу найти файлы журнала / stdout / stderr. Похоже, что-то пытается перезапустить couchdb, но терпит неудачу из-за «couchdb.service: время ожидания службы истекло, перезапуск по расписанию». Но почему?

Проблема определяется в этих строках:

jan. 28 23:06:34 myPC couchdb[3071]: =ERROR REPORT==== 29-Jan-2016::00:06:34 ===
jan. 28 23:06:34 myPC couchdb[3071]: File operation error: eacces. Target: /lost+found/ebin. Function: read_file_in...erver.
jan. 28 23:06:34 myPC couchdb[3071]: =ERROR REPORT==== 29-Jan-2016::00:06:34 ===
jan. 28 23:06:34 myPC couchdb[3071]: File operation error: eacces. Target: /root/ebin. Function: read_file_info. Pr...erver.

Он пытается найти каталог ebin с скомпилированными файлами лучей CouchDB, но терпит неудачу из-за проблемы с разрешением (eacces). Однако причина не в разрешениях, а в пути: почему он ищет лучи в каталоге / root? Вероятно, потому, что он не проходит проверку всех остальных параметров (и эта служба работает как root, что плохо).

Единственно возможный ответ - неверно настроен путь к $ ERL_LIBS. Его нужно установить для такого аргумента командной строки луча -env ERL_LIBS $ERL_LIBS:/usr/lib64/couchdb/erlang/lib - обратите внимание, что путь здесь должен быть установлен в соответствии с вашей установкой.