CentOS 7.6 Freeswitch1.10安装教程(MySQL管理、视频通话)

一、前言

freeswitch 各个版本路径:https://files.freeswitch.org/freeswitch-releases/
freeswitch 依赖库离线下载地址:https://files.freeswitch.org/downloads/libs/

  • 1、先关闭防火墙,以免造成不可抗拒的问题
//临时关闭
systemctl stop firewalld
//禁止开机启动
systemctl disable firewalld

二、安装必要依赖

  • 1、安装基础依赖
yum install -y https://files.freeswitch.org/repo/yum/centos-release/freeswitch-release-repo-0-1.noarch.rpm epel-release
 
yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtheora-devel libtiff-devel libtool libuuid-devel libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel wget which yasm zlib-devel libshout-devel libmpg123-devel lame-devel
  • 2、安装mod_av支持的lib
    mod_av 依赖libav, libav需要 x264 lib才能支持h264
# download and install libx264
wget -c http://files.freeswitch.org/downloads/libs/libx264.tar.bz2
tar -jxvf libx264.tar.bz2
./configure --enable-static --enable-shared --prefix=/usr
make
make install
cp /usr/lib/pkgconfig/x264.pc /usr/lib64/pkgconfig/
cp /usr/lib/libx264.so /usr/lib64/
cp /usr/lib/libx264.a /usr/lib64/

# download and install libav
wget -c http://files.freeswitch.org/downloads/libs/libav-12.tar.bz2  
tar -jxvf libav-12.tar.bz2
./configure --enable-pic --enable-shared  --enable-libx264 --enable-gpl --extra-libs="-ldl" --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/lib64
make    # make CXXFLAGS="-fPIC"
make install
cp /usr/local/lib/pkgconfig/libavcodec.pc /usr/local/lib/pkgconfig/libavdevice.pc /usr/local/lib/pkgconfig/libavfilter.pc /usr/local/lib/pkgconfig/libavformat.pc /usr/local/lib/pkgconfig/libavresample.pc /usr/local/lib/pkgconfig/libavutil.pc /usr/local/lib/pkgconfig/libswscale.pc /usr/lib64/pkgconfig/
# 执行刷新,以让FreeSWITCH运行时可以找到库
ldconfig
  • 3、安装 libpng
git clone https://freeswitch.org/stash/scm/sd/libpng.git
cd libpng
./configure
make
make install
cp /usr/local/lib/pkgconfig/libpng* /usr/lib64/pkgconfig/
  • 4、安装cmake
#卸载yum安装的版本,若无安装则忽略
yum remove cmake
wget https://cmake.org/files/v3.14/cmake-3.14.0.tar.gz
tar -zxvf cmake-3.14.0.tar.gz
cd cmake-3.14.0
./configure
make
make install
  • 5、安装libks
# 先安装libatomic依赖
yum install libatomic
git clone https://github.com/signalwire/libks.git
cd libks
cmake .
make
make install
  • 6、安装signalwire-c
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c/
cmake .
make
make install
ln -sf /usr/local/lib64/pkgconfig/signalwire_client.pc /usr/lib64/pkgconfig/signalwire_client.pc
#若是没有找到signalwire_client.pc,可以全局搜索,搜索到之后,替换对应的路径    find / -name signalwire_client.pc
  • 7、安装odbc
yum install -y unixODBC unixODBC-devel mysql-connector-odbc

安装完成后:
编辑/etc/odbcinst.ini

# Example driver definitions
 
# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1
 
 
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib64/libmyodbc5.so
Setup=/usr/lib64/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1

编辑/etc/odbc.ini

[freeswitch]
Description=MySQL realtime database
Driver=/usr/lib64/libmyodbc5.so
SERVER=127.0.0.1
PORT=3306
DATABASE=freeswitch
OPTION =67108864
CHARSET=UTF8
USER=数据库账号
PASSWORD=数据库密码
Threading=0

输入:isql -v freeswitch测试是否能够连通,正常如下:


三、FreeSwitch编译源码安装

  • 1、安装
wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.3.-release.tar.gz
tar vzxf freeswitch-1.10.3.tar.gz
cd freeswitch-1.10.3
#如果不想使用mysql管理,只需要执行./configure即可
./configure --enable-core-odbc-support

make
make install

#安装声音文件
make cd-sounds-install
make cd-moh-install
 
#设置链接符号,便于使用
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/
  • 2、部署成服务
vi /usr/lib/systemd/system/freeswitch.service

编辑以下内容:

[Unit]
Description=freeswitch
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home/mintcode
ExecStart=/usr/local/freeswitch/bin/freeswitch
ExecStop=/usr/local/freeswitch/bin/freeswitch -stop 
Restart=always
[Install]
WantedBy=multi-user.target
  • 3、配置MySQL管理Freeswitch
<!-- vi conf/autoload_configs/db.conf.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>

<!-- vi conf/autoload_configs/switch.conf.xml -->
<param name="core-db-dsn" value="freeswitch:root:123456" />
<param name="odbc-dsn" value="freeswitch:root:123456"/>

<!-- vi conf/autoload_configs/voicemail.conf.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>

<!-- vi conf/autoload_configs/callcenter.conf.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>

<!-- vi conf/sip_profiles/external.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>

<!-- vi conf/sip_profiles/internal.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>

<!-- vi conf/sip_profiles/internal-ipv6.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>

