CentOS 7.6 Freeswitch1.10安裝教程(MySQL管理、視頻通話)

一、前言

freeswitch 各個(gè)版本路徑:https://files.freeswitch.org/freeswitch-releases/
freeswitch 依賴庫(kù)離線下載地址:https://files.freeswitch.org/downloads/libs/

  • 1、先關(guān)閉防火墻,以免造成不可抗拒的問(wèn)題
//臨時(shí)關(guān)閉
systemctl stop firewalld
//禁止開(kāi)機(jī)啟動(dòng)
systemctl disable firewalld

二、安裝必要依賴

  • 1、安裝基礎(chǔ)依賴
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/
# 執(zhí)行刷新,以讓FreeSWITCH運(yùn)行時(shí)可以找到庫(kù)
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安裝的版本,若無(wú)安裝則忽略
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
#若是沒(méi)有找到signalwire_client.pc,可以全局搜索,搜索到之后,替換對(duì)應(yīng)的路徑    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=數(shù)據(jù)庫(kù)賬號(hào)
PASSWORD=數(shù)據(jù)庫(kù)密碼
Threading=0

輸入:isql -v freeswitch測(cè)試是否能夠連通,正常如下:


三、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管理,只需要執(zhí)行./configure即可
./configure --enable-core-odbc-support

make
make install

#安裝聲音文件
make cd-sounds-install
make cd-moh-install
 
#設(shè)置鏈接符號(hào),便于使用
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/
  • 2、部署成服務(wù)
vi /usr/lib/systemd/system/freeswitch.service

編輯以下內(nèi)容:

[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、開(kāi)啟錄音功能
    修改撥碼計(jì)劃
    打開(kāi)文件../freeswitch/conf/dialplan/default.xml
    找到Local_Extension節(jié)點(diǎn)
<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"/>

完成后,進(jìn)入FS_CLI中運(yùn)行 reloadxml
以上../freeswitch/conf/dialplan/default.xml,如果有其它的部分撥號(hào)方案需要錄音,找到對(duì)應(yīng)的撥號(hào)方案配置文件加入上述內(nèi)容即可。

四、配置文件介紹

conf\sip_profiles\internal.xml 配置sip信息
默認(rèn)路由文件:/usr/local/freeswitch/comf/dialplan/default.xml ,可以修改他
添加新的路有也可以修改文件:/usr/local/freeswitch/comf/dialplan/default 
外線來(lái)電路有配置文件:/usr/local/freeswitch/comf/dialplan/public.xml

FreeSwitch的配置文件默認(rèn)是放在 FreeSwitch\Conf\ 下,最頂層是的 FreeSwitch.xml,也就是說(shuō)最先加載的就是這個(gè) XML, FreeSwitch 根據(jù)這個(gè) XML 依次加載 Conf 目錄下的其它配置文件。

  • 1、conf根目錄下的文件
freeswitch.xml:主配置文件,它會(huì)使用include語(yǔ)句裝入其它文件。
vars.xml:一些常用變量,都在這個(gè)配置文件中定義。
  • 2、conf下的文件夾
|-- autoload_configs:存放自動(dòng)加載的配置文件。
  |-- 此文件夾下的modules.conf.xml:配置當(dāng)freeswitch啟動(dòng)時(shí)自動(dòng)裝載哪些模塊。
  |-- 此文件夾下其它xml:一般來(lái)說(shuō)都是對(duì)應(yīng)每個(gè)模塊的配置文件。
|-- chatplan文件夾:存放的是聊天計(jì)劃配置文件。
|-- dialplan文件夾:存放的是撥號(hào)計(jì)劃配置文件。
|-- directory文件夾:用戶目錄,存儲(chǔ)跟用戶相關(guān)的信息。
  |-- 此文件夾下的的defalut目錄是默認(rèn)的用戶目錄配置,default下的xml文件是對(duì)應(yīng)每個(gè)sip用戶的,每個(gè)sip用戶都有一個(gè)配置文件。
|-- ivr_menus文件夾:IVR菜單配置文件。
|-- jingle_profiles文件夾:連接Google Talk的相關(guān)配置文件。
|-- lang文件夾:多語(yǔ)言支持配置文件。
  |-- 此文件夾下的en為英語(yǔ),fr文件夾是法語(yǔ)。
|-- mrcp_profiles文件夾:MRCP的相關(guān)配置,用于跟第三方語(yǔ)音合成和語(yǔ)音識(shí)別系統(tǒng)對(duì)接。
|-- sip_profiles文件夾:sip配置文件
  |-- 此文件夾下的internal.xml:一個(gè)SIP profile,或稱作一個(gè)SIP-UA,監(jiān)聽(tīng)在本地IP及端口5060。
  |-- 此文件夾下的externa.xml:另一個(gè)SIP-UA,用作外部連接,端口5080。
|-- 在 /usr/local/freeswitch/comf/directory/default 下有默認(rèn)的1000-1019共20個(gè)賬號(hào),可以通過(guò) copy 并修改其中的 user_id 來(lái)實(shí)現(xiàn)增加新的賬號(hào)

五、常用命令

# 啟動(dòng)freeswitch
freeswitch
# 關(guān)閉freeswitch
shutdown
# 后臺(tái)啟動(dòng)
freeswitch -nc
# 關(guān)閉后臺(tái)freeswitch
freeswitch -stop
# 查看FreeSWITCH是否正常啟動(dòng)
netstat -anp | grep freeswitch
# 查看狀態(tài)
sofia status
# 顯示哪些用戶已注冊(cè)
sofia status profile internal reg
# 控制臺(tái)顯示info級(jí)別日志
fs_cli -l info
# 開(kāi)啟sip消息顯示/關(guān)閉
sofia global siptrace on/off
# 退出fs_cli(不關(guān)閉fs)
/exit

六、防火墻開(kāi)放端口

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

七、常見(jiàn)的坑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容