标签归档:mysql

阿里云ubuntu安装ejabberd

突发奇想在阿里云的ubuntu上搭建一个ejabberd服务器,也学一学XMPP,百度和谷歌了一下发现还是有很多攻略的,但是都说得不是很清楚,于是自己结合搜索的结果和自己的尝试在这里记录一下安装过程

1.安装ejabberd

这个比较简单,ubuntu下直接sudo apt-get install ejabberd就会静默完成

两个目录比较重要:/etc/ejabberd这里面有配置文件ejabberd.cfg,后面配置会用到

/usr/lib/ejabberd这里面有ebin目录,是后面放mysql连接扩展的

另外有的攻略里面说这下面的priv目录里有ejabberd mysql数据库初始化sql文件,我没有找到,后面是在别处下载的

2.配置mysql

第一步安装完成之后,应该就可以使用ejabberdctl命令了,可以接status,start,restart等等

首先从https://github.com/processone/ejabberd/blob/master/sql/mysql.sql下载数据库初始化sql文件,放在某个目录下,比如/etc/ejabberd

然后登录到你的mysql,

mysql -uroot -proot

创建一个用户ejabberd

GRANT ALL ON ejabberd.* TO ‘ejabberd’@’localhost’IDENTIFIED BY ‘ejabberd’;

创建一个数据库

create database ejabberd;

使用前面那个mysql.sql文件创建初始表格

use ejabberd;

source mysql.sql

这个时候会发现ejabberd这个数据库里面多了很多表格就对了

3.配置ejabberd支持mysql

修改/etc/ejabberd/ejabberd.cfg文件如下:

注释掉: {auth_method, internal}.
取消注释:{auth_method, odbc}.

取消注释并设置数据库名称和密码:
{odbc_server, {mysql, “localhost”, “ejabberd”, “ejabberd”, “ejabberd”}}.

修改模块如下:在原有模块名后面都增加_odbc
{mod_last_odbc, []},
{mod_offline_odbc, []},
{mod_privacy_odbc, []},
{mod_private_odbc, []},
{mod_pubsub_odbc, [ % requires mod_caps …
{mod_roster_odbc, []},
{mod_vcard_odbc, []},

重启服务

ejabberdctl restart

4.这个时候多半发现ejabberd服务没启起来,通过查看/var/log/ejabberd/ejabberd.log可以看出

=ERROR REPORT==== 2010-06-24 11:35:34 ===
C(<0.37.0>:ejabberd_check:63) : ejabberd is configured to use ‘mysql’, but the following Erlang modules are not installed: ‘[mysql,
mysql_auth,
mysql_conn,
mysql_recv]’
=INFO REPORT==== 2010-06-24 11:35:34 ===
application: ejabberd
exited: {bad_return,{{ejabberd_app,start,[normal,[]]},
{‘EXIT’,database_module_missing}}}
type: temporary

原因是erlang缺少mysql模块,需要单独编译

那么从svn co https://svn.process-one.net/ejabberd-modules/mysql/trunk mysql

可以把需要的模块源码下载下来,主要是

mysql_recv.erl

mysql_conn.erl

mysql_auth.erl

mysql.hrl

mysql.erl

这几个

放到某个目录里面后分别使用erlc *.erl编译

可以得到几个文件

mysql.beam
mysql_auth.beam
mysql_conn.beam
mysql_recv.beam

把他们全部放到/usr/lib/ejabberd/ebin里面再次尝试重启ejabberd服务就可以了

5.配置ejabberd管理员用户

ejabberdctl register admin [YourIPAddress] 123456

使用web地址http://ip地址:5280/admin,登录即可开始进行服务器管理了

后面的操作未完待续

参考url

http://www.cnblogs.com/silent2012/p/3610747.html

https://code.google.com/p/ejabberd4joomla/wiki/installing_eJabberd

http://srijan.me/ejabberd-storing-data-in-mysql/