在CentOS7上部署FreeSWITCH的过程CentOS 7提供了FreeSWITCH的安装包(编译⾃1.6.15版本的源码),可以通过yum命令直接下载、安装。
我们为什么没有直接使⽤这个安装包,⽽是选择直接从源码编译FreeSWITCH,是因为这个安装包存在如下问题:
1)缺少libav库。实现转码的模块mod_av依赖该库;
2)缺少mod_rtmp模块。该模块⽀持基于Flash的终端。
3)1.6.15版本的源码,通过rtmp时,会导致程序崩溃。
我们⽬前使⽤的FreeSWITCH源码版本是1.6.10。
FreeSWITCH官⽅推荐的CentOS版本,要求⾄少是CentOS7.0。CentOS7的安装本⽂不讲解,请查阅其它资料⾃⾏安装。以下的过程假定CentOS已经安装(最⼩化安装)
⼀、编译环境和FreeSWITCH依赖库
1、让⽹卡⾃动启⽤
CentOS 7安装后,有时候⽹卡并未⾃动启⽤,需要修改配置⽂件,让⽹卡跟随系统⾃动启⽤。
1)进⼊⽬录/etc/sysconfig/network-scripts/
2) 修改ifcfg-enxxxxxxxx ⽂件 (即你的⽹卡标识命名的配置⽂件)
3) 将ONBOOT=no改成yes
4) 保存后重启即可
2、会⽤到的⼯具软件
1)ifconfig⼯具
ifconfig常⽤来查询IP地址等信息,CentOS7最⼩化安装时没有安装这个⼯具。
安装命令:yum install net-tools.x86_64
说明:
也可以使⽤ip addr命令查看IP地址
2)patch⼯具
libav库编译之前需要打⼀个补丁⽂件。patch的安装命令是:
yum install patch
3)rzsz⼯具
该⼯具⽤于配合xshell上传⽂件到CentOS系统中,安装命令是:
yum install lrzsz
XShell连上CentOS后,直接把⽂件拖到XShell窗⼝,就可以上传⽂件到CentOS系统中。
3、FreeSWITCH官⽅环境和依赖库
依次执⾏如下两条命令,安装编译环境和依赖库:
yum install -y git gcc-c++ wget alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel db-devel
e2fsprogs-devel flite-devel g722_1-devel 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 libtool 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 python26-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel libuuid-devel which yasm zlib-devel
4、关闭防⽕墙
CentOS7的防⽕墙会阻⽌客户端连接FreeSWITCH,需要关闭它。CentOS 7.0默认使⽤的是firewalld防⽕墙。
停⽌firewalld :systemctl stop firewalld.service
禁⽌firewall开机启动 :systemctl disable firewalld.service
说明:
可以使⽤systemctl status firewalld.service命令检查firewalld是否已经启动。
sudo useradd freeswitch
sudo groupadd freeswitch
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以⽤这个命令检查
关闭SELinux:
1、临时关闭(不⽤重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置⽂件需要重启机器:
修改/etc/selinux/config ⽂件
将SELINUX=enforcing改为SELINUX=disabled
5、指定动态链接库的搜索⽬录
在/etc/f.d⽬录下建⽴⼀个⽂件,⽂件名随便取,例如:f,
然后在f输⼊⼀⾏:/usr/local/lib。
说明:
编译x264和libav时,它们的库默认会安装到/usr/local/lib中。CentOS 64位版链接动态库时默认不会搜索这个⽬录。
为了让程序链接时可以到这些库,需要把 /usr/local/lib 加到动态库的搜索列表中
安装动态库后,可以执⾏ldconfig刷新。也可以直接重启电脑,让系统⾃动刷新。
⼆、其它依赖库
FreeSWITCH默认只⽀持VP8视频编码,为了⽀持使⽤H264编码的终端,需要使⽤libav进⾏转码。libav库依赖x264库做H264的编码。所以,
需要先编译x264库,然后编译libav库。
1、x264
1)获取源码
下载:git clone git:///x264.git
2)编译、安装
tar -xvf
cd x264
./configure --enable-static --enable-pic
make
make install
cp /usr/local/lib/pkgconfig/x264.pc /usr/lib64/pkgconfig/ // ⽤来让libav编译时,可以到x264的库
ldconfig // 执⾏刷新,以让程序运⾏时可以到x264的库。本例因为使⽤了静态库,应该不需要这步
说明:
x264提供H264的编码。libav库依赖它。
2、librtmp
make install
cp /usr/local/lib/pkgconfig/librtmp.pc /usr/lib64/pkgconfig/ // ⽤来让libav编译时,可以到x264的库
ldconfig // 执⾏刷新,以让程序运⾏时可以到x264的库。本例因为使⽤了静态库,应该不需要这步
说明:
librtmp提供rtmp的解包。libav库依赖它。
3、编译libav
1)获取源码
2)编译、安装
tar -xvf
cd libav
patch -p1 < 0001-Fix-linking-errors-when-VC1-parser-is-enabled-and-VC.patch // 打补丁,FreeSWITCH对libav做了修改
./configure --enable-pic --enable-shared --enable-libx264 --enable-gpl --extra-libs="-ldl"
make
make install
./configure --enable-pic --enable-shared --enable-libx264 --enable-librtmp --enable-gpl --extra-libs="-ldl"
cp /usr/local/lib/pkgconfig/libavcodec.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavdevice.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavfilter.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavformat.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavresample.pc /usr/lib64/pkgconfig/
webrtc浏览器cp /usr/local/lib/pkgconfig/libavutil.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libswscale.pc /usr/lib64/pkgconfig/
ldconfig
说明:
libav是⼀个编解码库,FreeSWITCH的转码模块mod_av依赖它实现。
三、编译FreeSWITCH
1、下载
2、配置
cd freeswitch-1.6.10
./configure --enable-core-pgsql-support
3、mod_av和mod_rtmp模块
修改源码⽬录下的f⽂件。
编译mod_av模块, 把第2⾏#applications/mod_av前的#去掉
编译mod_rtmp模块,把第92⾏#endpoints/mod_rtmp前的#去掉
说明:
FreeSWITCH的很多功能模块会编译为动态库,在程序启动时根据配置⽂件加载。我们需要的转码和rtmp模块默认不被编译。
在编译之前,需要
4、编译、安装
make
make install
5、声⾳⽂件
四、运⾏前配置
1、加载mod_av和mod_rtmp模块
如果需要程序运⾏时⾃动加载模块,需要修改程序的配置⽂件,位置在/usr/local/freeswitch/conf/autoload_f.xml⽂件
⼤约104⾏ ,把注释去掉,让它⽣效。将会⾃动加载mod_av模块。
⼤约49⾏ ,把注释去掉,让它⽣效。将会⾃动加载mod_rtmp模块。
说明:
mod_av模块提供转码功能。使⽤h264和vp8的客户端之间可以进⾏视频通讯
mod_rtmp模块实现了rtmp协议。可以让运⾏在Flash Player中的swf程序和FreeSWITCH通讯。间接让IE实现了实时通讯。
2、更改FreeSWITCH默认登录密码
修改/usr/local/freeswitch/l,⼤约15⾏
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论