FreeSwitch1.10.7 + MySQL + Docker

FreeSwitch1.10.7 介绍

根据百科,FreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供音视频服务。FreeSWITCH 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。

为什么替换默认的 SQLite 数据库?FreeSwitch 默认使用 SQLite 用来存放运行时的用户注册、通话状态和事件等数据记录,但 SQLite 作为轻量数据库更容易出现崩溃和文件损坏现象,且后续使用 OpenSIPS 做高可用必须使用可以共享访问的数据库。

Debian 10 "Buster" is the reference platform for  FreeSWITCH™ as of version 1.10
Dependencies are available from FreeSWITCH repository via the "apt-get build-dep freeswitch" command.

注:官网将 Debian 10 (代号 Buster)作为参考平台,且容易获得所有需要的依赖包。
本文采用 Docker debian:buster 作为 FreeSwitch 的运行环境,本文假设你使用 debian 10 系统或镜像,并且 FreeSwitch 已经正常编译运行可注册通话。如果没有可以参照我上一篇文章,动手制作一个镜像,一键启动 FreeSwitch。

本文使用环境(点击跳转):
FreeSwitch-1.10.7
Docker debian:buster
MySQL 5.7
NOTE:
1.FreeSwitch 采用源码编译, debian:buster 容器化部署。
2.自行安装一台 MySQL 5.7 服务器,或其他可访问的 MySQL 服务(不要求和 FreeSwitch 在同一台服务器)。

进入正文

直接进入正题
手动创建空数据库,库名 freeswitch

# 安装 FreeSwitch mod_mariadb 模块(完全兼容 MySQL 5.7)
apt-get install -y libmariadb-dev mariadb-client
sed -i "5c <load module=\"mod_mariadb\"/>" /usr/local/freeswitch/conf/autoload_configs/pre_load_modules.conf.xml
cd /usr/local/src/freeswitch-master/src/mod/databases/mod_mariadb
make && make install
# 创建文件 vim /etc/mysql_db.conf
# 写入以下 mysql 数据库连接信息并保存(需修改以下信息!)
db_host=127.0.0.1
db_port=3306
db_user=root
db_password=root
db_name=freeswitch
# 更新变量
source /etc/mysql_db.conf

# 插入到 freeswitch 对应配置文件
sed -i "183i <param name=\"core-db-dsn\" value=\"mariadb://Server=$db_host;Port=$db_port;Database=$db_name;Uid=$db_user;Pwd=$db_password;\" />" /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml
sed -i "239i <param name=\"odbc-dsn\" value=\"mariadb://Server=$db_host;Port=$db_port;Database=$db_name;Uid=$db_user;Pwd=$db_password;\" />" /usr/local/freeswitch/conf/sip_profiles/internal.xml
sed -i "70i <param name=\"odbc-dsn\" value=\"mariadb://Server=$db_host;Port=$db_port;Database=$db_name;Uid=$db_user;Pwd=$db_password;\" />" /usr/local/freeswitch/conf/autoload_configs/voicemail.conf.xml
sed -i "4i <param name=\"odbc-dsn\" value=\"mariadb://Server=$db_host;Port=$db_port;Database=$db_name;Uid=$db_user;Pwd=$db_password;\" />" /usr/local/freeswitch/conf/autoload_configs/callcenter.conf.xml
sed -i "4i <param name=\"odbc-dsn\" value=\"mariadb://Server=$db_host;Port=$db_port;Database=$db_name;Uid=$db_user;Pwd=$db_password;\" />" /usr/local/freeswitch/conf/autoload_configs/directory.conf.xml
sed -i "4i <param name=\"odbc-dsn\" value=\"mariadb://Server=$db_host;Port=$db_port;Database=$db_name;Uid=$db_user;Pwd=$db_password;\" />" /usr/local/freeswitch/conf/autoload_configs/fifo.conf.xml

重启freeswitch

# 先前台运行看看(后台运行命令 freeswitch -nc 可以 fs_cli 进入交互窗口)
freeswitch 
# 成功运行,用 microsip 注册一个话机试试(xlite、linphone、microsip 等软件均可)

在这里插入图片描述

在这里插入图片描述
在线状态,手动连接到 MySQL 数据库查看表 sip_registrations,刚刚的分机注册记录这时候应该已经进来了。用另一台电脑登录分机互打并查看表 sip_dialogs,有通话状态信息进来了。改造完成!

更多命令和详细配置一定要去官网阅读调试,传送门

总结

希望大家通过本文能让大家快速使用 FreeSwitch 做 SIP 服务器和软电话系统。FreeSwitch 的多节点高可用可以看我另一篇文章,后面我们将用代理服务器对 FreeSwitch 做负载均衡配置和 OpenSIPS 的多节点高可用做更多介绍,并全部更新到私有化部署版本。后续我会对各电话外呼中心,电话网络基建进行更多的详尽解释,喜欢可以关注我~有问题可以留言或私信我

更多推荐