centos系统下FreeSwitch安装全过程
0、准备
1、环境:centos7
2、安装所需包:
(1)freeswitch-1.6.17编译好的包
(2)freeswitch-1.6.17.sql文件
(3)mysql的rpm包
(4)jdk的rpm包
(5)odbc的rpm包
(6)odbc.ini配置文件
一、系统准备
1、创建文件夹/home/freeswitch,传入如下文件:
freeswitch-1.6.17.sql mysql odbc odbc.ini
2、关闭SELINUX;
(1)vim /etc/selinux/config
(2)修改为:SELINUX=disabled
3、禁用ipv6:
(1)指令:vi /etc/sysctl.conf
(2)修改为:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.core.somaxconn = 2048
net.ipv4.ip_local_port_range= 1024 65535
net.core.rmem_default = 262144
net.core.wmem_default = 262144
fs.file-max = 104857
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_mem = 786432 3145728 4194304
net.ipv4.tcp_max_syn_backlog = 16384
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans= 131072
二、安装MYSQL
1、安装mysql5.7
(1)查询系统是否自带数据库:
执行:
[root@localhost freeswitch]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
(2)卸载CentOS7自带的MariaDB:其中--nodeps意思是不卸载依赖。
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
(3)用rpm -ivh 依次安装如下依赖包:
[root@localhost freeswitch]# cd mysql
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
(3)初始化数据库
执行:/usr/sbin/mysqld --initialize --datadir=/var/lib/mysql/
执行:chown mysql:mysql /var/lib/mysql -R
执行:systemctl start mysqld.service
(4)查找默认密码
执行:grep 'temporary password' /var/log/mysqld.log
执行:mysql -uroot -p'密码'
(5)重置密码执行:set password=password('tydic2017AbcDic');
(6)权限刷新
执行:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'tydic2017AbcDic' WITH GRANT OPTION;
执行:FLUSH PRIVILEGES;
(7)创建数据库
mysql> create database freeswitch;
mysql> use freeswitch;
(8)执行SQL文件,创建freeswitch数据表:
mysql> source /home/freeswitch/freeswitch-1.6.17.sql;
(9)查看:
mysql> show tables;
(10)退出:
mysql> quit;
三、修改其他
1、修改MySQL最大连接数,不区分大小写:vim /etc/my.cnf
lower_case_table_names=1
max_connections=5000
2、重启mysql :service mysqld restart
3、关闭防火墙与禁用:
systemctl stop firewalld.service
systemctl disable firewalld.service
四、JDK安装
1、查询是否安装过:rpm -qa | grep java
2、删除掉安转过得:rpm -e --nodeps + 包名
3、进入到JDK所在目录:
[root@localhost mysql]# cd ../
[root@localhost freeswitch]# ls
freeswitch-1.6.17.sql mysql odbc odbc.ini
[root@localhost freeswitch]# cd odbc
[root@localhost odbc]# ls
jdk-linux-x64.rpm libmyodbc5S.so unixODBC-2.3.1-11.el7.x86_64.rpm
libmyodbc5a.so libmyodbc5w.so unixODBC-devel-2.3.1-11.el7.x86_64.rpm
[root@localhost odbc]#
4、安装JDK:
rpm -ivh jdk-linux-x64.rpm
五、ODBC安装
1、安装两个包:
[root@localhost odbc]# rpm -ivh unixODBC-2.3.1-11.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:unixODBC-2.3.1-11.el7 ################################# [100%]
[root@localhost odbc]# rpm -ivh unixODBC-devel-2.3.1-11.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:unixODBC-devel-2.3.1-11.el7 ################################# [100%]
2、拷贝mysqlodbc驱动到centos7的lib64目录,这里我们不拷贝,做软连接:
ln libmyodbc5* /usr/lib64/
3、拷贝配置文件到/etc,并修改ODBC操作数据库的用户名、密码、端口号。
[root@localhost odbc]# ls
jdk-linux-x64.rpm libmyodbc5S.so unixODBC-2.3.1-11.el7.x86_64.rpmlibmyodbc5a.so libmyodbc5w.so unixODBC-devel-2.3.1-11.el7.x86_64.rpm
[root@localhost odbc]# cd ../
[root@localhost freeswitch]# ls
freeswitch-1.6.17.sql mysql odbc odbc.ini
[root@localhost freeswitch]# mv odbc.ini /etc/
[root@localhost freeswitch]# ls
freeswitch-1.6.17.sql mysql odbc
[root@localhost freeswitch]# vim /etc/odbc.ini
六、freeswitch安装
1、安装依赖:
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 --skip-broken
2、修改Linux内核最大并发连接数: vim /etc/security/limits.conf
文件末尾添加:
* soft nofile 65530 * hard nofile 65530
3、准备编译的fs,放在目录/usr/local下。
七、配置profile
1、外呼和接入:/usr/local/freeswitch/conf/sip_profiles
三个文件:external robotv3.xml robotv4.xml
每个profiles相当于一个语音的实例。
2、编辑robotv3.xml,robotv4.xml修改数据库密码:
原先:<param name="odbc-dsn" value="freeswitch3:root:tydic2020@AbcDic"/>
改为:<param name="odbc-dsn" value="freeswitch:root:tydic2017AbcDic"/>
盲注册、盲校验
<param name="accept-blind-auth" value="true" />
<param name="accept-blind-reg" value="true" />
其中设置context在修改拨号计划进行关联
<param name="context" value="robotv4"/>
端口号在:<param name="sip-port" value="5080"/>
指定实例不同的域:<param name="dbname" value="share_presence"/>
在directory中difault文件也有
更改IP地址:
<param name="rtp-ip" value="172.29.50.60"/>
<!-- ip address to bind to, DO NOT USE HOSTNAMES ONLY IP ADDRESSES -->
<param name="sip-ip" value="172.29.50.60"/>
<param name="ext-rtp-ip" value="172.29.50.60"/>
<param name="ext-sip-ip" value="172.29.50.60"/>
3、分机设置:
/usr/local/freeswitch/conf/directory/default
4、拨号计划:
/usr/local/freeswitch/conf/dialplan 有文件:robotv3.xml robotv4.xml
5、删除
rm -rf arthas-output arthas-output.zip
6、文件路径在:/usr/local/freeswitch/autoload_configs
vim switch.conf.xml
vim db.conf.xml
修改数据库连接
7、call-center包连的freeswitch的端口用的event_socket,所在的文件地址:
/usr/local/freeswitch/autoload_configs/event_socket.conf.xml
八、启动freeswitch
1、做软连接,第一个真实地址
ln /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch
2、启动:不做nat检测,不在内核启动
freeswitch -nonat -nosql
3、查看实例端口
sofia status
然后按照实例注册软电话。
4、拨打9196放音。
5、查看某个实例的状态:sofia status profile robotv3
九、配置eventsocket
1、地址:/usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml端口号可以找到
2、准入acl是talent:
<param name="apply-inbound-acl" value="talent"/>
十、配置mrcp
1、文件路径:/usr/local/freeswitch/conf/mrcp_profiles/aisv2.xml
2、如下,将带有client的配置都换成本机地址:
<param name="client-ip" value="192.168.66.70"/>
十一、配置证书
需要配置网页电话的证书级连接、websocket的证书级连接。谷歌浏览器对使用音频有这个强制要求。网页电话与freeswitch通信使用
websocket的安全链接。
1、查看实例配置的证书路径
(1)打开文件:vim /usr/local/freeswitch/conf/sip_profiles/robotv3.xml
(2)可以看到配置的证书文件路径:
<param name="ws-binding" value=":5066"/> <param name="wss-binding" value=":7443"/> <param name="apply-candidate-acl" value="jssipacl"/> <param name="tls-cert-dir" value="/usr/local/freeswitch/conf/certs"/>
2、打开证书:vim /usr/local/freeswitch/conf/certs/wss.pem
3、证书分别是公钥、私钥、证书链。
4、其中,jssipacl是准入策略,到/usr/local/freeswitch/conf/autoload_configs/acl.conf.xml加入如下策略:
<list name="jssipacl" default="allow"> <node type="allow" host="192.0.0.0" mask="255.0.0.0"/> <node type="allow" host="172.0.0.0" mask="255.0.0.0"/> <node type="allow" host="10.0.0.0" mask="255.0.0.0"/> </list>
十二、重启
1、重启指令:shutdown
2、再次打开,输入sofia status profile robotv3
=================================================================================================
Name robotv3
Domain Name N/A
Auto-NAT
false
DBName
sofia_reg_robotv3
Pres Hosts
Dialplan XML
Context robotv3
Challenge Realm auto_to
RTP-IP 192.168.67.250
Ext-RTP-IP
192.168.67.250
SIP-IP 192.168.67.250
Ext-SIP-IP 192.168.67.250
URL sip:mod_sofia@192.168.67.250:5070
BIND-URL
sip:mod_sofia@192.168.67.250:5070;maddr=192.168.67.250;transport=udp,tcp
WS-BIND-URL sip:mod_sofia@192.168.67.250:5066;transport=ws
WSS-BIND-URL sips:mod_sofia@192.168.67.250:7443;transport=wss
HOLD-MUSIC local_stream://moh
OUTBOUND-PROXY N/A
CODECS IN
PCMA,PCMU
CODECS OUT PCMU,PCMA
TEL-EVENT
101
DTMF-MODE rfc2833
CNG 13SESSION-TO 0
MAX-DIALOG 0
NOMEDIA false
LATE-NEG
true
PROXY-MEDIA false
ZRTP-PASSTHRU true
AGGRESSIVENAT
false
CALLS-IN
0
FAILED-CALLS-IN 0
CALLS-OUT 0
FAILED-CALLS-OUT
0
REGISTRATIONS 0
可以看到WSS-BIND-URL。
3、网页打电话?
直接在fs中输入指令:oridinate user/18324718426 &each()
由于任何号码都能注册,但毕竟用户不存在,所以需要指定:
oridinate {absolute_codec_string=pcma}Sofia/robotv3/18324718426 &each()
4、放音:
uuid_broadcast uuid $${sounds_dir}/keep.wav
十三、NGINX
1、下载地址:http://nginx.org/en/download.html
2、windows下终止进程:taskkill /f /im nginx.exe
启动:nginx.exe