CentOS系统需要安装gcc
查看是否已安装:
rpm -qa | grep gcc
gcc -v
安装命令:
yum install -y subversion autoconf automake libtool gcc-c++
yum install -y ncurses-devel make libtiff-devel libjpeg-devel
下载地址:
https://files.freeswitch.org/freeswitch-releases/
或者通过以下命令下载,下载到任意位置,例如 root 文件夹下
wget https://files.freeswitch.org/releases/freeswitch/freeswitch-1.4.26.tar.bz2
解压:(可以下载其他类型文件解压,如 zip 文件,使用 unzip 解压)
tar xvjf freeswitch-1.4.26.tar.bz2
进入解压出来的文件夹,可以看到有一堆文件和文件夹,下面摘出了部分。
[root@iZbp1i0fg2swiwfhc4zzqnZ freeswitch-1.4.26]# pwd
/root/freeswitch-1.4.26
[root@iZbp1i0fg2swiwfhc4zzqnZ freeswitch-1.4.26]# ll
total 26752
drwxr-xr-x 9 500 mysql 4096 Jan 12 2016 conf
-rwxr-xr-x 1 500 mysql 1090366 Jan 12 2016 configure
-rw-r--r-- 1 500 mysql 26486 Jan 12 2016 Makefile.am
-rw-r--r-- 1 500 mysql 251242 Jan 12 2016 Makefile.in
-rw-r--r-- 1 500 mysql 3702 Dec 11 23:39 modules.conf
..........
modules.conf文件夹中可以选择需要编译的模块,以及移除不需要的模块。具体模块的功能详见官方文档。
conf 文件夹是定制相关配置的关键位置,进入 conf 文件夹如下,freeswitch.xml 中默认配置的是使用 vanilla 文件夹内的相关配置,因此我们只需要修改该文件夹内的配置即可。
[root@iZbp1i0fg2swiwfhc4zzqnZ conf]# ll
total 32
drwxr-xr-x 3 500 mysql 4096 Jan 12 2016 curl
-rw-r--r-- 1 500 mysql 61 Jan 12 2016 freeswitch.xml
drwxr-xr-x 7 500 mysql 4096 Jan 12 2016 insideout
drwxr-xr-x 5 500 mysql 4096 Jan 12 2016 minimal
drwxr-xr-x 7 500 mysql 4096 Jan 12 2016 rayo
drwxr-xr-x 5 500 mysql 4096 Jan 12 2016 sbc
drwxr-xr-x 3 500 mysql 4096 Jan 12 2016 softphone
drwxr-xr-x 13 500 mysql 4096 Jan 12 2016 vanilla
[root@iZbp1i0fg2swiwfhc4zzqnZ conf]#
进入 vanilla 文件夹,相关文件如下,
[root@iZbp1i0fg2swiwfhc4zzqnZ vanilla]# ll
total 156
drwxr-xr-x 2 500 mysql 4096 Jan 12 2016 autoload_configs
drwxr-xr-x 2 500 mysql 4096 Jan 12 2016 chatplan
-rw-r--r-- 1 500 mysql 2260 Jan 12 2016 config.FS0
drwxr-xr-x 5 500 mysql 4096 Jan 12 2016 dialplan
drwxr-xr-x 3 500 mysql 4096 Jan 12 2016 directory
-rw-r--r-- 1 500 mysql 684 Jan 12 2016 extensions.conf
-rw-r--r-- 1 500 mysql 3252 Jan 12 2016 freeswitch.xml
-rw-r--r-- 1 500 mysql 1226 Jan 12 2016 fur_elise.ttml
drwxr-xr-x 2 500 mysql 4096 Jan 12 2016 ivr_menus
drwxr-xr-x 2 500 mysql 4096 Jan 12 2016 jingle_profiles
drwxr-xr-x 10 500 mysql 4096 Jan 12 2016 lang
-rw-r--r-- 1 500 mysql 53640 Jan 12 2016 mime.types
drwxr-xr-x 2 500 mysql 4096 Jan 12 2016 mrcp_profiles
-rw-r--r-- 1 500 mysql 1465 Jan 12 2016 notify-voicemail.tpl
-rw-r--r-- 1 500 mysql 2791 Jan 12 2016 README_IMPORTANT.txt
drwxr-xr-x 4 500 mysql 4096 Jan 12 2016 sip_profiles
drwxr-xr-x 2 500 mysql 4096 Jan 12 2016 skinny_profiles
-rw-r--r-- 1 500 mysql 1157 Jan 12 2016 tetris.ttml
-rw-r--r-- 1 500 mysql 18815 Jan 12 2016 vars.xml
-rw-r--r-- 1 500 mysql 1456 Jan 12 2016 voicemail.tpl
-rw-r--r-- 1 500 mysql 359 Jan 12 2016 web-vm.tpl
drwxr-xr-x 2 500 mysql 4096 Jan 12 2016 yaml
[root@iZbp1i0fg2swiwfhc4zzqnZ vanilla]#
autoload_configs 文件夹内的 modules.conf.xml 文件可以选择启用哪些模块,不启用哪些模块(注意,这里如果要启用那些没有被编译的模块,则需要从源码编译相关模块才能启用),其他 xml 配置文件均为对应模块的配置,相关配置参数详见官方文档。
dialplan 文件夹内是配置拨号计划的 xml 文件,我们只需要关注 default.xml 的配置。
directory 内是内部分机相关配置文件。sip_profiles 文件夹内是网关配置。
vars.xml 文件是用于配置全局参数,例如sip分机注册端口,对外网关注册端口,分机默认密码,相关音视频编码等等。
最后由 freeswitch.xml 文件将拨号计划,分机和全局参数整合到一起。
这里我们最终的目的是要配置一个多方会议的功能,并且能够根据数据库的对应关系自动外呼相关成员号码。因此这里需要进行配置的是 dialplan/default.xml、autoload_configs 下会议配置文件conference.conf.xml。这里先不展开讲,相关配置和脚本在下篇中详细说明。
进入之前解压出的 freeswitch 源码文件夹下,例如:/root/freeswitch-1.4.26
。先执行./rebootstrap.sh
,无报错的情况下,再执行./configure
,可能存在一些依赖找不到的情况,提示什么找不到就安装什么即可,相关依赖如下,使用yum install ...
安装即可。
注意:执行命令前需要确保这些文件具有执行权限,通过chmod -x rebootstrap.sh
给文件可执行权限。
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 ,
libtiff-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。
./configure
执行没有报错后,开始编译安装,执行make install
,若提示缺少相关依赖编译失败,依旧按照上述方法安装即可。
安装成功后,再安装声音文件
make sounds-install
make moh-install
默认安装为在/usr/local/freeswitch
下,如果想要自定义安装位置,在编译安装时指定位置即可,如make install --prefix=/usr/local/freeswitch
[root@iZbp1i0fg2swiwfhc4zzqnZ freeswitch-1.4.26]# cd /usr/local/freeswitch/
[root@iZbp1i0fg2swiwfhc4zzqnZ freeswitch]# ll
total 68
drwxr-xr-x 2 root root 4096 Dec 12 09:29 bin
drwxr-xr-x 2 root root 4096 Dec 12 09:29 cache
drwxr-xr-x 2 root root 4096 Dec 12 10:07 certs
drwxr-xr-x 12 root root 4096 Dec 12 16:21 conf
drwxr-xr-x 2 root root 4096 Dec 12 21:41 db
drwxr-xr-x 2 root root 4096 Dec 12 09:29 grammar
drwxr-xr-x 3 root root 4096 Dec 12 09:29 htdocs
drwxr-xr-x 2 root root 4096 Dec 12 09:29 include
drwxr-xr-x 3 root root 4096 Dec 12 09:29 lib
drwxr-xr-x 4 root root 4096 Dec 12 17:37 log
drwxr-xr-x 2 root root 4096 Dec 12 09:35 mod
drwxr-xr-x 2 root root 4096 Dec 12 14:29 recordings
drwxr-xr-x 2 root root 4096 Dec 12 14:19 run
drwxr-xr-x 2 root root 4096 Dec 12 15:09 scripts
drwxr-xr-x 4 root root 4096 Dec 12 13:46 sounds
drwxr-xr-x 3 root root 4096 Dec 12 10:07 storage
drwxr-xr-x 2 root root 4096 Dec 12 16:37 voice_message
bin 文件夹下,执行./freeswitch
可以启动 freeswitch,后台启动则执行./freeswitch -nc
.
bin 文件夹下,执行./fs_cli
可以连接至已经启动的 freeswitch。若出现连接不上的情况,有可能是修改了conf/autoload_configs/event_socket.conf.xml
下的ip或端口,这时候可以根据配置的 ip 和端口,执行./fs_cli -H ip -P port
来连接到 freeswitch。
在控制台下(fs_cli),执行sofia status
,可以查看相关端口。internal
表示的是分机注册的ip和端口,可以在配置文件conf/vars.xml
中修改。
freeswitch@internal> sofia status
Name Type Data State
=================================================================================================
external profile sip:mod_sofia@ip:50099 RUNNING (0)
external::example.com gateway sip:[email protected] NOREG
external::vos01 gateway sip:FreeSWITCH@ip:5060 NOREG
ip alias internal ALIASED
internal profile sip:mod_sofia@ip:50100 RUNNING (0)
=================================================================================================
相关命令:退出控制台/bye
,控制台下关闭freeswitchshutdown
。