2017-01-07 9 views
1

Я установил CouchDB 2.0 на Ubuntu 16.04 и могу запустить его нормально, запустив ~ couchdb/bin/couchdb.Как правильно запустить/остановить CouchDB 2.0 на Ubuntu

Теперь я хотел бы, чтобы это началось и остановилось правильно при загрузке системы/завершении работы.

В документе говорится, что сценарии демонализации больше не предоставляются в версии 2.0, и я бы хотел избежать использования runit.

Я попытался использовать start-stop-daemon, написав shell-скрипт (если ниже). Таким образом я могу start CouchDB, но stop не работает, потому что никакой процесс не имеет имени «couchdb» (все делегировано ERLang).

Более того, когда я 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

Вы можете использовать CouchDB 1.6, который поставляется с операционной системой? Или, по крайней мере, его скрипт/блок запуска SystemD (файл '/ lib/systemd/system/couchdb.service')? Если вам нужен 2.0, самый чистый способ - переупаковка новой версии (с помощью руководства по упаковке Debian). – Velkan

+0

Спасибо за помощь. К сожалению, мне пришлось обновить до 2.0 из-за проблемы с bulk_get с PouchDB в версии 1.6. – 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

убунту 16.04 LTS/CouchDB v2.1.0
sudo service couchdb stop
и
sudo service couchdb start