freeswitch1.10.7 安装&部署排坑

环境

CentOS Linux release 7.6.1810 (Core)

背景

  fs1.10之前的版本已停止维护,意味着很多已知bug需要升级至1.10+才能解决。更重要的是,本人负责的产品(tp网页电话)在1.6版本中的兼容性非常差,无法在mac(m1芯片)中正常使用。而在1.10.4+版本后,安装和部署流程发生了很大变化,例如sofia和spandsp模块需要单独安装等,实际上增加了部署的复杂度。
  最初为求便利,安装的是1.10.3版本,但是发现该版本的mod_verto模块在客户端接通后,语音流延时非常严重(大概有2~5s)用户体验很差。没办法只能安装最新的1.10.7版本,不出意外遇到了不少坑。
  这里把部署和排坑过程记录下,希望帮助到有需要的人。

部署&排坑记录

安装sofia-sip和spandsp

sofia-sip
spandsp
  我的服务器是不通外网的,没法直接git clone,所以从github上下载*.zip文件后上传到服务器,然后:

unzip sofia-sip-master.zip
cd sofia-sip-master         
./bootstrap.sh          
./configure      
make install

unzip spandsp-master.zip
cd spandsp-master         
./bootstrap.sh          
./configure      
make install

  最后别忘了执行export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig,这条命令告诉fs去哪里找sofia-sip和spandsp,否则后续freeswitch安装和运行时会报错。

安装freeswitch_1.10.7

  下载freeswitch_1.10.7,然后:

tar -xvf /opt/fs/freeswitch-1.10.7.-release.tar.bz2
cd freeswitch-1.10.7.-release/      
./rebootstrap.sh       
./configure     
make && make install

  这个过程中可能会出现多个1.10.4之前版本中不会遇到的坑。

mod_verto.c:46:16: fatal error: ks.h: No such file or directory。

  解决方案是安装libks:

tar -xvf libks-1.8.0.tar.gz
cmake .      
make && make install 
ldconfig

  这个过程可能会报缺少"uuid"依赖,需安装libuuid-devel:yum install libuuid-devel。最后别忘了执行ldconfig创建动态链接,否则安装fs的时候会报错找不到libks.so.1。

libks.so.1: cannot open shared object file: No such file or directory

  上面也说到了,安装完libks后执行ldconfig即可。也有另一种解决方法,这个问题根源在于找不到libks.so.1,那么先查下它的位置:find / -name libks.so.1,假如查到其位置在/usr/lib,则手动添加其位置:export LD_LIBRARY_PATH=/usr/lib感谢stackoverflow

bash: cmake: command not found

  如果未安装cmake,则在上一步安装libks的过程中会报错。安装cmake过程:

tar -xvf cmake-3.23.0.tar.gz
./bootstrap      
gmake       
make install       
cmake –version

  如果执行cmake --version报错cmake: command not found,则需要创建其软连接:ln -s /usr/local/bin/cmake /usr/bin

mod_sofia启动失败

  安装完成后启动fs,可能有如下报错(尤其是服务器外网不通的情况):
[CRIT] switch_loadable_module.c:1750 Error Loading module /usr/local/freeswitch/mod/mod_sofia.so **Module load routine returned an error**。这个算是fs的一个bug,这个报错附近往往会有如下报错:
[ERR] sofia.c:5175 Invalid ext-rtp-ip
[ERR] sofia.c:5272 Invalid ext-sip-ip
  解决方案是在vars.xml中,在stun-set标签中,将external_rtp_ip和external_sip_ip的值显式指定为本机ip即可。这个报错曾经引得国外开发者破防骂街哈哈!围观现场

libtool: Version mismatch error.

在这里插入图片描述
一般出现在freeswitch的./configure和make前,解决:执行autoreconf -ivf后重试。

各种依赖问题

  如果诸位在安装部署过程中,没有遇到过缺依赖或者依赖版本过低的问题,那你基本上是天选之子了。这类问题非常繁琐,但是善用百度google都能寻到解决方案。如果缺依赖则yum install或者源码安装,如果依赖包的版本过低,则先yum remove卸载后重新安装高版本即可。
  这种依赖问题没有捷径,非要说的话有两点:保持耐心 + 仔细看报错信息。一些我遇到的问题和解决方案可以参考这里

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值