我使用优秀的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中完美运行)。
答案 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
块中的注释行帮助我确保HOME
和PATH
已正确更新。 exec >>
行将所有couchdb日志记录输出到自定义文件,这有助于我找到根本原因:Erlang。
具体来说,erlexec: HOME must be set错误。 HOME
显然可以是任何值(不确定它是否必须存在,但我将其设置为我的用户帐户的主目录)。