0

我使用出色的iriscouch/build-couchdb repo构建了一个最新版本的 CouchDB ,现在我想在我的 Ubuntu 12.04 服务器上创建一个新贵的工作。

但是,新贵的工作失败了:

kernel: [265024.963594] init: couchdb_a main process (5341) terminated with status 1

新贵的 conf 文件 (/etc/init/couchdb_a.conf):

description     "CouchDB v1.2.0"
console output

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

pre-start script
  logger -t "$0" "pre-start"
  export PATH="/path/to/build-couchdb/build/bin:$PATH"
  logger -t "$0" "DEBUG (pre-start): `set`"
end script

exec /path/to/build-couchdb/build/bin/couchdb 

据我所知,自定义 couchdb 只需要将其 PATH 调整为 couchdb 二进制文件的位置(这就是 iriscouch 的 env.sh 所做的)。

但是无论我是否更新 PATH,自定义 couchdb 都不会在这个新贵的工作中启动(它可以在 shell 中完美运行)。

4

1 回答 1

0

这个新贵配置成功地处理了 CouchDB 的自定义安装:

# couchdb v1.2.0
#
# Custom installation of CouchDB

description     "CouchDB v1.2.0, local"
console output

# start after all filesystems & network interfae are available
start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

# set working directory
env COUCHDB_WD="/path/to/build-couchdb/build/bin"
export COUCHDB_WD

# required for erlang
env HOME="/home/user"
export HOME

script
  # modify PATH to hit local couchdb's working directory first
  PATH="$COUCHDB_WD:$PATH"
  #export PATH # not necessary inside script block
  #logger -t $0 "HOME='$HOME'"
  #logger -t $0 "PATH='$PATH'"
  # output couchdb logs to custom location
  #exec >>/home/user/couchdb_local.log 2>&1
  exec couchdb
end script

这有帮助,但只是部分:

# change working directory: not effective with env variable
chdir /path/to/build-couchdb/build/bin

chdir如果只需要从目录运行可执行文件,但不修改PATH,也不接受 env 变量,则可以工作。

块中的注释行script帮助我确保HOMEPATH正确更新。该exec >>行将所有 couchdb 日志记录输出到自定义文件,这帮助我找到了根本原因:Erlang。

具体来说,erlexec:HOME 必须设置错误。 HOME显然可以是任何值(不确定它是否必须存在,但我将其设置为我的用户帐户的主目录)。

于 2012-08-18T16:29:03.733 回答