美文网首页编程
CentOS 7.6 Freeswitch1.10安装教程(My

CentOS 7.6 Freeswitch1.10安装教程(My

作者: 吾i分享 | 来源:发表于2021-01-19 19:02 被阅读0次

    一、前言

    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
    

    七、常见的坑

    相关文章

      网友评论

        本文标题:CentOS 7.6 Freeswitch1.10安装教程(My

        本文链接:https://www.haomeiwen.com/subject/jjkczktx.html