Ubuntu 20.04 LTS下FreeSWITCH 1.10.x源码编译与配置指南
2026/7/16 12:15:38 网站建设 项目流程

1. Ubuntu 20.04 LTS安装FreeSWITCH完整指南

FreeSWITCH作为开源的软交换平台,在VoIP领域有着广泛的应用。本文将详细介绍在Ubuntu 20.04 LTS系统上从源码编译安装FreeSWITCH 1.10.x的全过程,包含依赖解决、编译优化和常见问题处理。

1.1 环境准备与依赖安装

首先确保系统为最新状态:

sudo apt update && sudo apt upgrade -y

安装编译工具链和基础依赖:

sudo apt install -y build-essential pkg-config cmake automake autoconf libtool

安装FreeSWITCH核心依赖库:

sudo apt install -y 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 libpq-dev unixodbc-dev ntpdate libxml2-dev libpq5 sngrep \ libflite1 flite-dev

注意:Ubuntu 20.04默认的FFmpeg版本与FreeSWITCH 1.10.x兼容,如果遇到avformat相关错误,可能需要降级FFmpeg。

1.2 安装必要的前置库

1.2.1 安装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 && sudo ldconfig -p | grep libks
1.2.2 安装signalwire-c
sudo git clone https://github.com/signalwire/signalwire-c.git /usr/local/src/signalwire-c cd /usr/local/src/signalwire-c sudo cmake . sudo make && sudo make install

验证安装:

sudo ldconfig && sudo ldconfig -p | grep signalwire

1.3 安装Sofia-SIP和SpanDSP

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

验证安装:

sudo ldconfig && sudo ldconfig -p | grep sofia
1.3.2 SpanDSP安装

使用特定commit版本避免兼容问题:

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

验证安装:

sudo ldconfig && sudo ldconfig -p | grep spandsp

1.4 编译安装FreeSWITCH

1.4.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
1.4.2 配置编译选项

基础配置:

sudo ./configure

如果需要PostgreSQL和ODBC支持:

sudo ./configure --enable-core-odbc-support --enable-core-pgsql-support
1.4.3 编译和安装
sudo make sudo make install sudo make cd-sounds-install sudo make cd-moh-install

1.5 系统集成与配置

1.5.1 创建系统用户
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/*
1.5.2 创建符号链接
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
1.5.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 enable freeswitch sudo systemctl start freeswitch

检查服务状态:

sudo systemctl status freeswitch

1.6 常见问题解决

1.6.1 mod_spandsp编译错误

如果遇到类似错误:

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

解决方案:

cd /usr/local/src/spandsp git reset --hard 0d2e6ac65e0e8f53d652665a743015a88bf048d4 make clean && ./configure && make && sudo make install

然后重新编译FreeSWITCH。

1.6.2 mod_verto找不到ks.h

错误信息:

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

确保安装了正确版本的libks:

cd /usr/local/src/libks git checkout -b v1.8.3 v1.8.3 make clean && cmake . && make && sudo make install
1.6.3 Sofia模块加载失败

错误信息:

undefined symbol: tptag_socket_keepalive

重新编译sofia-sip并确认版本兼容性:

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

1.7 基础配置与测试

1.7.1 启动控制台
fs_cli
1.7.2 测试SIP功能

在FreeSWITCH控制台执行:

sofia status sofia status profile internal
1.7.3 创建测试分机

编辑/usr/local/freeswitch/conf/directory/default/1000.xml

<include> <user id="1000"> <params> <param name="password" value="$${default_password}"/> </params> </user> </include>

重载配置:

reloadxml

1.8 性能优化建议

1.8.1 编译优化

在configure时添加优化参数:

./configure CFLAGS="-O3 -fomit-frame-pointer" CXXFLAGS="-O3 -fomit-frame-pointer"
1.8.2 系统参数调整

修改文件描述符限制:

echo "freeswitch soft nofile 999999" | sudo tee -a /etc/security/limits.conf echo "freeswitch hard nofile 999999" | sudo tee -a /etc/security/limits.conf
1.8.3 内核参数优化

编辑/etc/sysctl.conf添加:

net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216

应用修改:

sudo sysctl -p

1.9 安全加固措施

1.9.1 修改默认密码

编辑/usr/local/freeswitch/conf/vars.xml

<X-PRE-PROCESS cmd="set" data="default_password=YourStrongPassword"/>
1.9.2 限制SIP访问

编辑/usr/local/freeswitch/conf/sip_profiles/internal.xml

<param name="apply-inbound-acl" value="localnet.auto"/>

配置ACL规则/usr/local/freeswitch/conf/autoload_configs/acl.conf.xml

<list name="localnet.auto" default="deny"> <node type="allow" cidr="192.168.1.0/24"/> </list>
1.9.3 启用TLS加密

生成证书:

cd /usr/local/freeswitch/bin ./freeswitch -certgen

配置TLS参数:

<param name="tls-bind-params" value="transport=tls"/> <param name="tls-sip-port" value="5061"/>

1.10 日志与监控

1.10.1 日志配置

编辑/usr/local/freeswitch/conf/autoload_configs/console.conf.xml

<param name="loglevel" value="info"/>
1.10.2 使用sngrep监控

安装后可直接使用:

sngrep
1.10.3 性能监控

FreeSWITCH内置命令:

show status show calls count show channels count

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询