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

Ubuntu 24.04 安装 FreeSWITCH 完整教程

Ubuntu 24.04 安装 FreeSWITCH 完整教程(国内环境)

一、系统准备

1. 检查系统版本

# 查看系统版本
lsb_release -a# 输出应该显示:
# Distributor ID: Ubuntu
# Description:    Ubuntu 24.04 LTS
# Release:        24.04
# Codename:       noble

2. 更新系统(需要 sudo 权限)

# 更新软件包列表
sudo apt-get update# 升级已安装的软件包(可选)
sudo apt-get upgrade -y

二、安装 FreeSWITCH(完整步骤)

方法一:使用官方仓库安装(推荐)

# ========== 步骤 1: 安装必要工具 ==========
sudo apt-get install -y wget gnupg2 software-properties-common# ========== 步骤 2: 添加 FreeSWITCH GPG 密钥 ==========
# 使用国内可访问的官方文件服务器
wget -O - https://files.freeswitch.org/repo/deb/debian-release/fsstretch-archive-keyring.asc | sudo gpg --dearmor -o /usr/share/keyrings/freeswitch-archive-keyring.gpg# ========== 步骤 3: 添加 FreeSWITCH 软件源 ==========
# Ubuntu 24.04 的代号是 noble
echo "deb [signed-by=/usr/share/keyrings/freeswitch-archive-keyring.gpg] https://files.freeswitch.org/repo/deb/debian-release/ noble main" | sudo tee /etc/apt/sources.list.d/freeswitch.list# ========== 步骤 4: 更新软件源 ==========
sudo apt-get update# ========== 步骤 5: 安装 FreeSWITCH ==========
# 安装完整版(推荐)
sudo apt-get install -y freeswitch-meta-all# 或者只安装核心组件
# sudo apt-get install -y freeswitch-meta-bare freeswitch-conf-vanilla freeswitch-mod-commands# ========== 步骤 6: 安装音频文件(可选但推荐)==========
sudo apt-get install -y freeswitch-music-default freeswitch-sounds-en-us-callie

方法二:源码编译安装(如果仓库方式失败)

#!/bin/bash# 下载预编译的 FreeSWITCH 压缩包set -eecho "=== 下载 FreeSWITCH 预编译包 ==="# 创建工作目录
cd /tmp# 下载预编译包
echo "1. 下载 FreeSWITCH 源码包..."
wget https://files.freeswitch.org/releases/freeswitch/freeswitch-1.10.11.-release.tar.gz# 解压
echo "2. 解压..."
tar -zxvf freeswitch-1.10.11.-release.tar.gz
cd freeswitch-1.10.11.-release# 安装编译依赖
echo "3. 安装编译依赖..."
sudo apt-get update
sudo apt-get install -y \build-essential cmake automake autoconf libtool-bin \pkg-config wget curl \libssl-dev zlib1g-dev libdb-dev unixodbc-dev \libncurses5-dev libexpat1-dev libgdbm-dev bison \libbison-dev libcurl4-openssl-dev libpcre3-dev \libspeex-dev libspeexdsp-dev libldns-dev \libedit-dev libtiff5-dev yasm libopus-dev \libsndfile1-dev libshout3-dev libmpg123-dev \libmp3lame-dev libsqlite3-dev libpq-dev \libmariadb-dev liblua5.3-dev uuid-dev# 配置
echo "4. 配置编译选项..."
./configure --prefix=/usr/local/freeswitch# 编译
echo "5. 编译(使用 $(nproc) 个 CPU 核心)..."
make -j$(nproc)# 安装
echo "6. 安装..."
sudo make install# 安装配置和音频
echo "7. 安装配置文件和音频..."
sudo make cd-sounds-install cd-moh-install
sudo make samplesecho ""
echo "✅ 安装完成!"

三、配置 FreeSWITCH 用户和权限

