
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 libks2.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 sofia2.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 spandsp3. 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.-release3.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-install4. 系统集成与配置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/freeswitch4.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 ugrwX,o /usr/local/freeswitch/ sudo chmod -R urwx,grx /usr/local/freeswitch/bin/*4.3 Systemd服务配置创建服务文件/etc/systemd/system/freeswitch.service[Unit] DescriptionFreeSWITCH open source softswitch Wantsnetwork-online.target Requiresnetwork.target local-fs.target Afternetwork.target network-online.target local-fs.target [Service] Typeforking PIDFile/usr/local/freeswitch/run/freeswitch.pid EnvironmentDAEMON_OPTS-nonat EnvironmentUSERfreeswitch EnvironmentGROUPfreeswitch 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} TimeoutSec45s Restartalways [Install] WantedBymulti-user.target启用并启动服务sudo systemctl daemon-reload sudo systemctl start freeswitch sudo systemctl enable freeswitch检查服务状态sudo systemctl status freeswitch5. 常见问题解决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确保使用正确版本的libkscd /usr/local/src/libks sudo git checkout v1.8.3 sudo make clean sudo cmake . sudo make sudo make install5.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 apply7. 测试与验证启动FreeSWITCH控制台fs_cli在控制台中检查核心模块状态sofia status检查注册用户状态sofia status profile internal reg