在CentOS 8| rhel 8上安装EJABBERD XMPP服务器

时间:2020-02-23 14:44:37  来源:igfitidea点击:

如何在CentOS 8上安装ejabberd | Rhel 8?
EJABBERD是一种用erlang编写的一个免费和开源的XMPP服务器。
EJABBERD专为可扩展性和容错而设计。
它具有一个小的资源足迹,可以在任何UNIX上运行,如操作系统 - Linux,FreeBSD,Solaris,MacOS,OpenBSD等。

ejabberd使用的默认数据存储是mnesia(分布式内部Erlang数据库),但我们可以使用SQL或者NoSQL数据库服务器。

EJABBERD XMPP服务器的功能

EJABBERD具有模块化架构,可实现高度可定义性和轻松访问所需功能,包括:

存储和转发(脱机消息)联系人列表(名单)和存在于One MessicingUser Presence Extense:Personal Event协议(PEP)和执行带有vCardsGroup聊天的指示器配置文件:MUC(多用户聊天)消息传递归档使用邮件存档管理(MAM)消息传递收据(AKA XEP-184)隐私设置,通过隐私列表和简单的阻塞扩展程序级活动媒体和完整的命令行管理程序功能Web支持,带有BOSH和Web SocketsStream管理,用于移动到Mobile的消息可靠性(AKA XEP-0198 )还有更多。

在CentOS 8| rhel 8上安装EJABBERD XMPP服务器

ejabberd包装为RPM文件,可以轻松下载并安装 rpm包管理器。
如果我们有一个从源代码编译,请执行此操作。

第1步:更新系统

像往常一样,我们需要在更新系统上工作:

sudo yum -y update

第2步:下载并安装EJABBERD RPM包

更新后,下载ejabberd rpm包。
我们需要在执行实际下载之前检查最新版本。

sudo yum -y install wget
wget https://static.process-one.net/ejabberd/downloads/20.04/ejabberd-20.04-0.x86_64.rpm

通过运行命令安装下载的RPM包:

sudo yum localinstall ejabberd-20.04-0.x86_64.rpm

同意安装提示。

Dependencies resolved.
=====================================================================================================================================================================================================
 Package                                        Architecture                                 Version                                        Repository                                          Size
=====================================================================================================================================================================================================
Installing:
 ejabberd                                       x86_64                                       20.04-0                                        @commandline                                        18 M
Transaction Summary
=====================================================================================================================================================================================================
Install  1 Package
Total size: 18 M
Installed size: 29 M
Is this ok [y/N]: y

这将放置ejabberd init脚本 /etc/init.d/ejabberd名为"ejabberd"的系统用户是createDejabberd应用程序目录 /opt/ejabberd
这是ejabberd用户的一个家。
ejabberd启动时,系统中启动的进程是 beam或者 beam.smp,并且 epmd

第3步:在CentOS 8上启动EJABBERD服务

现在我们已经完成了安装,我们需要启动服务并启用它在重新启动服务器时自动启动。

定位 ejabberd.service并将其复制到 /etc/systemd/system

sudo yum -y install mlocate
sudo updatedb
sudo cp $(locate ejabberd.service) /etc/systemd/system

然后重新加载系统:

sudo systemctl daemon-reload

检测到新的EJABBERD服务后,启动它:

sudo systemctl enable --now ejabberd

我们可以确认该服务处于运行状态。

$systemctl status ejabberd
● ejabberd.service - XMPP Server
   Loaded: loaded (/etc/systemd/system/ejabberd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2017-07-20 00:54:48 EAT; 4s ago
  Process: 28813 ExecStart=/bin/sh -c /opt/ejabberd-20.04/bin/ejabberdctl start && /opt/ejabberd-20.04/bin/ejabberdctl started (code=exited, status=0/SUCCESS)
    Tasks: 23 (limit: 4991)
   Memory: 67.6M
   CGroup: /system.slice/ejabberd.service
           ├─28842 /opt/ejabberd-20.04/bin/epmd -daemon
           ├─28843 /opt/ejabberd-20.04/bin/beam.smp -K true -P 250000 -- -root /opt/ejabberd-20.04 -progname /opt/ejabberd-20.04/bin/erl -- -home /opt/ejabberd -- -sname Hyman@theitroad -smp en>
           ├─28853 erl_child_setup 65536
           └─28882 /opt/ejabberd-20.04/lib/os_mon-2.4.7/priv/bin/memsup
May 20 00:54:46 localhost.localdomain systemd[1]: Starting XMPP Server...
May 20 00:54:48 localhost.localdomain systemd[1]: Started XMPP Server.

第4步:创建EJABBERD XMPP管理员帐户。

我们需要一个管理XMPP帐户来访问Web Admin仪表板。

将工作目录更改为 cd /opt/ejabberd-${VER}/bin

cd /opt/ejabberd-20.04/bin

添加管理员帐户:

在变量中保存用户名和密码。

username="myadmin"
password="mystrongPassword"

创建管理员用户。

$sudo ./ejabberdctl register ${username} localhost ${password}
User Hyman@theitroad successfully registered

我们可能需要更换 localhost使用实际服务器主机名。
其他用户帐户应以类似的方式添加。

# ./ejabberdctl register testuser localhost testuserpassword

编辑ejabberd配置文件,为我们创建的XMPP帐户提供管理权限 /opt/ejabberd/conf/ejabberd.yml

$sudo vi /opt/ejabberd/conf/ejabberd.yml
acl:
   local:
     user_regexp: ""
   loopback:
     ip:
       - "127.0.0.0/8"
       - "::1/128"
       - "::FFFF:127.0.0.1/128"
   admin:
     user:
       - "Hyman@theitroad"
       - "Hyman@theitroad"

重新开始 ejabberd服务。

sudo systemctl restart ejabberd

第5步:配置防火墙并访问UI

允许防火墙上的ejabberd ui端口。

sudo firewall-cmd --add-port=5280/tcp --permanent
sudo firewall-cmd --reload

Web管理员应在http://IP地址:5280/admin /。