# ========== 创建系统用户 ==========
# 检查用户是否已存在
if ! id -u freeswitch > /dev/null 2>&1; thensudo groupadd -r freeswitchsudo useradd -r -g freeswitch -d /var/lib/freeswitch -s /bin/false freeswitchecho "freeswitch 用户创建成功"
elseecho "freeswitch 用户已存在"
fi# ========== 设置目录权限 ==========
# 如果是仓库安装
sudo chown -R freeswitch:freeswitch /etc/freeswitch
sudo chown -R freeswitch:freeswitch /var/lib/freeswitch
sudo chown -R freeswitch:freeswitch /var/log/freeswitch
sudo chown -R freeswitch:freeswitch /usr/share/freeswitch
sudo chmod -R o-rwx /etc/freeswitch# 如果是编译安装
# sudo chown -R freeswitch:freeswitch /usr/local/freeswitch
# sudo chmod -R o-rwx /usr/local/freeswitch

四、配置 systemd 服务

仓库安装(服务已自动配置)

# 检查服务文件是否存在
ls -l /lib/systemd/system/freeswitch.service

编译安装(需要手动创建服务)

# 创建 systemd 服务文件
sudo tee /etc/systemd/system/freeswitch.service > /dev/null <<'EOF'
[Unit]
Description=FreeSWITCH open source telephony platform
After=syslog.target network.target local-fs.target[Service]
Type=forking
PIDFile=/usr/local/freeswitch/run/freeswitch.pid
Environment="DAEMON_OPTS=-nonat"
EnvironmentFile=-/etc/default/freeswitch
ExecStartPre=/bin/mkdir -p /usr/local/freeswitch/run
ExecStart=/usr/local/freeswitch/bin/freeswitch -u freeswitch -g freeswitch -ncwait $DAEMON_OPTS
TimeoutSec=45s
Restart=always
WorkingDirectory=/usr/local/freeswitch
User=freeswitch
Group=freeswitch
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=60000
LimitSTACK=250000
LimitRTPRIO=infinity
LimitRTTIME=infinity
IOSchedulingClass=realtime
IOSchedulingPriority=2
CPUSchedulingPolicy=rr
CPUSchedulingPriority=89[Install]
WantedBy=multi-user.target
EOF# 重新加载 systemd 配置
sudo systemctl daemon-reload

五、修改默认密码(重要安全步骤)

# ========== 编辑配置文件 ==========
# 仓库安装
sudo vi /etc/freeswitch/vars.xml# 编译安装
# sudo vi /usr/local/freeswitch/conf/vars.xml# 找到以下行(按 / 搜索 "default_password")
# <X-PRE-PROCESS cmd="set" data="default_password=1234"/># 修改为强密码(例如):
# <X-PRE-PROCESS cmd="set" data="default_password=YourStrongPassword123!@#"/># 保存退出(按 ESC,输入 :wq)

六、配置防火墙

# ========== 检查防火墙状态 ==========
sudo ufw status# 如果防火墙已启用,添加规则
sudo ufw allow 5060/tcp comment 'FreeSWITCH SIP TCP'
sudo ufw allow 5060/udp comment 'FreeSWITCH SIP UDP'
sudo ufw allow 5080/tcp comment 'FreeSWITCH WS'
sudo ufw allow 5081/tcp comment 'FreeSWITCH WSS'
sudo ufw allow 8021/tcp comment 'FreeSWITCH ESL'
sudo ufw allow 16384:32768/udp comment 'FreeSWITCH RTP'# 重载防火墙
sudo ufw reload# 查看规则
sudo ufw status numbered

七、启动 FreeSWITCH 服务

# ========== 启动服务 ==========
sudo systemctl start freeswitch# ========== 设置开机自启 ==========
sudo systemctl enable freeswitch# ========== 查看服务状态 ==========
sudo systemctl status freeswitch# 应该看到 "active (running)" 状态

八、验证安装

1. 检查进程

# 查看 FreeSWITCH 进程
ps aux | grep freeswitch# 查看端口监听
sudo ss -tulnp | grep freeswitch
# 或
sudo netstat -tulnp | grep freeswitch# 应该看到:
# 5060  - SIP
# 8021  - ESL (Event Socket)
# 16384-32768 - RTP

