![在 osx 上自动启动和有选择地停止 Couchdb 的多个实例](https://linux22.com/image/613232/%E5%9C%A8%20osx%20%E4%B8%8A%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8%E5%92%8C%E6%9C%89%E9%80%89%E6%8B%A9%E5%9C%B0%E5%81%9C%E6%AD%A2%20Couchdb%20%E7%9A%84%E5%A4%9A%E4%B8%AA%E5%AE%9E%E4%BE%8B.png)
我已经通过 homebrew 成功安装了 couchdb:
% 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 命令行工具),以防万一有帮助。
答案1
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
)创建一个新文件。