2017-01-07 36 views
1

私はUbuntu 16.04にCouchDB 2.0をインストールしました。これは〜couchdb/bin/couchdbを起動することで正常に動作します。UbuntuでCouchDB 2.0を正しく起動/停止する方法

ここでは、システムのブート/シャットダウン時に起動して正しく停止したいと考えています。

docには、2.0でデーモン化スクリプトが用意されていないと書かれています。runitを使用しないでください。

私はstart-stop-daemonを使用しようとしましたが、シェルスクリプトを作成しました。この方法で私はstart CouchDBできますが、プロセスは名前が "couchdb"(すべてがERLangに委任されている)なので、stopは機能しません。

また、update-rc.d couchdb.sh defaultsの場合、insserv: warning: script 'couchdb.sh' missing LSB tags and overridesというエラーが発生します。

クリーンな開始/停止手順をどのようにお勧めしますか?どうもありがとう!

#!/bin/sh -e 

DAEMON="/home/couchdb/bin/couchdb" 
daemon_OPT="" 
DAEMONUSER="couchdb" 
daemon_NAME="couchdb" 
PATH="/sbin:/bin:/usr/sbin:/usr/bin" 

test -x $DAEMON || exit 0 

. /lib/lsb/init-functions 

d_start() { 
    log_daemon_msg "Starting system $daemon_NAME Daemon" 
    start-stop-daemon --background --name $daemon_NAME --start --quiet --chuid $DAEMONUSER --exec $DAEMON -- $daemon_OPT 
    log_end_msg $? 
} 

d_stop() { 
    log_daemon_msg "Stopping system $daemon_NAME Daemon" 
    start-stop-daemon --name $daemon_NAME --stop --retry 5 --quiet 
    log_end_msg $? 
} 

case "$1" in 

    start|stop) 
     d_${1} 
     ;; 

    restart|reload|force-reload) 
     d_stop 
     d_start 
     ;; 

    force-stop) 
     d_stop 
     killall -q $daemon_NAME || true 
     sleep 2 
     killall -q -9 $daemon_NAME || true 
     ;; 

    status) 
     status_of_proc "$daemon_NAME" "$DAEMON" "system-wide $daemon_NAME" && exit 0 || exit $? 
     ;; 
    *) 
     echo "Usage: /etc/init.d/$daemon_NAME {start|stop|force-stop|restart|reload|force-reload|status}" 
     exit 1 
     ;; 
esac 
exit 0 
+0

あなたは、OSに付属しているのCouchDB 1.6を使用することはできますか?または少なくともそのSystemDスタートアップスクリプト/ユニット( '/ lib/systemd/system/couchdb.service'ファイル)? 2.0が必要な場合は、(Debianのパッケージガイドを使用して)新しいバージョンを再パッケージするのが一番クリーンな方法です。 – Velkan

+0

ご協力いただきありがとうございます。残念ながら、1.6バージョンのPouchDBのbulk_get問題のため、私は2.0にアップグレードしなければなりませんでした。 – bfredo123

+0

Stack Overflowは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザ](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 [Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306) – jww

答えて

0

ここから:https://www.jamescoyle.net/how-to/2527-add-systemd-startup-script-for-couchdb

# From: https://wiki.ubuntu.com/systemd 
# This results in systemd being installed alongside upstart 
apt-get -y install systemd libpam-systemd systemd-ui 

# From: https://www.jamescoyle.net/how-to/2527-add-systemd-startup-script-for-couchdb ([Install] section is missing!) 
# couchdb.service is a new file. Make it: 
nano /etc/systemd/system/couchdb.service 

--- file start (do not include this line) --- 
[Unit] 
Description=Couchdb service 
After=network.target 

[Service] 
Type=simple 
User=couchdb 
ExecStart=/opt/couchdb/bin/couchdb -o /dev/stdout -e /dev/stderr 
Restart=always 

[Install] 
WantedBy=multi-user.target 
--- file end (do not include this line) --- 

# This enables CouchDB automatically after reboot 
systemctl daemon-reload 
systemctl start couchdb.service 
systemctl enable couchdb.service 

# Logging: see more about journalctl elsewhere. This shows the latest 500 logs. 
journalctl -u couchdb.service | tail -n 500 

# *** update the configuration file, see above example of a configuration of local.ini *** 
service couchdb stop 
# update local.ini 
service couchdb start 
0

のUbuntu 16.04 LTS/CouchDBのバージョン2.1.0
sudo service couchdb stop

sudo service couchdb start

関連する問題