0

優れたiriscouch/build-couchdbリポジトリを使用してCouchDBの最近のバージョンをビルドしました。次に、Ubuntu12.04サーバーでアップスタートジョブを作成したいと思います。

ただし、起動ジョブは次の場合に失敗します。

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ジョブで起動しません(シェルから完全に機能します)。

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せず、環境変数を受け入れない場合に機能します。

scriptブロック内のコメント行は、HOMEPATHが適切に更新されたことを確認するのに役立ちました。このexec >>行は、すべてのcouchdbログをカスタムファイルに出力します。これは、根本的な原因であるErlangを見つけるのに役立ちました。

具体的には、erlexec:HOMEにエラーを設定する必要があります。 HOME明らかに任意の値にすることができます(存在する必要があるかどうかはわかりませんが、ユーザーアカウントのホームディレクトリに設定しました)。

于 2012-08-18T16:29:03.733 に答える