2. 连接到控制台

# 连接到 FreeSWITCH 控制台
fs_cli# 或指定连接参数
# fs_cli -H 127.0.0.1 -P 8021 -p ClueCon

3. 执行测试命令

# 在 fs_cli 控制台中执行:# 查看版本
version# 查看状态
status# 查看 Sofia SIP 配置
sofia status# 查看内部配置文件注册信息
sofia status profile internal reg# 查看模块
show modules# 退出控制台
/exit
# 或按 Ctrl+D

九、完整一键安装脚本

将以下内容保存为 install_freeswitch_ubuntu24.sh

#!/bin/bash# FreeSWITCH Ubuntu 24.04 一键安装脚本(国内环境)
# 使用方法: sudo bash install_freeswitch_ubuntu24.shset -e# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color# 日志函数
log_info() {echo -e "${GREEN}[INFO]${NC} $1"
}log_warn() {echo -e "${YELLOW}[WARN]${NC} $1"
}log_error() {echo -e "${RED}[ERROR]${NC} $1"
}# 检查是否为 root 用户
if [ "$EUID" -ne 0 ]; then log_error "请使用 root 权限运行此脚本"echo "使用方法: sudo bash $0"exit 1
filog_info "开始安装 FreeSWITCH on Ubuntu 24.04..."# 检测系统版本
if [ -f /etc/os-release ]; then. /etc/os-releaseif [ "$ID" != "ubuntu" ] || [ "$VERSION_ID" != "24.04" ]; thenlog_warn "检测到系统为: $ID $VERSION_ID"log_warn "此脚本专为 Ubuntu 24.04 设计,继续安装可能遇到问题"read -p "是否继续?(y/n): " -n 1 -rechoif [[ ! $REPLY =~ ^[Yy]$ ]]; thenexit 1fifi
elselog_error "无法检测系统版本"exit 1
fi# 更新系统
log_info "更新系统软件包..."
apt-get update# 安装基础依赖
log_info "安装基础依赖..."
apt-get install -y wget gnupg2 software-properties-common curl# 添加 FreeSWITCH GPG 密钥
log_info "添加 FreeSWITCH GPG 密钥..."
wget -O - https://files.freeswitch.org/repo/deb/debian-release/fsstretch-archive-keyring.asc | gpg --dearmor -o /usr/share/keyrings/freeswitch-archive-keyring.gpg# 添加 FreeSWITCH 软件源
log_info "添加 FreeSWITCH 软件源..."
echo "deb [signed-by=/usr/share/keyrings/freeswitch-archive-keyring.gpg] https://files.freeswitch.org/repo/deb/debian-release/ noble main" > /etc/apt/sources.list.d/freeswitch.list# 更新软件源
log_info "更新软件源..."
apt-get update# 安装 FreeSWITCH
log_info "安装 FreeSWITCH(这可能需要几分钟)..."
DEBIAN_FRONTEND=noninteractive apt-get install -y freeswitch-meta-all# 安装音频文件
log_info "安装音频文件..."
apt-get install -y freeswitch-music-default freeswitch-sounds-en-us-callie# 创建 freeswitch 用户
if ! id -u freeswitch > /dev/null 2>&1; thenlog_info "创建 freeswitch 系统用户..."groupadd -r freeswitchuseradd -r -g freeswitch -d /var/lib/freeswitch -s /bin/false freeswitch
elselog_info "freeswitch 用户已存在"
fi# 设置权限
log_info "设置目录权限..."
chown -R freeswitch:freeswitch /etc/freeswitch
chown -R freeswitch:freeswitch /var/lib/freeswitch
chown -R freeswitch:freeswitch /var/log/freeswitch
chown -R freeswitch:freeswitch /usr/share/freeswitch
chmod -R o-rwx /etc/freeswitch# 修改默认密码
log_info "修改默认密码..."
NEW_PASSWORD="FS$(date +%s)@Pass"
sed -i "s/default_password=1234/default_password=${NEW_PASSWORD}/g" /etc/freeswitch/vars.xml
log_warn "默认密码已修改为: ${NEW_PASSWORD}"
log_warn "请记录此密码!配置文件位置: /etc/freeswitch/vars.xml"# 配置防火墙
log_info "配置防火墙规则..."
if command -v ufw &> /dev/null; thenufw --force enableufw allow 5060/tcp comment 'FreeSWITCH SIP TCP'ufw allow 5060/udp comment 'FreeSWITCH SIP UDP'ufw allow 5080/tcp comment 'FreeSWITCH WS'ufw allow 5081/tcp comment 'FreeSWITCH WSS'ufw allow 8021/tcp comment 'FreeSWITCH ESL'ufw allow 16384:32768/udp comment 'FreeSWITCH RTP'ufw reloadlog_info "防火墙规则已配置"
elselog_warn "未检测到 ufw,跳过防火墙配置"
fi# 启动服务
log_info "启动 FreeSWITCH 服务..."
systemctl daemon-reload
systemctl enable freeswitch
systemctl start freeswitch# 等待服务启动
sleep 5# 检查服务状态
if systemctl is-active --quiet freeswitch; thenlog_info "FreeSWITCH 服务启动成功!"
elselog_error "FreeSWITCH 服务启动失败"log_error "请检查日志: journalctl -u freeswitch -n 50"exit 1
fi# 显示安装信息
echo ""
echo "=========================================="
log_info "FreeSWITCH 安装完成!"
echo "=========================================="
echo ""
echo "📍 安装信息:"
echo "   版本: $(fs_cli -x 'version' 2>/dev/null | head -n1 || echo '无法获取')"
echo "   配置目录: /etc/freeswitch/"
echo "   日志目录: /var/log/freeswitch/"
echo "   数据目录: /var/lib/freeswitch/"
echo ""
echo "🔐 安全信息:"
echo "   默认密码: ${NEW_PASSWORD}"
echo "   配置文件: /etc/freeswitch/vars.xml"
echo ""
echo "🎯 常用命令:"
echo "   连接控制台: fs_cli"
echo "   查看状态: systemctl status freeswitch"
echo "   查看日志: tail -f /var/log/freeswitch/freeswitch.log"
echo "   重启服务: systemctl restart freeswitch"
echo ""
echo "📚 控制台常用命令:"
echo "   status          - 查看系统状态"
echo "   sofia status    - 查看 SIP 状态"
echo "   show channels   - 查看通话通道"
echo "   version         - 查看版本信息"
echo "   /exit           - 退出控制台"
echo ""
echo "=========================================="# 测试连接
log_info "测试 FreeSWITCH 连接..."
if fs_cli -x "status" &> /dev/null; thenlog_info "✅ FreeSWITCH 运行正常!"
elselog_warn "⚠️  无法连接到 FreeSWITCH,请检查服务状态"
fiecho ""
log_info "安装脚本执行完毕!"

