Redhat8上基于debian镜像安装打包FreeSWITCH1.10.7

内容分享2周前发布
0 0 0

目录

一、安装docker环境

二、基于debian镜像安装FreeSWITCH1.10.7

三、FreeSWITCH应用配置

3.1 acl权限配置

3.2 5060等端口没有启动

3.3 软电话注册10秒后才提示接听

3.4 ESL配置[Java ESL连接使用]

3.5 有两个IP需要设置对外IP

3.6 设置每秒增加的会话数

3.7 配置CDR(呼叫详细记录)推送

四、制作FreeSWITCH镜像

4.1 调整镜像版本和启动容器

4.2 打包FreeSWITCH镜像

4.2.1 以第三方镜像为基础二次开发后运行打包镜像

4.2.2 在镜像基础上打包镜像(修改镜像信息)

4.2.3 通过容器创建新的镜像并推送仓库

4.2.4 推送镜像到docker仓库

五、拉取docker镜像安装运行

六、注意事项

6.1 sip线路地址配置

6.2 mrcp地址配置

6.3 cdr地址配置

6.4 LOCAL_EIP槽位参数要暴露出来

6.5 启动命令注意nas挂载

6.6 启动命令注意给LOCAL_EIP赋值


一、安装docker环境

#备份
sudo cp /etc/yum.repos.d/redhat.repo /etc/yum.repos.d/redhat.repo_bak
#下载阿里yum源
sudo wget -O /etc/yum.repos.d/aliyun.repo http://mirrors.aliyun.com/repo/Centos-8.repo
#清缓存
yum clean all
#更新
yum makecache
#安装并设置仓库
sudo yum install -y yum-utils
sudo yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker指定版本
sudo yum install docker-ce-23.0.6
#启动docker
sudo systemctl start docker
#查看验证
sudo docker version

二、基于debian镜像安装FreeSWITCH1.10.7

[yunyun@redhat-fs01 ~]$ sudo docker image pull debian:bullseye
[yunyun@redhat-fs01 ~]$ sudo docker run –name debian –network host -t -d debian:bullseye
[yunyun@redhat-fs01 ~]$ cd soft/
[yunyun@redhat-fs01 soft]$ sudo docker cp freeswitch-1.10.7.-release.tar.gz debian:/usr/src/
[yunyun@redhat-fs01 soft]$ sudo docker cp libks-1.8.2.tar.gz debian:/usr/src/
[yunyun@redhat-fs01 soft]$ sudo docker cp signalwire-c-1.3.0.tar.gz debian:/usr/src/
[yunyun@redhat-fs01 soft]$ sudo docker cp sofia-sip-1.13.14.tar.gz debian:/usr/src/
[yunyun@redhat-fs01 soft]$ sudo docker cp spandsp-packages.zip debian:/usr/src/

[yunyun@redhat-fs01 soft]$ sudo docker cp silent.wav freeswitch:/usr/src

[yunyun@redhat-fs01 ~]$ sudo docker exec -it debian bash
root@redhat-fs01:/# cd /usr/src/
root@redhat-fs01:/usr/src# >/etc/apt/sources.list
root@redhat-fs01:/usr/src# echo “deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free” >> /etc/apt/sources.list
root@redhat-fs01:/usr/src# echo “deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free” >> /etc/apt/sources.list
root@redhat-fs01:/usr/src# echo “deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free” >> /etc/apt/sources.list
root@redhat-fs01:/usr/src# echo “deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free” >> /etc/apt/sources.list
root@redhat-fs01:/usr/src# cat /etc/apt/sources.list
root@redhat-fs01:/usr/src# apt update
root@redhat-fs01:/usr/src# apt install gcc g++ autoconf automake make cmake yasm uuid-dev libvpx-dev unixodbc-dev ncurses-dev zlib1g-dev libjpeg-dev libtiff-dev liblua5.1-0-dev libsqlite3-dev libsndfile-dev libavformat-dev libswscale-dev  libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libedit-dev libtool libldns-dev libopus-dev libpq-dev

root@redhat-fs01:/usr/src# tar zxvf libks-1.8.2.tar.gz
root@redhat-fs01:/usr/src# cd libks-1.8.2
root@redhat-fs01:/usr/src/libks-1.8.2# cmake .
root@redhat-fs01:/usr/src/libks-1.8.2# make
root@redhat-fs01:/usr/src/libks-1.8.2# make install

