CouchDB无法启动。-- Mochiweb启动失败:eaddrinuse

9
我已经在Ubuntu 10.04上配置并安装了CouchDB 1.6.1。在配置和安装过程中,它显示安装成功。但是当我启动CouchDB时,它会给我报错。 第一次启动时...
Apache CouchDB 1.6.1 (LogLevel=info) is starting.

Apache CouchDB has started. Time to relax.

**[info] [<0.32.0>] Apache CouchDB has started on http://127.0.0.1:5984/**

重新开始时,
 Apache CouchDB 1.6.1 (LogLevel=info) is starting.

 **Failure to start Mochiweb: eaddrinuse**

[error] [<0.127.0>] {error_report,<0.31.0>,
                    {<0.127.0>,crash_report,[[{initial_call,
                           {mochiweb_socket_server,init,['Argument__1']}},
                       {pid,<0.127.0>},
                       {registered_name,[]},
                       {error_info,
                           {exit,eaddrinuse,
                               [{gen_server,init_it,6},
                                {proc_lib,init_p_do_apply,3}]}},
                       {ancestors,
                           [couch_secondary_services,couch_server_sup,
                            <0.32.0>]},
                       {messages,[]},
                       {links,[<0.95.0>]},
                       {dictionary,[]},
                       {trap_exit,true},
                       {status,running},
                       {heap_size,987},
                       {stack_size,24},
                       {reductions,467}],
                      []]}}
{"init terminating in do_boot",{{badmatch,{error,{bad_return,{{couch_app,start,[normal,["/usr/local/etc/couchdb/default.ini","/usr/local/etc/couchdb/local.ini"]]},{'EXIT',{{badmatch,{error,shutdown}},[{couch_server_sup,start_server,1},{application_master,start_it_old,4}]}}}}}},[{couch,start,0},{init,start_it,1},{init,start_em,1}]}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()

在 local.ini 文件中,我将端口更改为 5983,将 IP 地址从 127.0.0.1 更改为 0.0.0.0,但仍没有解决问题。当我运行 sudo netstat -tulpn 命令时,输出如下:tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN 21688/beam.smp 。couchdb -s 命令显示 Apache CouchDB 未运行。非常感谢您的帮助。

执行命令 curl http://localhost:5984/,是否有任何响应? - Akshat Jiwan Sharma
你好Akshat,谢谢回复。它没有给我任何回应... 我猜在等待连接couchdb -s显示Apache CouchDB未运行。 - Satish
你可以使用像htop这样的实用工具手动杀掉couchdb。只需安装它,然后在终端上输入htop。按F4搜索couchdb并按F9 + Enter杀死它。看看是否有帮助。 - Akshat Jiwan Sharma
couchdb -d 命令将关闭 CouchDB 后台进程。 - dethtron5000
@dethtron5000 感谢回复.. couchdb -d 表示 Apache CouchDB 未运行。 - Satish
尽量避免使用0.0.0.0作为主机地址,除非你确定要使用公共可访问的CouchDB。尝试结束所有监听5984端口的进程,并确保它们已经被清除。如果这不能解决问题,可以稍等一会儿 - 有时候过一段时间后程序没有正确释放端口会有帮助。 - h4cc
5个回答

3

如果您因为最近升级了CouchDB 2.0而来到这里,请确保更新您的local.ini配置文件。Web服务器配置部分已更改(名称从类似于httpd的内容更改为chttpd)。因此,端口指令没有被捡起,而是默认为80,与Web服务器相同。


我发现如果同时设置了chttpd和httpd,就会出现这个错误。注释掉httpd部分对我有用。 - Doug
谢谢!从v1.x升级到2.x,这绝对是问题所在。 - Nathan Garabedian

3
根据提供的错误信息条目,CouchDB已经在您的机器/服务器上以端口5984运行。
**Failure to start Mochiweb: eaddrinuse**

这就是为什么当你在Linux机器上运行sudo netstat -tulpn命令时,会得到以下输出结果:
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN 21688/beam.smp

解决方案:

couchdb并不是你尝试使用的那种服务脚本。它只是试图再次启动,但因为已经有一个正在运行(erlang beam.smp进程仍在运行),所以失败了。

使用以下命令检查并杀死所有CouchDB进程:

/bin/ps aux | grep couchdb | grep -v grep | awk '{print $2}' | xargs killl

使用以下命令以 root 用户身份重新启动CouchDB:

service couchdb start

注意:
当您输入 couchdb -s 命令时,会收到像 Apache CouchDB is not running. 的消息。
当您输入 couchdb -d 命令时,会收到像 Apache CouchDB is not running. 的消息。
以上输出的原因是您以非特权的 Linux 用户帐户身份执行上述命令。
请尝试以 root 或正在运行 couchDB 的 Linux 用户帐户身份执行上述命令。

0

我也遇到了同样的问题。我只需要执行以下命令:

sudo apt-get update

sudo apt-get install couchdb

注意:我刚刚重新安装了CouchDB,现在它正常工作。在重新安装之前,我进行了以下配置。
安装ICU并使用locate命令查找icu-config命令:
locate icu-config


sudo apt-get install libicu-dev

更多细节请参考下面的链接

https://wiki.apache.org/couchdb/Error_messages


0

我遇到了同样的问题...

幸运的是,在Couchdb错误消息文档中有一个解决方法。 https://wiki.apache.org/couchdb/Error_messages

问题

$ couchdb
Apache CouchDB 0.9.0a747640 (LogLevel=info) 正在启动。 无法启动Mochiweb:eaddrinuse {"init terminating in do_boot",{{badmatch,{error,shutdown}},[{couch_server_sup,start_server,1},{erl_eval,do_apply,5},{erl_eval,exprs,5},{init,start_it,1},{init,start_em,1}]}}

解决方案

编辑您的/etc/couchdb/couch.ini文件,并将端口设置更改为可用端口。

但我的没有couch.ini,而是default.ini。 我将其更改为另一个我猜测应该是空闲的端口,然后它就可以工作了。


0

我在Ubuntu 16.04上启动couchdb时遇到了这个错误

原因是erlang在5984端口运行,当运行命令"netstat -tulpn"时,您会看到以下内容:

0 0 127.0.0.1:5984 0.0.0.0:* LISTEN 13967/beam.smp

以超级用户模式打开文件/etc/couchdb/default.ini,并将httpd端口更改为其他可用端口,然后您就可以成功启动couchdb了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接