将 MySQL 与 Ejabberd 结合使用

将 MySQL 与 Ejabberd 结合使用

我正在尝试将 MySQL 集成到 Ejabberd 中,但一直遇到问题。我在 AWS EC2 环境中工作,并且有 1 个 EC2 实例,其中安装了 MySQL、Ejabberd 和最新的 Erlang(版本 17)。然后我完全按照此链接中指定的步骤进行操作: https://www.ejabberd.im/使用%20ejabberd%20with%20MySQL%20native%20driver 但是,当我查看 erlang.log 和 ejabberd.log 文件时,它表明存在 MySQL 模块丢失问题:

=CRASH REPORT==== 2015 年 6 月 10 日::06:05:28 === crasher:初始调用:application_master:init/4 pid:<0.41.0> registered_name:[] 异常退出:{bad_return,{{ejabberd_app,start,[normal,[]]}, {'EXIT',database_module_missing}}} 在函数 application_master:init/4 中(application_master.erl,第 133 行)祖先:[<0.40.0>] 消息:[] 链接:[<0.40.0>,<0.42.0>,<0.7.0>] 字典:[] trap_exit:true 状态:正在运行 heap_size:610 stack_size:27 减少量:101 邻居:

我下载并试用了各种模块,但都失败了。例如, 此博客文章的链接http://stefan-strigler.de/2009/01/14/ejabberd-mysql-drivers-for-debian-and-ubuntu/

根本不起作用。当我 ./build.sh 以下模块时: https://svn.process-one.net/ejabberd-modules/mysql/trunk/它在 ebin/ 文件夹中没有创建任何内容。

我已经完成了本教程中指定的所有内容:https://www.ejabberd.im/使用%20ejabberd%20with%20MySQL%20native%20driver除了最开始的部分(驱动程序部分)。您能否建议我如何解决这个问题或任何其他(简单)方法来实现这一点?谢谢。

答案1

看来 Erlang VM 无法找到或访问 mysql.beam、mysql_auth.beam、mysql_conn.beam 或 mysql_recv.beam 之一。确保它们都位于适当的ebin目录中,并且可由 ejabberd 以用户身份运行读取。

答案2

您所指的帖子已经过时了。

要将 ejabberd 与原生 Erlang MySQL 驱动程序一起使用,现在非常容易且相当直接。 只需两个步骤:

  1. 确保你的 ejabberd 启用了 MySQL 支持。有两种方法可以实现这一点:

    • 下载二进制安装程序或 RPM / DEB 包。所需的 MySQL 组件已包含在内。安装程序和软件包可从以下位置下载ejabberd 官方下载页面
    • 从源代码构建 ejabberd,并确保使用--enable-mysqlconfigure 选项对其进行了配置。您可以参考 ejabberd 文档以获取有关如何构建 ejabberd 的详细信息:从源代码安装 ejabberd
  2. 创建 MySQL 数据库模式。MySQL 模式的最新版本可在此处获取:https://raw.githubusercontent.com/processone/ejabberd/master/sql/mysql.sql

  3. 您需要配置 ejabberd 以使用 MySQL。您首先需要在配置文件的根级别配置数据库,如下所述:ejabberd 数据库和 LDAP 配置。配置数据库后,您可以根据模块选择要使用的后端。对于用户群,您需要定义odbc auth_method。对于其他模块,您需要传递db_type带有值的选项odbc。以下是联系人列表的示例文档mod_roster

相关内容