<!-- vi conf/sip_profiles/external-ipv6.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>

<!-- vi conf/autoload_configs/fifo.conf.xml -->
<settings>
    <param name="delete-all-outbound-member-on-startup" value="false"/>
    <param name="odbc-dsn" value="freeswitch:root:123456"/>
</settings>

<!-- vi conf/vars.xml -->
<X-PRE-PROCESS cmd="set" data="json_db_handle=odbc://freeswitch:root:123456"/>
  • 4、开启录音功能
    修改拨码计划
    打开文件../freeswitch/conf/dialplan/default.xml
    找到Local_Extension节点
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-8])$">

在其下,添加:

<action application="set" data="RECORD_TITLE=Recording ${destination_number} ${caller_id_number} ${strftime(%Y-%m-%d %H:%M)}"/>  
<action application="set" data="RECORD_COPYRIGHT=(c) 2011"/>  
<action application="set" data="RECORD_SOFTWARE=FreeSWITCH"/>
<action application="set" data="RECORD_ARTIST=FreeSWITCH"/> 
<action application="set" data="RECORD_COMMENT=FreeSWITCH"/> 
<action application="set" data="RECORD_DATE=${strftime(%Y-%m-%d %H:%M)}"/> 
<action application="set" data="RECORD_STEREO=true"/>
<action application="record_session" data="$${base_dir}/recordings/archive/${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/>

完成后,进入FS_CLI中运行 reloadxml
以上../freeswitch/conf/dialplan/default.xml,如果有其它的部分拨号方案需要录音,找到对应的拨号方案配置文件加入上述内容即可。

四、配置文件介绍

conf\sip_profiles\internal.xml 配置sip信息
默认路由文件:/usr/local/freeswitch/comf/dialplan/default.xml ,可以修改他
添加新的路有也可以修改文件:/usr/local/freeswitch/comf/dialplan/default 
外线来电路有配置文件:/usr/local/freeswitch/comf/dialplan/public.xml

FreeSwitch的配置文件默认是放在 FreeSwitch\Conf\ 下,最顶层是的 FreeSwitch.xml,也就是说最先加载的就是这个 XML, FreeSwitch 根据这个 XML 依次加载 Conf 目录下的其它配置文件。

  • 1、conf根目录下的文件
freeswitch.xml:主配置文件,它会使用include语句装入其它文件。
vars.xml:一些常用变量,都在这个配置文件中定义。
  • 2、conf下的文件夹
|-- autoload_configs:存放自动加载的配置文件。
  |-- 此文件夹下的modules.conf.xml:配置当freeswitch启动时自动装载哪些模块。
  |-- 此文件夹下其它xml:一般来说都是对应每个模块的配置文件。
|-- chatplan文件夹:存放的是聊天计划配置文件。
|-- dialplan文件夹:存放的是拨号计划配置文件。
|-- directory文件夹:用户目录,存储跟用户相关的信息。
  |-- 此文件夹下的的defalut目录是默认的用户目录配置,default下的xml文件是对应每个sip用户的,每个sip用户都有一个配置文件。
|-- ivr_menus文件夹:IVR菜单配置文件。
|-- jingle_profiles文件夹:连接Google Talk的相关配置文件。
|-- lang文件夹:多语言支持配置文件。
  |-- 此文件夹下的en为英语,fr文件夹是法语。
|-- mrcp_profiles文件夹:MRCP的相关配置,用于跟第三方语音合成和语音识别系统对接。
|-- sip_profiles文件夹:sip配置文件
  |-- 此文件夹下的internal.xml:一个SIP profile,或称作一个SIP-UA,监听在本地IP及端口5060。
  |-- 此文件夹下的externa.xml:另一个SIP-UA,用作外部连接,端口5080。
|-- 在 /usr/local/freeswitch/comf/directory/default 下有默认的1000-1019共20个账号,可以通过 copy 并修改其中的 user_id 来实现增加新的账号

五、常用命令

# 启动freeswitch
freeswitch
# 关闭freeswitch
shutdown
# 后台启动
freeswitch -nc
# 关闭后台freeswitch
freeswitch -stop
# 查看FreeSWITCH是否正常启动
netstat -anp | grep freeswitch
# 查看状态
sofia status
# 显示哪些用户已注册
sofia status profile internal reg
# 控制台显示info级别日志
fs_cli -l info
# 开启sip消息显示/关闭
sofia global siptrace on/off
# 退出fs_cli(不关闭fs)
/exit

六、防火墙开放端口

FireWall Ports  Network Protocol    Application Protocol    Description

1719    UDP H.323 Gatekeeper RAS port

1720    TCP H.323 Call Signaling

3478    UDP STUN service    Used for NAT traversal

3479    UDP STUN service    Used for NAT traversal

5002    TCP MLP protocol server

5003    UDP Neighborhood service

5060    UDP & TCP   SIP UAS Used for SIP signaling (Standard SIP Port, for default Internal Profile)

5070    UDP & TCP   SIP UAS Used for SIP signaling (For default "NAT" Profile)

5080    UDP & TCP   SIP UAS Used for SIP signaling (For default "External" Profile)

8021    TCP ESL Used for mod_event_socket *

16384-32768 UDP RTP/ RTCP multimedia streaming  Used for audio/video data in SIP and other protocols

5066    TCP Websocket   Used for WebRTC

7443    TCP Websocket   Used for WebRTC

七、常见的坑

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容