root@redhat-fs01:/usr/src# tar zxvf sofia-sip-1.13.14.tar.gz
root@redhat-fs01:/usr/src# cd sofia-sip-1.13.14
root@redhat-fs01:/usr/src/sofia-sip-1.13.14# ./bootstrap.sh
root@redhat-fs01:/usr/src/sofia-sip-1.13.14# ./configure
root@redhat-fs01:/usr/src/sofia-sip-1.13.14# make
root@redhat-fs01:/usr/src/sofia-sip-1.13.14# make install

root@redhat-fs01:/usr/src# unzip spandsp-packages.zip
root@redhat-fs01:/usr/src# cd spandsp-packages
root@redhat-fs01:/usr/src/spandsp-packages# ./bootstrap.sh
root@redhat-fs01:/usr/src/spandsp-packages# ./configure
root@redhat-fs01:/usr/src/spandsp-packages# make
root@redhat-fs01:/usr/src/spandsp-packages# make install
root@redhat-fs01:/usr/src/spandsp-packages# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}
root@redhat-fs01:/usr/src/spandsp-packages# echo “export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}” >> /etc/profile
root@redhat-fs01:/usr/src/spandsp-packages# ldconfig

root@redhat-fs01:/usr/src# tar zxvf signalwire-c-1.3.0.tar.gz
root@redhat-fs01:/usr/src# cd signalwire-c-1.3.0
root@redhat-fs01:/usr/src/signalwire-c-1.3.0# cmake .
root@redhat-fs01:/usr/src/signalwire-c-1.3.0# make
root@redhat-fs01:/usr/src/signalwire-c-1.3.0# make install

root@redhat-fs01:/usr/src# tar -zxvf freeswitch-1.10.7.-release.tar.gz
root@redhat-fs01:/usr/src# mv freeswitch-1.10.7.-release freeswitch-1.10.7
root@redhat-fs01:/usr/src# cd freeswitch-1.10.7
root@redhat-fs01:/usr/src/freeswitch-1.10.7]$ vim modules.conf
    修改 #asr_tts/mod_unimrcp 为 asr_tts/mod_unimrcp
    注释掉mod_av、mod_pgsql、mod_signalwire、mod_verto
root@redhat-fs01:/usr/src/freeswitch-1.10.7# ./rebootstrap.sh
root@redhat-fs01:/usr/src/freeswitch-1.10.7# ./configure
root@redhat-fs01:/usr/src/freeswitch-1.10.7# make
root@redhat-fs01:/usr/src/freeswitch-1.10.7# make install

root@redhat-fs01:/usr/src# tar -zxvf luarocks-3.9.2.tar.gz
root@redhat-fs01:/usr/src# cd luarocks-3.9.2
root@redhat-fs01:/usr/src/luarocks-3.9.2# ./configure
root@redhat-fs01:/usr/src/luarocks-3.9.2# make
root@redhat-fs01:/usr/src/luarocks-3.9.2# make install
root@redhat-fs01:/usr/src/luarocks-3.9.2# luarocks install luasec
root@redhat-fs01:/usr/src/luarocks-3.9.2# luarocks install luasocket

三、FreeSWITCH应用配置

3.1 acl权限配置


root@redhat-fs01:/usr/local/freeswitch# vim conf/autoload_configs/acl.conf.xml
    #在<list name="domains" default="deny">列表最后面增加
    <node type="allow" cidr="0.0.0.0/0"/>
3.2 5060等端口没有启动


root@redhat-fs01:/usr/local/freeswitch# vim conf/vars.xml
    #修改如下:
    <!-- <X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=stun:stun.freeswitch.org"/> -->
    <X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=$${local_ip_v4}"/>
 
    <!-- <X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=stun:stun.freeswitch.org"/> -->
    <X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=$${local_ip_v4}"/>
3.3 软电话注册10秒后才提示接听


root@redhat-fs01:/usr/local/freeswitch# vim conf/dialplan/default.xml
    #注释掉<condition field="${default_password}" expression="^1234$" break="never">里:
    <!--<action application="sleep" data="10000"/>-->
3.4 ESL配置[Java ESL连接使用]


root@redhat-fs01:/usr/local/freeswitch# vim conf/autoload_configs/event_socket.conf.xml
    #修改如下:
    <param name="listen-ip" value="0.0.0.0"/>
    <param name="apply-inbound-acl" value="domains"/>
3.5 有两个IP需要设置对外IP


