在 CentOS 8 上安装 Ejabberd XMPP 服务器 | RHEL 8
如何在CentOS 8上安装Ejabberd | RHEL 8? Ejabberd 是一个用 Erlang 编写的免费开源 XMPP 服务器。 Ejabberd 专为可扩展性和容错性而设计。它的资源占用量很小,可以在任何类 Unix 操作系统上运行 - Linux、FreeBSD、Solaris、macOS、OpenBSD 等。
Ejabberd 使用的默认数据存储是Mnesia(分布式内部 Erlang 数据库),但您可以使用 SQL 或 NoSQL 数据库服务器。
Ejabberd XMPP 服务器的功能
Ejabberd 具有模块化架构,可实现高度可定制性并轻松访问所需功能,其中包括:
- 存储转发(离线消息)
- 联系人列表(花名册)和出席情况
- 一对一消息传递
- 用户状态扩展:个人事件协议 (PEP) 和打字指示器
- 带有 vCard 的用户配置文件
- 群聊:MUC(多用户聊天)
- 使用消息归档管理 (MAM) 进行消息归档
- 消息传递收据(又名 XEP-184)
- 隐私设置,通过隐私列表和简单的阻止扩展
- 上次活动
- 指标和完整的命令行管理
- 全功能网络支持,带有 BOSH 和网络套接字
- 移动设备上消息可靠性的流管理(又名 XEP-0198)
等等。
在 CentOS 8 上安装 Ejabberd XMPP 服务器 | RHEL 8
Ejabberd 打包为 RPM 文件,可以使用 rpm 包管理器轻松下载和安装。如果您热衷于从源代码进行编译,那就去做吧。
第1步:更新系统
像往常一样,您需要在更新的系统上工作:
sudo yum -y update
步骤2:下载并安装Ejabberd RPM包
更新后,下载Ejabberd RPM包。在实际下载之前,您需要检查最新版本。
安装 wget:
sudo yum -y install wget
下载ejabberd:
EJ_VERSION=23.01
wget https://static.process-one.net/ejabberd/downloads/${EJ_VERSION}/ejabberd-${EJ_VERSION}-1.x86_64.rpm
通过运行以下命令安装下载的 RPM 包:
sudo yum localinstall ejabberd-${EJ_VERSION}-1.x86_64.rpm
同意安装提示。
Dependencies resolved.
=====================================================================================================================================================================================================
Package Architecture Version Repository Size
=====================================================================================================================================================================================================
Installing:
ejabberd x86_64 23.01-1 @commandline 18 M
Transaction Summary
=====================================================================================================================================================================================================
Install 1 Package
Total size: 18 M
Installed size: 29 M
Is this ok [y/N]: y
这会将 ejabberd 初始化脚本放置在 /etc/init.d/ejabberd
下
- 创建名为“ejabberd”的系统用户
- ejabberd应用程序目录是
/opt/ejabberd
。这是 ejabberd 用户的家。 - 当ejabberd启动时,系统中启动的进程有
beam
或beam.smp
,还有epmd
。
步骤3:在CentOS 8上启动Ejabberd服务 | RHEL 8
现在我们已经完成了安装,我们需要启动该服务并使其在服务器重新启动时自动启动。
找到 ejabberd.service
并将其复制到 /etc/systemd/system
sudo yum -y install mlocate
sudo updatedb
sudo cp $(locate ejabberd.service) /etc/systemd/system
然后重新加载systemd:
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 2022-01-20 00:54:48 EAT; 4s ago
Process: 28813 ExecStart=/bin/sh -c /opt/ejabberd-21.12/bin/ejabberdctl start && /opt/ejabberd-21.12/bin/ejabberdctl started (code=exited, status=0/SUCCESS)
Tasks: 23 (limit: 4991)
Memory: 67.6M
CGroup: /system.slice/ejabberd.service
├─28842 /opt/ejabberd-21.12/bin/epmd -daemon
├─28843 /opt/ejabberd-21.12/bin/beam.smp -K true -P 250000 -- -root /opt/ejabberd-21.12 -progname /opt/ejabberd-21.12/bin/erl -- -home /opt/ejabberd -- -sname ejabberd@localhost -smp en>
├─28853 erl_child_setup 65536
└─28882 /opt/ejabberd-21.12/lib/os_mon-2.4.7/priv/bin/memsup
Jul 20 00:54:46 localhost.localdomain systemd[1]: Starting XMPP Server...
Jul 20 00:54:48 localhost.localdomain systemd[1]: Started XMPP Server.
第 4 步:创建 ejabberd XMPP 管理员帐户。
您需要一个管理员 XMPP 帐户才能访问 Web 管理仪表板。
将工作目录更改为 cd /opt/ejabberd-$ {VER}/bin
cd /opt/ejabberd-*/bin
添加管理员帐户:
将用户名和密码保存在变量中。
username="myadmin"
password="mystrongPassword"
创建管理员用户。
$ sudo ./ejabberdctl register ${username} localhost ${password}
User myadmin@localhost 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:
- "admin@localhost"
- "myadmin@localhost"
重新启动 ejabberd
服务。
sudo systemctl restart ejabberd
步骤 5:配置防火墙和访问 UI
允许防火墙上的 Ejabberd UI 端口。
sudo firewall-cmd --add-port=5280/tcp --permanent
sudo firewall-cmd --reload
应可通过 http://ip-address:5280/admin/ 访问网络管理员。使用您喜欢的浏览器打开 URL。使用完整用户名和域名登录,例如 myadmin@localhost
。
有关 Ejabberd 管理的进一步阅读,请参阅官方文档。
对于 Ubuntu/Debian 用户,您可以使用指南安装 Ejabberd XMPP 服务器:
- 如何在 Ubuntu/Debian 上安装 XMPP 服务器