CentOS 7下安装docker和FreeSWITCH-全过程
具体步骤如下:
准备工作:
提前将安装包放在CentOS系统下(提前创建好文件夹,这里为:/home/freeswitch(后转移至/home/soft-fs),所需文件如下:
复制第1、3、4、5到本地计算机(这里路径为:D:\FreeSWITCH-docker)以备将其复制到CentOS系统中。方法如下:
1、可以用rz的方式(但是用rz传大文件会有问题(传的过程中可能会失败),所以最好用ftp工具来传)
2、ftp工具:(还有一个叫做WinSCP 的工具,基本上是一样的)
(在Xshell 7软件下点击图中的图标)
接下来开始安装,参照对应的安装说明:
路径:D:\FreeSWITCH-docker/readMe(安装步骤).txt
第一步:安装docker,版本18以上
该步骤参考: https://www.ahfesco.com.cn/affairs/Article.asp?id=3595
如下:
1、验证你的CentOS版本是否支持Docker(Docker要求CentOS系统的内核版本高于3.10即可)
操作指令:uname -r —— 通过 uname -r 命令查看你当前的内核版本
这里是验证是符合的:
即以下这两个步骤一般是不需要的:
1)Docker 要求 CentOS 系统的内核版本高于 3.10 ,验证你的CentOS 版本是否支持 Docker:
# uname -r #通过 uname -r 命令查看你当前的内核版本
2)使用 root 权限登录 Centos。确保 yum 包更新到最新。
# yum update # 谨慎操作,会更新大部分rpm程序包的版本,非必要建议跳过;
然后,直接第3步:
3. 卸载旧版本(如果安装过旧版本的话)
# rpm -qa|grep docker
# yum remove docker docker-common
docker-selinux docker-engine
如果有老的(低于18)版本,要先卸载掉,这里已经是docker -ce-18的版本了,不用下载了。(因为之前装过)
4. 安装需要的软件包
yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
# yum install -y yum-utils device-mapper-persistent-data
lvm2 , 这里直接安装就行了。
5. 设置yum源
# yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 记得修改镜像源 国外镜像一般很难访问,建议配置阿里云镜像。
设置docker的yum源,不然从国外下载太慢了。
6. 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
查看docker的版本,不然不知道下载哪个版本。这里出现了错误,因为之前误删了yum源,导致:
但是没关系,直接执行第7步(因为docker 的18版本肯定是存在的,所以在具体的实验过程中,可以省略第6步)
7. 安装docker
# yum -y install docker-ce-18.06.3.ce
直接安装docker。
8. 启动并加入开机启动
然后,要设置服务自启动。(不然开机不自启,服务起不来)
systemctl start docker —— 先启动docker服务
systemctl enable docker —— 再设置docker服务自启动
9. 验证安装是否成功
(有client和service两部分表示docker安装启动都成功了)
docker version
10. 设置docker的的国内镜像
# yum -y install git
# service docker stop
# dockerd --registry-mirror=http://hub-mirror.c.163.com
# service docker start
第10步这里不需要,设置docker镜像的。
接下来,参考:readMe(安装步骤).txt文件。
第二步:导入Freeswitch镜像文件
docker load < freeswitch-env-docker-debian10.tar
注:先把/home/freeswitch下的文件(包括FreeSWITCH的安装包)都给移动到另一个新建的文件夹(这里是soft-fs)下,这个文件夹作为FreeSWITCH的安装路径。
输入指令:mkdir /home/soft-fs/
mv * /home/soft-fs/ (在/home/freeswitch文件夹下执行)
通过:docker images —— 查看docker所有的镜像(因为之前安装过)
这里,删除其中一个镜像(比如这里的第一个):(按ID进行删除)
docker rmi 7e633fe6600a ,出现如下错误:
原因:正在被使用,肯定删不掉(跟进程没有关系,通过docker ps(docker ps -a 是查看所有的进程)查看进程,发现没有docker进程)
这里是因为,有一个docker容器使用了这个镜像。
需要先把这个docker容器给删掉:
docker ps -a
docker rm d43f937ceade —— 删除容器 (d43f937ceade这个ID是通过执行删除指令:docker rmi 7e633fe6600a的错误提示知道,docker ps -a也能获取)
把容器成功删除后,就可以把镜像删除了,如:
(以上(从删除镜像文件开始)问题如果在新环境下安装是没有的,因为这里之前安装过,属于历史遗留问题)
接下来就可以继续执行:
第二步:导入Freeswitch镜像文件
docker load < freeswitch-env-docker-debian10.tar —— 进行装载
装载完成后,输入指令:docker images —— 发现删除的镜像又有了
第三步:把freeswitch-1.10.6-bin-for-debian10.zip 程序解压缩到 /home/freeswitch 目录下
指令:unzip -d /home/freeswitch/ freeswith-1.10.6-debian-bin-20220509.zip
解压缩后,进行查看:ll /home/freeswitch/,如下:
这一步就成功了。
接下来,就开始创建docker容器了。
第3步就不用了。
(mariadb是老早之前用的了,现在用的是MySQL,两者都是类似的)
创建docker容器:
使用刚才的镜像创建docker容器:
(理解:镜像文件 —— 理解为操作系统的安装文件
容器 —— 理解为轻量级的虚拟机 所以说:使用镜像创建一个docker容器(轻量级的虚拟机))
第四步:使用新创建的镜像启动freeswitch容器
docker run -itd --name freeswitch -v /home/freeswitch:/usr/local/freeswitch --network=host freeswitch1106-env-for-debian10 /usr/local/freeswitch/bin/freeswitch -nonat -nosql
(注意跟进实际情况增加另外两个目录映射,录音目录和tts合成目录:-v /home/data:/home/data -v /home/Records:/home/Records)
结果如下:
其中,因为FreeSWITCH启动时候,需要连接数据库,所以我们需要
1.安装一个MySQL数据库:
上图,mysql57.zip(64位的)是Linux版本的,
我们这里用Windows版本的,即mysql57.msi这个文件。
(注:按道理来说,是应该要安装Linux版本的,但是这里考虑虚拟机的内存有限,安装MySQL数据库的话可能不利于系统运行。安装Windows版本的也行,因为MySQL数据库提供的是网络服务?)
安装完成界面:
接下里需要进行一定的配置:
…………
配置好,MySQL数据库就开始启动服务(服务启动成功会弹出提示)
服务启动成功后,我们需要安装客户端连接工具; Navicate Premium
Navicate Premium.zip 这个文件。
这个工具,需要它是注册过的,然后找它的注册表文件。(没找到!!??)
最后,见下图所选定的文件,直接打开/运行这个文件/程序:
即可(没有提示,能用,那就先用)。
然后,在该软件内,点击“连接”(最左边)
配置为:
点击“测试连接”,显示成功即可。(127.0.0.1???)
接着,点击刚才新建的连接,(选中,然后)右键—>“新建数据库”
配置如下:
注:字符集一定要如上设置。
确定后,即有:
2.然后,把sql给导进来:
选定freeswitch(需要双击一下),右键—>选择“运行SQL文件”,
接着文件选择路径为之前存放FreeSWITCH安装文件的地方的:D:\FreeSWITCH-docker
选择该路径下的 freeswitch-1.10.6.sql 文件。
选定后,点击开始即可。
(点击/选择freeswitch下的“表”,在右边空白区右键刷新即可看见导入的文件(可见其数据结构))
(这里,需要将所用到的本地ip地址设置为固定,而不是自动获取,防止后面网络变动)
接下来,查看虚拟机的ip,为:192.168.88.7 —— 88号段的
然后,需要查看本机的ip(看有没有88号段的,这样才能互通)
指令:ipconfig /all , 发现有88.1号段的: 192.168.88.1
在虚拟机端进行ping操作:ping 192.168.88.1
发现没有ping通,ping百度也没有ping通:
同时,在Navicate Premium(MySQL数据库客户端连接工具)中,(刚才的操作)点击连接,进行192.168.88.1的连接:
点击“连接测试”,结果,并没有显示成功。(应该是这个地址有问题)
换一个地址,如下:192.168.67.124(这样本机肯定可以连上??)
在Navicate Premium中进行连接操作!!(显示连接不成功,直接显示错误)
在虚拟机中,ping 192.168.67.124,结果是通的:
接下里要做一个授权给它(对应刚才在Navicate Premium中连接不成功(192.168.67.124))。
连接不上,其实链路是通的(因为实际上ping通了),只是权限没给。
参考:https://www.ahfesco.com.cn/affairs/Article.asp?id=2085 —— 电话服务器安装Freeswitch全过程记录
复制该条指令到 Navicate Premium 中:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'tydic2017AbcDic' WITH GRANT OPTION
在Navicate Premium 中,点击“查询”—>接着点击“新建查询”—>在查询编辑器下,粘贴刚才的指令(记得将指令中BY后面的密码改为123456)。点击运行即可。
然后,同样的操作,复制该条指令到Navicate Premium 中,运行即可:
FLUSH PRIVILEGES
然后,再连接下192.168.67.124,显示成功了。
3.再接下来,要配置一下FreeSWITCH连接数据库的(配置文件)
虚拟机下:
第1个,要配置的文件:
vim autoload_configs/switch.conf.xml
注意:在freeswitch/conf/文件夹下。
进入后,直接输入 /mariadb —— 进行搜索代码所处的位置
找到该行代码,取消它的注释即可。
!!!!!! 29:31分 !!!!!!
第2个,要配置的文件:
vim autoload_configs/db.conf.xml
然后,同样取消注释:
第3个,要配置的文件:
到sip_profiles文件夹下,删除所有的ipv6文件
(在freeswitch/conf下)cd sip_profiles/
rm -rf *ipv6* (-rf放在后面也一样)
第4个,配置该文件下的internal.xml文件:
vim internal.xml
/sip-ip —— 进行搜索
修改处为:
改动前:
改动后:
未改动处:
同样,
第5个,配置该文件下的external.xml文件:
改动前:
改动后:
第6个,配置autoload_configs文件下的pre_load_modules.conf.xml文件:
vim ../autoload_configs/pre_load_modules.conf.xml
改动前:
改动后:(取消了一行的注释)
然后再次执行
使用新创建的镜像启动freeswitch容器:
docker run -itd --name freeswitch -v /home/freeswitch:/usr/local/freeswitch --network=host freeswitch1106-env-for-debian10 /usr/local/freeswitch/bin/freeswitch -nonat -nosql
这里,因为之前已经执行了这一操作,所以会有如下提示:
执行:docker logs freeswitch —— ??
结果如下:
然后,执行:docker start freeswitch
结果:
第五步:进入Freeswitch控制台
docker exec -it freeswitch /usr/local/freeswitch/bin/fs_cli
结果:成功进入!!!
以上为安装的全过程。
出现的一些问题:
1.退出系统后,再次执行:docker exec -it freeswitch /usr/local/freeswitch/bin/fs_cli
那就重新:
docker logs freeswitch
docker start freeswitch
然后,再次执行即可。