使用一键安装脚本

# 1. 下载或创建脚本
nano install_freeswitch_ubuntu24.sh# 2. 粘贴上面的脚本内容,保存退出(Ctrl+O, Enter, Ctrl+X)# 3. 添加执行权限
chmod +x install_freeswitch_ubuntu24.sh# 4. 执行安装
sudo ./install_freeswitch_ubuntu24.sh

十、常用管理命令

服务管理(需要 sudo)

# 启动服务
sudo systemctl start freeswitch# 停止服务
sudo systemctl stop freeswitch# 重启服务
sudo systemctl restart freeswitch# 查看状态
sudo systemctl status freeswitch# 查看实时日志
sudo journalctl -u freeswitch -f# 查看最近 100 行日志
sudo journalctl -u freeswitch -n 100# 查看日志文件
sudo tail -f /var/log/freeswitch/freeswitch.log

控制台命令(不需要 sudo,但需要 freeswitch 运行)

# 连接控制台
fs_cli# 在控制台中执行命令
status
sofia status
show channels
show calls
reloadxml# 退出控制台
/exit

十一、常见问题排查

1. 服务无法启动

# 查看详细错误日志
sudo journalctl -u freeswitch -n 100 --no-pager# 检查配置文件语法
sudo freeswitch -t# 查看进程是否存在
ps aux | grep freeswitch

