Rocky Linux 9 源码编译 Asterisk 20 + FreePBX 17 搭建小型呼叫中心

Rocky Linux 9 源码编译 Asterisk 20 + FreePBX 17 搭建小型呼叫中心

【最近实战】

问题背景

我需要在服务器上部署一套小型的呼叫中心业务,底层使用 Asterisk 服务。服务器环境是 Rocky Linux 9.7,之前有人尝试过但没完成,系统里残留了一些不完整的配置。

我向 AI 助手说明了需求:要在这台服务器上部署呼叫中心,底层用 Asterisk。AI 助手先对服务器做了全面扫描,发现几个关键问题:

  1. Asterisk 未安装
  2. 系统只有一个 CentOS 7 的本地 ISO 源,无法直接安装 el9 的包
  3. 开发工具、Web 服务器、数据库都未就绪
  4. SELinux 处于 enforcing 模式

方案选型

AI 助手给出了三个方案让我选择:

  • 方案A:源码编译 Asterisk 20 LTS + FreePBX 17(官方成熟搭配)
  • 方案B:使用 FreePBX 官方安装脚本(自动化但版本受限)
  • 方案C:源码编译 Asterisk 23 + Issabel(Issabel 太老,不兼容新版 Asterisk)

我最初选了方案C,但 AI 助手查证后发现 Issabel 只支持 Asterisk 1.8~12,在 Rocky Linux 9 上无法运行。它如实告知此路不通,建议回退到方案A。我接受了这个建议。

这里有个版本兼容的细节值得注意:Asterisk 23 是最新版,但 FreePBX 17 官方尚未支持它。AI 助手查到了 FreePBX 17 默认搭配的是 Asterisk 20.x LTS(长期支持版,支持到 2027 年),最终确定使用 Asterisk 20.19.0 + FreePBX 17.0.28 的组合。

部署过程

第一步:恢复系统仓库

AI 助手发现 Rocky Linux 的官方仓库文件被移到了 /etc/yum.repos.d/back/ 目录下,需要恢复才能安装依赖包。它执行了恢复操作,同时禁用了 el7 的 ISO 源。

第二步:安装开发环境和依赖

通过 Wisdom SSH 的远程终端功能,AI 助手执行了以下安装:

dnf groupinstall -y "Development Tools"
dnf install -y epel-release
dnf config-manager --set-enabled crb

CRB(CodeReady Builder)仓库是 Rocky Linux 9 的关键,很多开发包(如 jansson-devel、libsrtp-devel)都在这个仓库里,默认是禁用的。不启用它,Asterisk 编译会缺少大量依赖。

第三步:源码编译 Asterisk 20.19.0

AI 助手从 GitHub 克隆了 Asterisk 20.19.0 的源码(tag 20.19.0),然后执行标准的编译三部曲:

./configure
make -j$(nproc)
make install
make samples

编译过程顺利,Asterisk 成功安装到系统。AI 助手还手动创建了 systemd 服务文件和 asterisk 运行用户。

第四步:安装 Web 环境和数据库

dnf install -y mariadb-server mariadb httpd php php-mysqlnd php-gd php-xml ...

这里遇到了第一个坑:FreePBX 17 要求 PHP 8.1+,但 Rocky Linux 9 默认的 PHP 是 8.0。AI 助手通过安装 REMI 仓库并切换到 PHP 8.3 模块解决了这个问题:

dnf module reset php -y
dnf module enable php:remi-8.3 -y
dnf remove -y php-*
dnf install -y php php-mysqlnd php-gd ...

第五步:配置数据库和 ODBC

AI 助手创建了 FreePBX 专用的数据库和用户:

CREATE DATABASE asterisk;
CREATE DATABASE asteriskcdr;
CREATE USER 'freepbx'@'localhost' IDENTIFIED BY '***';

ODBC 是 FreePBX 连接数据库的关键通道,AI 助手配置了 /etc/odbc.ini 文件,并通过 isql 命令验证了连接正常。

第六步:安装 FreePBX

从 GitHub 克隆 FreePBX 17 源码后,AI 助手执行安装:

php install --dbuser=freepbx --dbpass=*** --dbname=asterisk --cdrdbname=asteriskcdr -n

安装脚本检测到 SELinux 处于 enforcing 模式,直接报错退出。这是 FreePBX 的硬性要求——必须在 SELinux permissive 模式下安装和运行。

AI 助手询问我是否允许关闭 SELinux,我确认后它执行了:

setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

重新运行安装脚本,这次顺利通过。FreePBX 17.0.28 安装成功。

第七步:安装核心模块

安装完成后,AI 助手通过 fwconsole 命令安装了 core、dashboard、sipsettings、voicemail 等基础模块。这些是 FreePBX 运行所必需的。

最终成果

部署完成后,AI 助手汇总了各组件版本:

组件版本状态
Asterisk20.19.0运行中
FreePBX17.0.28已安装
Apache2.4.62运行中
MariaDB10.5.29运行中
PHP8.3.31运行中

服务器 IP 为 ***,通过浏览器访问 http://***/admin/ 即可进入 FreePBX Web 管理界面。

经验总结

这次部署有几个关键点值得记录:

1. 版本兼容性是第一道坎

Asterisk 和 FreePBX 的版本搭配需要严格匹配。Asterisk 23 虽然是最新版,但 FreePBX 17 尚未支持它。选择 Asterisk 20 LTS + FreePBX 17 是官方推荐的成熟组合。

2. Rocky Linux 9 的仓库配置

相比 CentOS 7,Rocky Linux 9 的仓库管理有变化:

  • CRB 仓库需要手动启用(dnf config-manager --set-enabled crb
  • EPEL 仓库需要额外安装
  • 默认 PHP 版本是 8.0,但 FreePBX 17 需要 8.1+

3. SELinux 必须处理

FreePBX 安装脚本会直接检查 SELinux 状态并拒绝安装。要么设为 permissive,要么为 FreePBX 编写完整的 SELinux 策略——后者工作量巨大,生产环境通常选择 permissive。

4. 源码编译 vs 包管理器

在 Rocky Linux 9 上,Asterisk 没有现成的 RPM 包,源码编译是唯一选择。编译过程约 15 分钟,关键在于提前装全所有 -devel 包,否则 configure 阶段会反复报错。

借助 Wisdom SSH 的 AI 辅助功能,整个部署过程从环境检查到最终验证一气呵成,避免了手动排查依赖和版本兼容问题的繁琐过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值