突发奇想在阿里云的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/