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、拨号计划:
1
2
/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
posted @   jasonzhangxianrong  阅读(2303)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示