2. 端口被占用

# 检查 5060 端口
sudo lsof -i :5060# 如果被占用,停止占用进程或修改 FreeSWITCH 端口

3. 权限问题

# 重新设置权限
sudo chown -R freeswitch:freeswitch /etc/freeswitch
sudo chown -R freeswitch:freeswitch /var/lib/freeswitch
sudo chown -R freeswitch:freeswitch /var/log/freeswitch

4. 无法连接 fs_cli

# 检查 8021 端口
sudo ss -tulnp | grep 8021# 查看 ESL 配置
sudo cat /etc/freeswitch/autoload_configs/event_socket.conf.xml

十二、总结

✅ 需要管理员权限的操作:

  1. ✅ 安装软件包
  2. ✅ 创建系统用户
  3. ✅ 修改系统配置文件
  4. ✅ 启动/停止系统服务
  5. ✅ 配置防火墙
  6. ✅ 修改 /etc 和 /var 目录文件

❌ 不需要管理员权限的操作:

  1. ❌ 连接 fs_cli 控制台(如果当前用户在 freeswitch 组)
  2. ❌ 查看日志(如果有读取权限)

🎯 完整安装时间估算:

  • 仓库安装:5-10 分钟
  • 源码编译:20-40 分钟(取决于 CPU 性能)

安装完成后,FreeSWITCH 将以 freeswitch 用户身份运行,所有操作都需要通过 sudo 进行管理!

需要我帮你解决具体的安装问题吗?

http://www.dtcms.com/a/572693.html

相关文章:

  • LeetCode(python)——49.字母异位词分组
  • Redis 性能优化与故障排查指南
  • 24.java openCV4.x 入门-Imgproc之轮廓凸包与凹陷检测(形状识别)
  • IDEA 插件推荐
  • 虚拟 DOM(Virtual DOM)的工作原理及其性能优化机制
  • git详细使用教程
  • 北京工程工程建设交易信息网站和城乡建设部网站
  • soular零基础学习,如何通过工作台聚合TikLab所有工具链
  • 建立企业网站电商网站建设开题报告
  • css font-size 的妙用
  • Jenkins安装部署
  • 阿里云 CDN + 静态资源(图片 / JS/CSS)缓存优化
  • 荣耀前端开发面试题及参考答案
  • shtml怎么做网站建设学校网站多钱
  • Navicat 连接 SQL Server 报错 [08001] 超时错误(258)的排查与解决方案
  • Linux 使用 `wait` 函数回收子进程
  • 八股训练营第 8 天 | TCP连接三次握手的过程?TCP连接四次挥手的过程?HTTP的Keep-Alive是什么?
  • 【计算网络学习笔记】网络基础之网络协议栈
  • CyberSecEval 2
  • wordpress 两栏专业seo培训学校
  • 【浏览器CORS问题解决方案】SpringBoot+Vue3前后端全覆盖:浏览器跨域问题的多样化解决方案
  • 论述AI和人类的分工
  • 第四阶段C#通讯开发-6:Socket之UDP
  • 广州建设网站公司简介百度seo排名推广
  • 四自由度机械臂运动学与动力学分析
  • Spring Security 使用
  • Web3开发中的前端、后端与合约:角色定位与协作逻辑
  • 神经网络—— 人工神经网络
  • GroupNet:基于多尺度神经网络的交互推理轨迹预测
  • CANN 自定义算子实战:从智能门禁到工业质检,MindStudio 7.0 落地优化(时延 130ms + 漏检率 3%,代码可复现)