Назад | Перейти на главную страницу

автоматически запускать и выборочно останавливать несколько экземпляров couchdb на osx

Я успешно установил couchdb через homebrew:

% brew install couchdb

... и вызвал несколько экземпляров, как указано Вот:

% OLD=/usr/local
% NEW=/tmp/couchdb

% mkdir -p $NEW/etc/couchdb/
% mkdir -p $NEW/var/{lib,log,run}/couchdb/

% cp $OLD/etc/couchdb/local.ini $NEW/etc/couchdb/

local.ini изменяется:

[couchdb]
database_dir = /tmp/couchdb/var/lib/couchdb
view_index_dir = /tmp/couchdb/var/lib/couchdb
uri_file = /tmp/couchdb/var/run/couchdb/couch.uri

[httpd]
port = 5985
bind_address = 0.0.0.0

[log]
file = /tmp/couchdb/var/log/couchdb/couch.log

... и запускаем команду запуска:

% couchdb -i -a /tmp/couchdb/etc/couchdb/local.ini

Теперь, когда у меня это работает, как я могу запускать каждый экземпляр при загрузке, и если я хочу убить экземпляр (предпочтительно по имени или известному идентификатору), как это можно сделать выборочно? Я запускаю OSX Mountain Lion 10.8.3 (с инструментами командной строки Xcode), если это помогает.

OS X способ запустить что-либо при загрузке: launchd, в частности LaunchDaemon. Для полного понимания стоит прочитать документация Apple по launchd; Кроме того, здесь есть много вопросов и ответов, которые помогут вам.

Краткая версия: вам понадобится файл, например /Library/LaunchDaemons/org.inator.couchdb это выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.inator.couchdb</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/couchdb</string>
        <string>-i</string>
        <string>-a</string>
        <string>/tmp/couchdb/etc/couchdb/local.ini</string>
    </array>
    <key>OnDemand</key>
    <false/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

Обратите внимание, что это будет работать как root; если вы хотите, чтобы он запускался от имени конкретного пользователя, вам нужно будет использовать sudo (например sudo -u inator /usr/local/couchdb …).

Для запуска и работы вручную вы можете load и unload это из launchd с помощью launchctl, например:

launchctl load /Library/LaunchDaemons/org.inator.couchdb
launchctl unload /Library/LaunchDaemons/org.inator.couchdb

Если вам нужен другой экземпляр, просто создайте новый файл в /Library/LaunchDaemons с другим именем файла (и подходящим Label).