Ubuntu 15.10 上 CouchDB 1.6 的安装问题

Ubuntu 15.10 上 CouchDB 1.6 的安装问题

在 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

相关内容