
1. FreeSWITCH 1.10.12 编译环境准备在Debian最新稳定版系统上编译FreeSWITCH 1.10.12之前需要确保基础编译环境和依赖库完整。我通常使用Debian 12 Bookworm作为基准环境这是目前最稳定的发行版本。1.1 系统基础配置首先更新系统并安装基础开发工具链sudo apt update sudo apt upgrade -y sudo apt install -y build-essential cmake automake autoconf libtool pkg-config注意建议在干净的Debian系统上操作避免已有软件包冲突。如果之前安装过旧版FreeSWITCH务必先彻底卸载。1.2 依赖库安装FreeSWITCH对音频/视频处理有复杂依赖需要安装以下关键组件sudo apt install -y \ libssl-dev zlib1g-dev libdb-dev libpq-dev \ libedit-dev libsqlite3-dev libcurl4-openssl-dev \ libldns-dev libedit-dev libjpeg-dev libpng-dev \ libtiff-dev libx11-dev libyuv-dev libvpx-dev \ libavformat-dev libswscale-dev libavresample-dev \ liblua5.2-dev libopus-dev libsndfile1-dev \ libspeex-dev libspeexdsp-dev libcodec2-dev \ libgsm1-dev libilbc-dev libsilk-dev对于数据库支持根据实际需要选择# PostgreSQL支持 sudo apt install -y postgresql-server-dev-all # MySQL支持 sudo apt install -y default-libmysqlclient-dev2. 源码获取与配置2.1 下载源码包推荐从官方Git仓库获取最新稳定版代码git clone https://github.com/signalwire/freeswitch.git cd freeswitch git checkout v1.10.122.2 初始化构建系统运行bootstrap脚本生成configure文件./bootstrap.sh -j提示-j参数启用并行处理加速生成过程。如果遇到权限问题先执行chmod x bootstrap.sh2.3 配置编译选项典型配置命令如下./configure \ --prefix/usr/local/freeswitch \ --enable-core-pgsql-support \ --enable-core-odbc-support \ --enable-zrtp \ --enable-portable-binary \ --enable-system-lua关键参数说明--prefix指定安装目录--enable-core-pgsql-support启用PostgreSQL支持--enable-system-lua使用系统Lua而非内置版本3. 编译与安装3.1 并行编译利用多核CPU加速编译make -j$(nproc)编译过程可能需要30-60分钟取决于硬件性能。建议监控系统资源watch -n 1 echo CPU: $(top -bn1 | grep Cpu(s) | sed s/.*, *\([0-9.]*\)%* id.*/\1/ | awk {print 100 - \$1})% | RAM: $(free -m | awk /Mem/{print \$3})MB used3.2 安装到系统编译完成后执行sudo make install设置符号链接方便使用sudo ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/ sudo ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/4. 系统集成与优化4.1 创建系统服务创建systemd服务文件sudo tee /etc/systemd/system/freeswitch.service /dev/null EOF [Unit] DescriptionFreeSWITCH Voice Switching System Aftersyslog.target network.target local-fs.target [Service] Typeforking PIDFile/usr/local/freeswitch/run/freeswitch.pid EnvironmentDAEMON_OPTS-nonat ExecStart/usr/local/freeswitch/bin/freeswitch -nc -nf ExecStop/usr/local/freeswitch/bin/freeswitch -stop TimeoutSec45s Restartalways Userfreeswitch Groupdaemon [Install] WantedBymulti-user.target EOF创建专用用户并设置权限sudo adduser --disabled-password --quiet --system --group freeswitch sudo chown -R freeswitch:daemon /usr/local/freeswitch/4.2 环境优化配置调整系统限制sudo tee /etc/security/limits.d/freeswitch.conf /dev/null EOF freeswitch soft nofile 40960 freeswitch hard nofile 40960 freeswitch soft nproc 32768 freeswitch hard nproc 32768 EOF内核参数优化sudo tee /etc/sysctl.d/99-freeswitch.conf /dev/null EOF net.core.somaxconn 4096 net.ipv4.tcp_max_syn_backlog 4096 net.ipv4.ip_local_port_range 1024 65535 EOF sudo sysctl -p /etc/sysctl.d/99-freeswitch.conf5. 常见问题排查5.1 编译错误处理问题1undefined reference to uuid_generate解决方案安装uuid开发库sudo apt install -y uuid-dev问题2模块加载失败典型错误mod_opus.c: error: OPUS_SET_GAIN undeclared解决方案更新opus开发库sudo apt install --only-upgrade libopus-dev5.2 运行时报错问题1声音设备不可用检查/dev/dsp设备权限sudo usermod -aG audio freeswitch问题2端口5060被占用修改配置文件中SIP端口!-- /usr/local/freeswitch/conf/vars.xml -- X-PRE-PROCESS cmdset dataexternal_sip_port5080/6. 性能调优建议内存管理修改vars.xml中的session-per-second参数调整switch_core_session.c中的会话超时设置数据库优化-- PostgreSQL优化示例 ALTER SYSTEM SET shared_buffers 1GB; ALTER SYSTEM SET effective_cache_size 3GB;日志控制!-- /usr/local/freeswitch/conf/autoload_configs/logfile.conf.xml -- param namerollover value10000000/ param nameinterval value1d/网络优化# 增加UDP缓冲区 sudo sysctl -w net.core.rmem_max16777216 sudo sysctl -w net.core.wmem_max16777216在实际生产环境中建议根据具体业务负载进行压力测试后调整参数。我通常使用sipp工具模拟呼叫流量来验证系统稳定性sipp -sf uac.xml 127.0.0.1:5060 -l 100 -m 500 -r 10