![Ubuntu 15.10 上 CouchDB 1.6 的安装问题](https://linux22.com/image/670450/Ubuntu%2015.10%20%E4%B8%8A%20CouchDB%201.6%20%E7%9A%84%E5%AE%89%E8%A3%85%E9%97%AE%E9%A2%98.png)
在 Ubuntu 14.04 上使用 CouchDB 1.4 后,我最近尝试使用 15.10 和主 couchdb 包重新开始。它安装了 couchdb 1.6,这是一个值得欢迎的变化,但 Couch 网站上的 ubuntu 安装文档尚未更新。
我在启动和运行它时遇到了很多问题。我运行了 apt-get install couchdb 包安装并创建了 couchdb 用户和组。
看起来 Ubuntu repo 可能没有将东西安装在与 ubuntu 的 couchdb 文档中所说的相同的位置(这不是什么大问题)但它似乎也没有创建所有需要的文件夹,也没有设置正确的权限。
当我跑步时couchdb -b
,我得到 Apache CouchDB needs write permission on the PID file: /var/run/couchdb/couchdb.pid
另外(更多信息),/var/run/couchdb 文件夹不会在安装时创建,但如果我创建它(和其他几个文件夹)并将这些文件夹的权限也设置为 couchdb:couchdb,一切就会启动。但是,这并不能永久生效,因为 pid 文件在重新启动后会被重置,我们又回到了原点。顺便说一句,我也不知道是否在安装时创建了所有必需的日志或其他文件夹。如果您注意到了什么,请告诉我。
作为另一条信息,当我尝试运行时,sudo -i -u couchdb couchdb
我得到:sudo: unable to change directory to /usr/local/var/lib/couchdb: No such file or directory
从文档来看,这个 (usr/local) 似乎是正确的文件夹,但 Ubuntu 15 安装似乎不使用 /usr/local,而主要使用 /etc/couchdb。因此,尝试遵循所有文档时会有点困惑。
如果我跑步sudo -i -u couchdb couchdb
我会得到:
{"init terminating in do_boot",{{badmatch,{error,{bad_return,
{{couch_app,start,[normal,
["/etc/couchdb/default.ini","/etc/couchdb/local.ini"]]},{'EXIT',{{bad match,
{error,{error,enoent}}},[{couch_server_sup,start_server,1,
[{file,"couch_server_sup.erl"},{line,56}]},{application_master,start_it_old,4,
[{file,"application_master.erl"},{line,273}]}]}}}}}},[{couch,start,0,
[{file,"couch.erl"},{line,18}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}
Crash dump is being written to: erl_crash.dump...done
init terminating in do_boot ()
这是一个无意义的错误。我有时也会遇到与此类似的权限错误(eecees?记不清了)。这有帮助吗?
当我通过创建随机文件夹和更改权限来四处寻找东西时,我可以接近目标,但我无法让最终的 pid 文件保持正确的权限。这是唯一的问题吗?还是我应该对 15.10 安装保持警惕?有人能帮我解决 pid 权限错误吗?我该如何运行它?谢谢!
答案1
答案在于默认 ubuntu 包附带的 init 脚本。
/etc/init.d/couchdb
从第 83 行开始
start_couchdb () {
# Start Apache CouchDB as a background process.
mkdir -p "$RUN_DIR"
if test -n "$COUCHDB_USER"; then
chown $COUCHDB_USER "$RUN_DIR"
fi
command="$COUCHDB -b"
if test -n "$COUCHDB_STDOUT_FILE"; then
command="$command -o $COUCHDB_STDOUT_FILE"
fi
if test -n "$COUCHDB_STDERR_FILE"; then
command="$command -e $COUCHDB_STDERR_FILE"
fi
if test -n "$COUCHDB_RESPAWN_TIMEOUT"; then
command="$command -r $COUCHDB_RESPAWN_TIMEOUT"
fi
run_command "$command" > /dev/null
}
我得到了官方的 ubuntu 15.10 vagrant box 并安装了 couchdb 包,然后编辑/etc/couchdb/local.ini
将 httpd 绑定到不同的 IP 地址并通过重新启动了 couchdb 服务/etc/init.d/couchdb restart
对我来说一切都很好。
总结使用 init 脚本/etc/init.d/couchdb
启动/停止并重新启动 couchdb