跳至内容

注意

此过程测试过的 Rocky Linux 的最新版本是 8.5。由于此过程大部分内容依赖于直接从 Asterisk 进行源代码构建以及 Rocky Linux 的一组简单的开发工具,因此它应该适用于所有版本。如果您遇到问题,请告诉我们!

在 Rocky Linux 上安装 Asterisk

什么是 Asterisk?

Asterisk 是一个开源框架,用于构建通信应用程序。此外,Asterisk 将普通计算机转变为通信服务器,驱动 IP PBX 系统、VoIP 网关、会议服务器和其他自定义解决方案。它被全球的小型企业、大型企业、呼叫中心、运营商和政府机构使用。

Asterisk 是免费且开源的,由 Sangoma 赞助。Sangoma 还提供以 Asterisk 为核心的商业产品,根据您的经验和预算,使用这些产品可能比自行构建更有益。只有您和您的组织才知道答案。

应该注意的是,本指南要求管理员自行进行大量研究。安装通信服务器并不难,但运行它可能非常复杂。虽然本指南将使您的服务器启动并运行,但它并未准备好供您在生产环境中使用。

先决条件

至少,您将需要以下技能和工具来完成本指南

  • 一台运行 Rocky Linux 的机器
  • 熟悉修改配置文件和从命令行发出命令
  • 了解如何使用命令行编辑器(我们在这里使用 vi,但您可以随意替换为您喜欢的编辑器。)
  • 您将需要 root 访问权限,并且最好在终端中以 root 用户身份登录
  • 来自 Fedora 的 EPEL 存储库
  • 能够以 root 用户身份登录或使用 sudo 运行 root 命令。此处的所有命令都假定用户具有 sudo 权限。但是,配置和构建过程将使用 sudo -s 运行。
  • 要获取最新版本的 Asterisk,您必须使用 curlwget。本指南使用 wget,但如果您愿意,可以随意替换相应的 curl 命令。

更新 Rocky Linux 并安装 wget

sudo dnf -y update

这将使您的服务器与自上次更新或安装以来已发布或更新的所有软件包保持同步。然后运行

sudo dnf install wget

设置主机名

将您的主机名设置为您将用于 Asterisk 的域。

sudo hostnamectl set-hostname asterisk.example.com

添加所需的存储库

首先,安装 EPEL(企业 Linux 的额外软件包)

sudo dnf -y install epel-release

接下来,启用 Rocky Linux 的 PowerTools

sudo dnf config-manager --set-enabled powertools

安装开发工具

sudo dnf group -y install "Development Tools"
sudo dnf -y install git wget  

安装 Asterisk

下载并配置 Asterisk 构建

在下载此脚本之前,请确保您拥有最新版本。为此,请访问 此处的 Asterisk 下载链接 并查找最新版本的 Asterisk。然后复制链接地址。在撰写本文时,以下是最新版本

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz 
tar xvfz asterisk-20-current.tar.gz
cd asterisk-20.0.0/

在运行下面的 install_prereq(以及其余命令)之前,您需要成为超级用户或 root。此时,永久使用 sudo 会更轻松。您将在流程的后面退出 sudo

sudo -s
contrib/scripts/install_prereq install

脚本完成后,您应该会看到以下内容

#############################################
## install completed successfully
#############################################

现在您已经拥有了所有必需的软件包,下一步是配置和构建 Asterisk

./configure --libdir=/usr/lib64 --with-jansson-bundled=yes

假设配置顺利运行,您将看到一个大型 ASCII Asterisk 标志,然后是 Rocky Linux 上的以下内容

configure: Package configured for:
configure: OS type  : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :

设置 Asterisk 菜单选项 [更多选项]

这是管理员需要做一些研究的步骤之一。存在许多您可能不需要的菜单选项。运行以下命令

make menuselect

将带您进入菜单选择屏幕

menuselect screen

仔细查看这些选项,并根据您的需求进行选择。如前所述,这需要额外的研究。

构建并安装 Asterisk

要进行构建,您需要依次运行以下命令

make
make install

安装文档不是必需的,但除非您是通信服务器专家,否则您会希望安装它们

make progdocs

接下来,安装基本的 PBX 并进行配置。基本的 PBX 就只是这样,非常基础!您可能需要对未来的配置进行更改,才能使您的 PBX 正常运行。

make basic-pbx
make config

Asterisk 配置

创建用户和组

您需要一个专门的用户和组来运行 Asterisk。现在创建它们

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
chown -R asterisk.asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib64/asterisk
restorecon -vr {/etc/asterisk,/var/lib/asterisk,/var/log/asterisk,/var/spool/asterisk}

由于大部分构建工作已完成,请退出 sudo -s 命令。这将需要其余大部分命令再次使用 sudo

exit

设置默认用户和组

sudo vi /etc/sysconfig/asterisk

删除下面两行的注释并保存

AST_USER="asterisk"
AST_GROUP="asterisk"
sudo vi /etc/asterisk/asterisk.conf

删除下面两行的注释并保存

runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.

配置 Asterisk 服务

sudo systemctl enable asterisk

配置防火墙

本示例使用 firewalld 作为防火墙,这是 Rocky Linux 的默认设置。目标是根据 Asterisk 文档的建议,向外部开放 SIP 端口和 10000-20000 端口上的 RTP(实时传输协议)。

您几乎肯定需要为其他面向外部的服务(HTTP/HTTPS)配置其他防火墙规则,您可能希望将这些规则限制在您的 IP 地址。这超出了本文档的范围。

sudo firewall-cmd --zone=public --add-service sip --permanent
sudo firewall-cmd --zone=public --add-port=10000-20000/udp --permanent

由于您已使 firewalld 命令永久生效,因此必须重启服务器。您可以使用以下命令进行操作

sudo shutdown -r now

测试

Asterisk 控制台

要进行测试,请连接到 Asterisk 控制台

sudo asterisk -r

这将带您进入 Asterisk 命令行客户端。在显示基本的 Asterisk 信息后,您将看到以下提示符

asterisk*CLI>

要更改控制台的详细程度,请使用以下命令

core set verbose 4

这将显示以下内容在 Asterisk 控制台中

Console verbose was OFF and is now 4.

显示示例终端认证

在 Asterisk 命令行客户端提示符处,键入

pjsip show auth 1101

这将返回用户名和密码信息,您可以使用这些信息连接到任何 SIP 客户端。

结论

以上将使您的服务器启动并运行,但您需要负责完成配置、连接设备和进一步的故障排除。

运行 Asterisk 通信服务器需要时间和精力,并且需要管理员进行研究。有关配置和使用 Asterisk 的更多信息,请参阅 此处的 Asterisk Wiki。

贡献者:Steven Spencer, Ganna Zhyrnova