注意
此过程最后测试的 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,您必须使用
curl
或wget
。本指南使用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
将带您进入菜单选择屏幕
仔细查看这些选项,并根据您的要求进行选择。如前所述,这需要一些额外的功课。
构建并安装 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 中的默认防火墙。此处的目标是向外界开放 SIP 端口,并根据 Asterisk 文档的建议,在 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