当前位置: 首页 > news >正文

Ubuntu 20.04安装FreeSWITCH 1.10.7完整指南

1. 环境准备与依赖安装

在Ubuntu 20.04 LTS上安装FreeSWITCH前,需要确保系统环境配置正确。以下是完整的依赖安装步骤:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential pkg-config uuid-dev zlib1g-dev libjpeg-dev \ libsqlite3-dev libcurl4-openssl-dev libpcre3-dev libspeexdsp-dev \ libldns-dev libedit-dev libtiff5-dev yasm libopus-dev libsndfile1-dev \ unzip libavformat-dev libswscale-dev libavresample-dev liblua5.2-dev \ liblua5.2-0 cmake libpq-dev unixodbc-dev autoconf automake ntpdate \ libxml2-dev libpq-dev libpq5 sngrep libflite1 flite-dev

重要提示:Ubuntu 22.04及以上版本需要特别注意OpenSSL 3.0的兼容性问题。如果必须使用旧版FreeSWITCH,建议在Ubuntu 20.04 LTS上安装。

2. 核心库编译安装

2.1 libks安装(关键步骤)

FreeSWITCH 1.10.x需要特定版本的libks库:

sudo git clone -b v1.8.3 https://github.com/signalwire/libks.git /usr/local/src/libks cd /usr/local/src/libks sudo cmake . sudo make && sudo make install

验证安装:

sudo ldconfig && ldconfig -p | grep libks

2.2 Sofia-SIP库安装

sudo git clone https://github.com/freeswitch/sofia-sip /usr/local/src/sofia-sip cd /usr/local/src/sofia-sip sudo ./bootstrap.sh sudo ./configure sudo make && sudo make install

验证安装:

sudo ldconfig && ldconfig -p | grep sofia

2.3 SpanDSP库安装(特别注意)

必须使用特定commit版本以避免编译错误:

sudo git clone https://github.com/freeswitch/spandsp /usr/local/src/spandsp cd /usr/local/src/spandsp sudo git checkout -b finecode20230705 0d2e6ac65e0e8f53d652665a743015a88bf048d4 sudo ./bootstrap.sh sudo ./configure sudo make && sudo make install

验证安装:

sudo ldconfig && ldconfig -p | grep spandsp

3. FreeSWITCH编译安装

3.1 源码获取与解压

sudo wget -c https://files.freeswitch.org/releases/freeswitch/freeswitch-1.10.7.-release.tar.gz -P /usr/local/src cd /usr/local/src sudo tar -zxvf freeswitch-1.10.7.-release.tar.gz cd freeswitch-1.10.7.-release

3.2 配置与编译

基础配置:

sudo ./configure

如果需要PostgreSQL或ODBC支持:

sudo ./configure --enable-core-odbc-support --enable-core-pgsql-support

开始编译(此过程可能需要较长时间):

sudo make sudo make install

安装声音文件:

sudo make cd-sounds-install sudo make cd-moh-install

4. 系统集成与配置

4.1 创建符号链接

sudo ln -s /usr/local/freeswitch/conf /etc/freeswitch sudo ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli sudo ln -s /usr/local/freeswitch/bin/freeswitch /usr/sbin/freeswitch

4.2 创建专用用户

sudo groupadd freeswitch sudo adduser --quiet --system --home /usr/local/freeswitch \ --gecos 'FreeSWITCH open source softswitch' \ --ingroup freeswitch freeswitch --disabled-password sudo chown -R freeswitch:freeswitch /usr/local/freeswitch/ sudo chmod -R ug=rwX,o= /usr/local/freeswitch/ sudo chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*

4.3 Systemd服务配置

创建服务文件/etc/systemd/system/freeswitch.service

[Unit] Description=FreeSWITCH open source softswitch Wants=network-online.target Requires=network.target local-fs.target After=network.target network-online.target local-fs.target [Service] Type=forking PIDFile=/usr/local/freeswitch/run/freeswitch.pid Environment="DAEMON_OPTS=-nonat" Environment="USER=freeswitch" Environment="GROUP=freeswitch" EnvironmentFile=-/etc/default/freeswitch ExecStartPre=/bin/chown -R ${USER}:${GROUP} /usr/local/freeswitch ExecStart=/usr/local/freeswitch/bin/freeswitch -u ${USER} -g ${GROUP} -ncwait ${DAEMON_OPTS} TimeoutSec=45s Restart=always [Install] WantedBy=multi-user.target

