如何让自定义couchdb作为upstart工作运行?

时间:2012-08-16 04:52:01

标签: ubuntu couchdb upstart

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

然而,新贵作业失败了:

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

upstart 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都不会在这个upstart作业中启动(它可以从shell中完美运行)。

1 个答案:

答案 0 :(得分: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 must be set错误。 HOME显然可以是任何值(不确定它是否必须存在,但我将其设置为我的用户帐户的主目录)。