![ejabberdctl无法连接到服务器](https://linux22.com/image/758984/ejabberdctl%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
# ejabberdctl
Failed RPC connection to the node 'ejabberd@chat.***.com.au': nodedown
看起来配置指向了错误的服务器,但一切看起来都是正确的,因为我可以使用以下命令启动服务器
# ejabberdctl start
如果服务器已在运行,ejabberdctl 会检测到以下情况:
ERROR: The ejabberd node '[email protected]' is already running.
我猜测 ejabberdctl 需要一些 RPC 端口/权限,但我找不到关于它需要什么的文档。XML-RPC?
答案1
因为我可以用
ejabberdctl 启动
为了调试目的,尝试使用“ejabberdctl live”启动它,因为这将保持 erlang shell 在 ejabberd 内部打开:这会为您提供即时日志消息,您可以看到它正在运行,甚至可以在其中运行 erlang 命令。
错误:ejabberd 节点'[电子邮件保护]' 已经开始。
这是一个非常简单的检测:它只是在“epmd”中检查正在运行的节点列表。例如:
$ epmd -names
epmd: up and running on port 4369 with data:
name ejabberd at port 35633
韋伯德克特
与节点“ejabberd@chat.***.com.au”的 RPC 连接失败:nodedown
从内部来看,这个操作比上一个操作更复杂,因为它尝试连接到正在运行的节点。这需要打开多个端口、进行 Erlang Cookie 验证等。因此,可以理解上一个命令有效(它只检查“epmd -names”),而这个命令失败(您可能需要打开一些端口,并告诉 ejabberdctl 使用哪些端口)。
我猜测 ejabberdctl 需要一些 RPC 端口/权限,但我找不到关于它需要什么的文档。XML-RPC?
是的,ejabberdctl 使用 Erlang 的 epmd 将自身连接到已在运行的 Erlang 节点https://docs.ejabberd.im/admin/guide/security/