启用并启动服务:

sudo systemctl daemon-reload sudo systemctl start freeswitch sudo systemctl enable freeswitch

检查服务状态:

sudo systemctl status freeswitch

5. 常见问题解决

5.1 mod_spandsp编译错误

如果遇到类似错误:

mod_spandsp_dsp.c:159:10: error: 'V18_MODE_5BIT_4545' undeclared

解决方案:

cd /usr/local/src/spandsp sudo git checkout -b finecode20230705 0d2e6ac65e0e8f53d652665a743015a88bf048d4 sudo make clean sudo make && sudo make install

然后重新编译FreeSWITCH。

5.2 mod_verto找不到ks.h

确保使用正确版本的libks:

cd /usr/local/src/libks sudo git checkout v1.8.3 sudo make clean sudo cmake . sudo make && sudo make install

5.3 Sofia模块加载失败

如果出现错误:

undefined symbol: tptag_socket_keepalive

解决方案:

cd /usr/local/src/sofia-sip sudo make clean sudo ./bootstrap.sh sudo ./configure sudo make && sudo make install

然后重新编译FreeSWITCH。

6. 网络配置建议

对于使用DHCP的系统,建议配置静态IP以避免FreeSWITCH启动时网络未就绪的问题:

sudo nano /etc/netplan/00-installer-config.yaml

添加类似配置:

network: ethernets: ens33: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]

应用配置:

sudo netplan apply

7. 测试与验证

启动FreeSWITCH控制台:

fs_cli

在控制台中检查核心模块状态:

sofia status

检查注册用户状态:

sofia status profile internal reg
http://www.cnnetsun.cn/news/3424253.html

相关文章:

  • 如何快速批量下载抖音视频:开源工具的完整指南
  • Claude Code本地部署实操指南:30分钟接入Git工作流
  • 5分钟上手oeAware-tune:从安装到启用的快速入门教程
  • 3分钟快速解密:用ncmdumpGUI轻松破解网易云音乐NCM格式限制
  • Error: L6407E: 0x974 Bytes Overflow - 从.ANY Selector错误看RT-Thread工程RAM优化实战
  • 留学生回国求职只盯着互联网?教你用两手准备投递在华外企「蒸汽求职分享」
  • ESD文件处理与Windows系统部署工具指南
  • CSGO高端局学习:通过职业选手第一视角录播提升竞技水平
  • openEuler/arkui-linux应用案例集锦:探索5个令人惊叹的Linux GUI项目
  • ft_wl_fwk XDG Shell协议实现:现代Linux桌面窗口管理
  • GPT-Image-2中文支持优化与灰度推送验证指南
  • ESP32 蓝牙AT指令实战:构建BLE透传与安全配对应用
  • 机器人AI开发困境与LeRobot框架的模块化解法
  • WebOS Homebrew Channel终极指南:解锁LG智能电视的完整潜力
  • 拓扑学上同调理论构造:从链复形到导出函子的系统方法
  • CMakeLists.txt 实战模板:从单文件到多模块工程
  • Zotero Better Notes:5分钟构建你的终极学术笔记自动化工作流
  • JetBrains IDE安装避坑指南:环境、架构与许可深度解析
  • 如何为iPhone 6s安装TrollInstallerX:解决iOS 15.8.3兼容性问题的完整指南
  • CCleaner系统清理工具使用指南与优化技巧
  • DLAI-Anthropic-MCP技术生态解析与应用实践
  • AI集群中NVMe SSD性能优化与部署实践
  • 豆包屏幕共享真相:不是远程控制,而是UI截图+语义解析
  • CS-Notes 终极指南:构建编程语言知识体系的完整教程
  • Native Alpha For Android:Android WebView透明容器化架构深度解析
  • PyTorch多卡训练:从DataParallel到DDP实战指南
  • 老款Mac升级终极方案深度探索:技术揭秘与实战验证
  • Word域代码与制表位:实现公式按章节自动编号与对齐
  • 正规科技查新网站有哪些?权威平台推荐
  • LabVIEW与开关型传感器避障模块开发指南