root@redhat-fs01:/usr/local/freeswitch# vim conf/sip_profiles/external.xml
    #设置"ext-rtp-ip"和"ext-sip-ip"从默认"auto-nat"值设置为对外的IP,这里为变量LOCAL_EIP
<param name="ext-rtp-ip" value="LOCAL_EIP"/>
<param name="ext-sip-ip" value="LOCAL_EIP"/>
3.6 设置每秒增加的会话数


root@redhat-fs01:/usr/local/freeswitch# vim conf/autoload_configs/switch.conf.xml
    #修改如下:
    <param name="sessions-per-second" value="1000"/>
3.7 配置CDR(呼叫详细记录)推送


root@redhat-fs01:/usr/local/freeswitch# vim conf/autoload_configs/xml_cdr.conf.xml
    #修改如下:
    <param name="url" value="http://xxxxxx/cdr"/>

四、制作FreeSWITCH镜像

4.1 调整镜像版本和启动容器

#导出容器快照
[yunyun@redhat-fs01 docker]$ sudo docker export -o fs-v1.10.7.tar b96100ab7468
#导入容器快照为镜像
[yunyun@redhat-fs01 docker]$ sudo docker import fs-v1.10.7.tar
#给镜像打标签
[yunyun@redhat-fs01 docker]$ sudo docker image tag 7975818d5e72 fs:v1.10.7
#保存镜像
[yunyun@redhat-fs01 docker]$ sudo docker image save fs:v1.10.7 -o fs-v1.10.7.tar
[yunyun@redhat-fs01 docker]$ sudo tar zcvf fs-v1.10.7.tar.gz fs-v1.10.7.tar

#加载镜像
[yunyun@redhat-fs01 docker]$ sudo docker load -i fs-v1.10.7.tar
#指定镜像启动容器运行
[yunyun@redhat-fs01 docker]$ sudo docker run –name fs -v /data:/data -v `pwd`/fs/log:/usr/local/freeswitch/log –network host -t -d fs:v1.10.7 /bin/bash
#进入容器
[yunyun@redhat-fs01 docker]$ sudo docker exec -it fs bash
root@redhat-fs01:/# cd /usr/local/freeswitch/bin/
root@redhat-fs01:/usr/local/freeswitch/bin# ./freeswitch -nc
root@redhat-fs01:/usr/local/bin# cat start.sh 
sed -i 's/LOCAL_EIP/'”$LOCAL_EIP”'/g' /usr/local/freeswitch/conf/sip_profiles/external.xml
sed -i 's/LOCAL_EIP/'”$LOCAL_EIP”'/g' /usr/local/freeswitch/conf/mrcp_profiles/unimrcpserver-mrcp-v2.xml

cd /usr/local/freeswitch/bin
./freeswitch -nc
tail -f /dev/null

[yunyun@redhat-fs01 ~]$ cat dockerfile 
from fs:v1.10.7

copy start.sh /usr/local/bin/start.sh
run chmod +x /usr/local/bin/start.sh

entrypoint [“sh”, “/usr/local/bin/start.sh”]
[yunyun@redhat-fs01 docker]$ sudo docker stop fs && sudo docker rm fs && sudo docker rmi fs:01

#指定构建名称标签
[yunyun@redhat-fs01 docker]$ sudo docker build -t fs:01 .
[yunyun@redhat-fs01 docker]$ sudo docker run –name fs -v /data:/data -v `pwd`/fs/log:/usr/local/freeswitch/log –network host -t -d fs:01 –entrypoint=/bin/bash /bin/bash

4.2 打包FreeSWITCH镜像
4.2.1 以第三方镜像为基础二次开发后运行打包镜像

#根据dockerfile构建镜像
[yunyun@redhat-fs01 ~]$ sudo docker build -t freeswitch:v1.10.7 .
[yunyun@redhat-fs01 ~]$ sudo docker run –name freeswitch -v /data:/data -v `pwd`/fs/log:/usr/local/freeswitch/log –network host -t -d freeswitch:v1.10.7 /bin/bash
[yunyun@redhat-fs01 ~]$ sudo docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS     NAMES
8392dbf00a31   freeswitch:v1.10.7   “sh /usr/local/bin/s…”   26 seconds ago   Up 25 seconds             freeswitch
[yunyun@redhat-fs01 docker]$ sudo docker export -o freeswitch-v1.10.7.tar 8392dbf00a31
[yunyun@redhat-fs01 docker]$ sudo docker import freeswitch-v1.10.7.tar 
sha256:4bb077357d4a5187885ecf529a55f1b5dc7b738ed2fd5c05ee6d1d8fcec93d6d
[yunyun@redhat-fs01 docker]$ sudo docker image tag 4bb077357d4a freeswitch:v1.10.7
[yunyun@redhat-fs01 docker]$ sudo docker image save freeswitch:v1.10.7 -o freeswitch-v1.10.7.tar
[yunyun@redhat-fs01 docker]$ sudo tar zcvf freeswitch-v1.10.7.tar.gz freeswitch-v1.10.7.tar

