一,环境准备
1,Linux主机
准备一台Linux主机:Cenos7.0及以上64位系统,可以从阿里云,腾讯云,华为云等云厂商购买,或者自己搭建的Centos开发环境也可。
如果在公网部署,需要一个可访问的公网EIP。
同时需要防火墙开放端口:
端口号 | 协议 | 描述 |
---|---|---|
22 | tcp | ssh端口 |
80 | tcp | Http端口 |
443 | tcp | Https端口 |
5060 | udp/tcp | Sip注册端口 |
FreeSwitch Typical Ports:
FireWall Ports | Network Protocol | Application Protocol | Description |
---|---|---|---|
1719 | UDP | H.323 Gatekeeper RAS port | |
1720 | TCP | H.323 Call Signaling | |
2855-2856 | TCP | MSRP | Used for call with messaging |
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, Verto, and other protocols |
5066 | TCP | Websocket | Used for WebRTC |
7443 | TCP | Websocket | Used for WebRTC |
8081-8082 | TCP | Websocket | Used for Verto |
2,创建一个应用
到anyRTC官网注册一个开发者账号,并创建一个应用
3,SSH连接工具
我使用的是Win10系统,用的工具是FinalShell3.6.2,这工具也有Mac版本。非常好用,值得推荐。
二,安装FreeSwitch
环境:
[root@iZuf6b8f6yfdzv8c0m5fnsZ ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
安装:
1,准备好FreeSWITCH安装包
(我用的1.6版本)源码安装 包:github获取或FreeSWITCH官网下载或他人的蓝奏云并解压
[root@iZuf6b8f6yfdzv8c0m5fnsZ src]# pwd
/usr/local/src
[root@iZuf6b8f6yfdzv8c0m5fnsZ src]# unzip freeswitch-1.6.zip
[root@iZuf6b8f6yfdzv8c0m5fnsZ src]# ll
总用量 58448
drwxr-xr-x 22 root root 4096 5月 8 2018 freeswitch-1.6
-rw-r--r-- 1 root root 59842116 8月 27 20:20 freeswitch-1.6.zip
2,安装依赖环境
yum install -y http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm epel-release
如果只是使用freeswitch的SIP功能,可以不要安装这么多,保险起见还是安装下吧
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
需要点时间,等待中。。。
---------------------------------------------------------------------
好了,继续编译安装:
进入解压目录:
cd freeswitch-1.6
执行:
./bootstrap.sh
再继续执行编译安装
./configure(此过程出现众多未知错误,一般是依赖包没装,百度一下或加QQ群:597181019)
make(**make时 出现错误我遇到的处理方法在下下下面**)
make install
经过一段时间的等待,至此,FreeSWITCH就已经安装完了。在CentOS系统上,其默认的安装位置是/usr/local/freeswitch。两个常用的命令是bin/freeswitch和bin/fs_cli,为了便于使用,建议将这两个命令做符号链接放到你的搜索路径中,如:
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/
安装成功之后,系统会默认创建20个账号,分别是1000 - 1019,密码是:1234
默认用户在/usr/local/freeswitch/conf/directory/default/ 下
3,运行FreeSwitch
启动
# 默认后台运行
freeswitch -nc
# 关闭
freeswitch -stop
#进入后台:
fs_cli(直接执行,如果你创建软链接,没有创建需要到bin目录找到fs_cli执行)
# 生成环境后台运行
freeswitch -rp -nc -nonat
# 可以看到详细启动日志,启动后进入控制台模式,退出使用shutdown
freeswitch -c -nonat -rp
三,安装SRProxy
SRProxy的安装相对要简单很多
1,下载srproxy.zip
下载srproxy.zip 并放至 /usr/local/src/ 下
2,安装
unzip srproxy.zip -d srproxy
cd srproxy
chmod +x install.sh && ./install.sh
提示:Install program ok! 并且没有错误日志则代表安装成功。
安装成功后,系统会自动启动SRProxy,但是此时我们还没有配置相关服务,所以服务暂时不可用。
四,相关配置
1,配置Sip的Proxy转发规则
在/usr/local/freeswitch/conf/dialplan目录的 default.xml 配置文件中加入以下配置
<extension name="group_dial_sip_proxy">
<condition field="destination_number" expression="^0(.*)$">
<action application="set"><![CDATA[sip_h_X-Number=<sip:$1@${domain_name}>]]></action>
<action application="bridge" data="user/1000@192.168.x.xx"/>
</condition>
</extension>
意思是:如果呼叫的SIP号码前面加0,则自动路由到1000号码上;这个1000号码是SRProxy中配置的Proxy账号,这样SRProxy就可以收到Sip外呼的请求,从发对RTC发起呼叫。
注:配置中192.168.x.xx是你机器的真实IP,有公网EIP填公网EIP地址,局域网则填局域网IP地址。
修改完配置,保存,然后记得重新加载下配置:
freeswitch -nc
2,配置SRProxy
以下文件内容仅作为讲解配置文件用,不可拷贝直接在服务器上使用,相关配置文件服务器上已有,可直接修改
[global]
appid="你的应用ID,还记得吗?"
sip_svr="本机的EIP或局域网IP"
[ivr]
on=0 "是否开启IVR,0:不开启 1:开启"
rtm_account= "RTM的登陆账号,可设置为任意的字符串比如:1086,此账号后续会用到不可任性设置"
sip_account= "IVR对应的SIP号码,即呼叫此SIP号,进入语音导航"
[proxy]
on=0 "是否开启SIP代理,0:不开启 1:开启"
account= "SIP代理的账号:1000"
pwd= "SIP代理的密码:1234"
[sip] "SIP普通账号,用于RTC和SIP互通"
acc_prefix=1 "账号的Prefix"
acc_pwd=1234 "账号的密码"
acc_rule=002-019"账号的拼接规则,Prefix+rule组成账号数组,1002 - 1019 共18个账号"
[log]
#* 0:SENSITIVE 1:VERBOSE 2:INFO 3:WARNING 4:ERROR 5:NONE
level=2 "日志级别"
file=rtc_sip.log "日志名称"
max_file_size=100 "单位:M,日志最大不超过100M"
配置好之后进入srproxy的安装目录下执行:
cd /usr/local/ar4/srproxy
rtx.sh restart SRProxy
五,FAQ
1,Freeswitch的安装错误
由于每个人的环境不一样遇到的问题也不相同,所以先度娘或者进群讨论
2,问题描述:FreeSwitch部署在公网上 webRTC相互拨打电话,可以接通但没有声音传输,阿里云的安全组已经开放了RTP端口,但还是没有声音。
问题的解决:在/usr/local/freeswitch/conf/sip_profiles/internal.xml 中修改
<param name="ext-rtp-ip" value="60.205.**.**"/> <param name="ext-sip-ip" value="60.205.**.**"/>
把这改成自己的外网ip 重启freeswitch就可以解决
注:
在安装过程中遇到任何问题可以提iSsue
或者加入QQ群进行咨询:
QQ咨询群:580477436
ArCall技术交流群:597181019