开发者社区> 问答> 正文

ejabberd 即时通讯服务器集群安装和配置:报错

(1)安装erlang.下载otp_src_R11B-3.tar.gz文件,解压,命令tar xvzf  otp_src_R11B-3.tar.gz ,cd otp_src_R11B-3,进入otp_src_R11B-3目录后依次执行1)./configure 2)make 3)make install 命令。
(2) 安装ejabberd.从下载ejabberd-1.1.3.tar文件,解压,命令tar xvf ejabberd-1.1.3.tar, cd ejabberd-1.1.3,cd src进入src目录后依次执行1)./configure 2)make  3)make install 命令。
(3) 配置ejabberd。
1)所需的配置文件及目录。配置文件:/etc/ejabberd/ejabberd.cfg   日志目录:/var/log/ejabberd/  域名文件:/root/.hosts.erlang(若没有手动创建) Cookie文件:/root/.erlang.cookie(若没有手动创建)。
2)修改ejabberd.cfg文件。%Hosts name 项中”localhost” 改成本机的域名如test.test.com。3)在/root/.hosts.erlang文件填入本机域名,如:test.test.com.(注意结尾要有“.”),设置服务器的cookie信息,随意设置,但是如配置集群,则需要各个服务器的cookie一致。如:TRHCGTSWFLCBVPMVJYYR。

3)启动ssl加密:

cd /etc/ejabberd
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> server.pem
rm privkey.pem
Now edit your ejabberd.cfg file and specify the correct location of your server.pem:
{listen, [{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
starttls, {certfile, "/etc/ejabberd/server.pem"}]},
{5223, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
ssl, {certfile, "/etc/ejabberd/server.pem"}]},

(4)启动ejabberd.

erl -pa /var/lib/ejabberd/ebin \
      -name ejabberd@first\
      -s ejabberd \
      -ejabberd config \"/etc/ejabberd/ejabberd.cfg\" \
                log_path \"/var/log/ejabberd/ejabberd.log\" \
    -sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\} \
      -mnesia dir \"/var/lib/ejabberd/spool\"
 

(5)配置集群。(假设主服务器为域名first,次服务器域名为second)
1)second服务器上的/root/.erlang.cookie文件内容要与first上的一致。
2)second服务器上的ejabberd.cfg文件修改域名为
{hosts, ["second","first"]}

[pre]3) 在second上运行erl -name ejabberd@second -mnesia extra_db_nodes "['ejabberd@first']" -s mnesia[/pre][pre]4)在second上检查共享是否成功。命令mnesia:info(). (注意要有“.” 才能执行)[/pre][pre]如出现running db nodes = [ejabberd@first,ejabberd@second就说明共享成功,在用nodes()验证是否与first相连。正确相连则显示 ejabberd@first[/pre][pre]5)在second服务器上运行 mnesia:change_table_copy_type(schema, node(), disc_copies). (注意有“.”才能运行)拷贝数据库表。[/pre][pre]6) mnesia:add_table_copy(acl,node(),disc_copies). (注意有“.”才能运行)拷贝acl表。[/pre][pre]7)退出q().(注意有“.”才能运行)[/pre][pre]8)在second重新启动ejabberd. [/pre][pre]erl -pa /var/lib/ejabberd/ebin      \[/pre][pre] -name ejabberd@second  \[/pre][pre] -s ejabberd      \[/pre][pre] -ejabberd config \"/etc/ejabberd/ejabberd.cfg\" \         [/pre][pre] log_path \"/var/log/ejabberd/ejabberd.log\"     \ [/pre][pre] -sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\}备注:用户实际操秩序更改服务器域名。[/pre]

方法2:集群设置成同一个域名的

<!--[if !supportLists]-->(1)      <!--[endif]-->修改% Host name:时做如下修改{hosts, ["first(或者 second)","xxxx.xxxx.com"]}.其他服务器与此方法相同。

<!--[if !supportLists]-->(2)      <!--[endif]-->其他与上面的方法相同。

展开
收起
kun坤 2020-06-14 10:36:08 780 0
1 条回答
写回答
取消 提交回答
  • 如意通RTP,开源的企事业即时通讯,服务器端支持OPENFIRE,也支持

    ejabberd。######

    不明觉厉!!你好!新手一枚,请问一下,我服务器端采用Java开发的,能否容易部署到 erlang语言开发的 ejabber d上面?兼容性怎么样?以及如何部署?O(∩_∩)O谢谢

    2020-06-14 10:36:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS块储存产品全面解析 立即下载