4.2.2 在镜像基础上打包镜像(修改镜像信息)

[yunyun@redhat-fs01 docker]$ sudo docker build -t freeswitch:v1.10.7 .
[yunyun@redhat-fs01 docker]$ sudo docker image inspect freeswitch:v1.10.7
[yunyun@redhat-fs01 docker]$ sudo docker image save freeswitch:v1.10.7 -o freeswitch-v1.10.7.tar
[yunyun@redhat-fs01 docker]$ sudo tar zcvf freeswitch-v1.10.7.tar.gz freeswitch-v1.10.7.tar

4.2.3 通过容器创建新的镜像并推送仓库

[yunyun@redhat-fs01 ~]$ sudo docker exec -it freeswitch bash
[yunyun@redhat-fs01 ~]$ sudo docker ps -a
[yunyun@redhat-fs01 ~]$ sudo docker commit d7bf98d308c0 freeswitch:1.10.7.t1
[yunyun@redhat-fs01 ~]$ sudo docker tag freeswitch:1.10.7.t1 repos.yunyuncloud.com:443/yunyun-docker/test/freeswitch:1.10.7.1
[yunyun@redhat-fs01 ~]$ sudo docker push repos.yunyuncloud.com:443/yunyun-docker/test/freeswitch:1.10.7.1

4.2.4 推送镜像到docker仓库

[yunyun@redhat-fs01 ~]$ sudo docker login –username=yunyun repos.yunyuncloud.com:443
[yunyun@redhat-fs01 ~]$ sudo docker tag freeswitch:v1.10.7 repos.yunyuncloud.com:443/yunyun-docker/freeswitch:v1.10.7
[yunyun@redhat-fs01 ~]$ sudo docker push repos.yunyuncloud.com:443/yunyun-docker/freeswitch:v1.10.7

五、拉取docker镜像安装运行

sudo docker login –username=yunyun repos.yunyuncloud.com:443
sudo docker pull repos.yunyuncloud.com:443/yunyun-docker/test/freeswitch:1.10.7.1
sudo docker run –name freeswitch -v /data:/data -v `pwd`/freeswitch/log:/usr/local/freeswitch/log –network host -t -d repos.yunyuncloud.com:443/yunyun-docker/test/freeswitch:1.10.7.1 /bin/bash

六、注意事项

6.1 sip线路地址配置

#打包镜像阶段(区分测试生产)
/usr/local/freeswitch/conf/sip_profiles/external/

6.2 mrcp地址配置

#打包镜像阶段(区分测试生产)
/usr/local/freeswitch/conf/mrcp_profiles/unimrcpserver-mrcp-v2.xml
    <param name=”server-ip” value=”xxxxxx” />

6.3 cdr地址配置

#打包镜像阶段(区分测试生产)
/usr/local/freeswitch/conf/autoload_configs/xml_cdr.conf.xml
    <param name=”url” value=”http://xxxxxx/cdr”/>

6.4 LOCAL_EIP槽位参数要暴露出来

#打包镜像阶段
/usr/local/freeswitch/conf/mrcp_profiles/unimrcpserver-mrcp-v2.xml
    <param name=”client-ext-ip” value=”LOCAL_EIP” />
    <param name=”rtp-ext-ip” value=”LOCAL_EIP” />
/usr/local/freeswitch/conf/sip_profiles/external.xml
    <param name=”ext-rtp-ip” value=”LOCAL_EIP”/>
    <param name=”ext-sip-ip” value=”LOCAL_EIP”/>

6.5 启动命令注意nas挂载

#启动容器阶段
sudo docker run –name freeswitch –restart=always -e LOCAL_EIP=http://xxxxxx -v /data:/data -v `pwd`/freeswitch/log:/usr/local/freeswitch/log –network host -t -d http://repos.yunyuncloud.com:443/yunyun-docker/test/freeswitch:1.10.7.1 /bin/bash

6.6 启动命令注意给LOCAL_EIP赋值

#启动容器阶段

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...