fs.1.10 ON rockylinux8 docker镜像制作

2024-06-08 01:12

本文主要是介绍fs.1.10 ON rockylinux8 docker镜像制作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

freeswitch是一款简单好用的VOIP开源软交换平台。

rockylinux docker上编译安装fs1.10版本的流程记录。

环境

docker engine:Version 24.0.6

rockylinux docker:8

freeswitch:v1.10.7

手动模式

rockylinux准备

docker hub拉取rockylinux镜像。

sudo docker pull rockylinux:8

启动docker容器,版本使用rockylinux8。

sudo docker run -itd --name rockylinux.8-fs.1.10-compile rockylinux:8

sudo docker exec -it rockylinux.8-fs.1.10-compile bash

以下步骤均为docker容器“rockylinux.8-fs.1.10-compile”内部操作。

依赖库

FreeSWITCH 的安装将从源代码完成,以便您可以看到依赖项和库的安装过程,在某些情况下,这些依赖项和库也将从源代码安装。显然,可以从可用的存储库安装 FreeSWITCH,但最好学会直接管理源。在编译 FreeSWITCH 之前,将安装一系列库和依赖项,这些库和依赖项将允许您安装几乎所有最重要的 FS 模块。首先,激活 Power-Tools 存储库,这允许安装标准 Rocky Linux 存储库中不存在的一些软件包:

dnf install 'dnf-command(config-manager)' nano

dnf config-manager --set-enabled powertools

您从Vorbis开始,它是一个音频压缩/解压缩库,对于正确编译mod_shout模块至关重要:

dnf install libvorbis libvorbis-devel vorbis-tools libogg libogg-devel -y

mpg123和libshout旁边:

dnf install mpg123-devel mpg123-libs libshout-devel -y

对于 GSM 音频格式,安装相关包:

dnf install gsm gsm-devel -y

FFMPEG 是mod_av模块的依赖项,允许您在 Verto 中使用视频 H264 编解码器、FreeSWITCH 中用于 WebRTC 的信令、SIP 信令之外的另一个选项:

dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm -y

dnf install ffmpeg ffmpeg-devel -y

接下来是 CURL,它是一个客户端,允许您使用 HTTP、HTTPS、FTP、GOPHER、DICT、TELNET 协议接收和/或发送文件;由mod_xml_curl模块使用:

dnf install curl curl-devel libidn-devel -y

编译源所需的所有库和依赖项均已安装:

dnf install gcc ncurses-devel make gcc-c++ zlib-devel libtool bison-devel bison openssl-devel bzip2-devel wget newt-devel subversion flex gtk2-devel bzip2 patch libjpeg-devel yasm libsndfile-devel net-tools git perl-ExtUtils-Embed -y

(可选)在 Rocky Linux 8 中,对于数据库管理,默认情况下不再存在 MySQL,而是安装了 MariaDB:

dnf install mariadb mariadb-server mariadb-devel -y

UNIXODBC 是 ODBC API 的 Linux 实现,允许连接到许多数据库管理系统(例如 MySQL/MariaDB):

dnf install unixODBC unixODBC-devel mariadb-connector-odbc libtool-ltdl-devel -y

由于FreeSWITCH的内部数据库默认是基于SQLite的,因此安装了程序包和开发包:

dnf install sqlite sqlite-devel libpq-devel -y

(可选)PostgreSQL:

dnf install postgresql-devel postgresql-server -y

(可选)从来源安装FLITE 、Festival Lite,这是 FS 的mod_flite模块使用的文本到语音系统:

cd /usr/src

git clone GitHub - festvox/flite: A small fast portable speech synthesis system

cd flite/

./configure --enable-shared --with-audio=none --prefix=/usr

make

make get_voices

make install

Libuuid和uiid用于SoftSWITCH通道和进程线程的唯一标识:

dnf install libuuid libuuid-devel uuid uuid-devel -y

继续安装其他音频格式:SPEEX WAW 和 LAME;后者也是mod_shout模块的依赖项:

dnf install speex speex-devel speexdsp-devel wavpack wavpack-devel lame-devel -y

(可选)继续使用LIBMAD,它是一个高质量的 MPEG 音频解码器:

cd /usr/src

wget https://campus.voztovoice.org/FreeSWITCH/libmad-0.15.1b.tar.gz

tar -xf libmad-0.15.1b.tar.gz

cd libmad-0.15.1b

./configure --prefix=/usr --libdir=/usr/lib64

为了编译成功,必须修改Makefile中的一行:

nano +129 Makefile

CFLAGS = -Wall -g -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2

使其保持:

CFLAGS = -Wall -g -O -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2

我们继续编译和安装:

make

make install

要安装与 Opus 音频编解码器相关的mod_opus模块,您必须按照以下步骤从源安装编解码器:

wget https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz

tar -xf opus-1.3.1.tar.gz

cd opus-1.3.1

./configure --prefix=/usr --libdir=/usr/lib64

make

make install

第一部分以S或X结尾,这是一个允许操作音频文件并可以将它们从一种格式传输到另一种格式的程序:

cd /usr/src

wget https://campus.voztovoice.org/FreeSWITCH/sox-14.4.2.tar.gz

tar -xf sox-14.4.2.tar.gz

cd sox-14.4.2

./configure --prefix=/usr --libdir=/usr/lib64

make && make install

继续使用libtiff。

dnf install libtiff libtiff-devel libxml2 libxml2-devel -y

安装spandsp3的依赖库,需要先安装fs官方仓库,访问官方仓库需要鉴权。

echo "signalwire" > /etc/yum/vars/signalwireusername

echo "TOKEN" > /etc/yum/vars/signalwiretoken

dnf install -y https://$(< /etc/yum/vars/signalwireusername):$(< /etc/yum/vars/signalwiretoken)@freeswitch.signalwire.com/repo/yum/centos-release/freeswitch-release-repo-0-1.noarch.rpm

dnf install spandsp3 spandsp3-devel libks -y

(可选)OpenLDAP是轻量级目录访问协议的开源版本。通常它用于创建可以远程查阅和/或修改的用户目录。许多程序实现了连接到 OpenLDAP 服务器的可能性,FreeSWITCH 通过mod_ldap模块提供了这种可能性,尽管它被认为是过时的模块:

dnf install openldap openldap-clients openldap-devel openldap-servers -y

(可选)SNMP是简单网络管理协议,用于控制和监视 Linux 服务器和某些应用程序的性能:

dnf install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils -y

服务器的准备工作继续进行LUA编程语言的安装,该语言最常用于编写与FS交互的脚本和代码:

dnf install lua lua-devel -y

安装这些软件包是为了编译mod_memcache模块,该模块在某些类型的数据库查询中用作缓存:

dnf install memcached memcached-devel libmemcached libmemcached-devel -y --skip-broken

最后,LIBSRTP 库允许通过 SRTP 协议(RFC3711)和 FS 使用的 SIP 堆栈(SIP SOFIA)在 FreeSWITCH 中实现媒体流加密:

dnf install libsrtp libsrtp-devel sofia-sip* -y

以及 Jansson 库来支持mod_verto模块用作 WebRTC 的信号系统:

dnf install jansson jansson-devel -y

最后,您必须安装一些库,这些库将允许您安装更多模块,并以这种方式获得 FreeSWITCH 及其模块的几乎完整安装:

dnf install portaudio portaudio-devel python2-devel perl-devel erlang ldns-devel libedit-devel diffutils signalwire-client-c -y

fs编译安装

服务器准备好后,就开始安装FreeSWITCH;下载 1.10 分支的最新可用版本:

cd /usr/src

git clone -b v1.10.7 GitHub - signalwire/freeswitch: FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device.

进入创建的文件夹:

cd freeswitch

chmod 775 -R ./*

并准备好源代码进行编译:

./bootstrap.sh -j

./configure -C --enable-portable-binary \

--with-gnu-ld --with-python=/usr/bin/python2 --with-erlang --with-openssl \

--enable-core-odbc-support --enable-zrtp \

--enable-core-pgsql-support \

--enable-static-v8 --disable-parallel-build-v8

make

make install

空间优化

dnf autoremove

dnf clean all

package-cleanup --quiet --leaves | xargs dnf remove -y

package-cleanup --quiet --dupes | xargs dnf remove -y

dnf remove -y devtoolset-9-gcc scl-utils scl-utils-build yum-utils centos-release-scl centos-release-scl-rh rpmdevtools yum-plugin-ovl

rm -rf /var/cache/dnf/*

rm -rf /root/*

rm -rf /usr/local/share/*
 

手动模式简版

rockylinux准备

docker hub拉取rockylinux镜像。

sudo docker pull rockylinux:8

启动docker容器,版本使用rockylinux8。

sudo docker run -itd --name rockylinux.8-fs.1.10-compile rockylinux:8

sudo docker exec -it rockylinux.8-fs.1.10-compile bash

以下步骤均为docker容器“rockylinux.8-fs.1.10-compile”内部操作。

alias

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -f

cd

vi .bashrc

alias ll='ls -l'

依赖库

需要先安装fs官方仓库,访问官方仓库需要鉴权。

dnf install 'dnf-command(config-manager)' -y

dnf config-manager --set-enabled powertools

echo "signalwire" > /etc/yum/vars/signalwireusername

echo "TOKEN" > /etc/yum/vars/signalwiretoken

dnf install -y https://$(< /etc/yum/vars/signalwireusername):$(< /etc/yum/vars/signalwiretoken)@freeswitch.signalwire.com/repo/yum/centos-release/freeswitch-release-repo-0-1.noarch.rpm

dnf install -y epel-release -y

dnf makecache

dnf update

dnf remove -y spandsp-devel spandsp

dnf install -y sofia-sip-devel spandsp3-devel libks signalwire-client-c erlang postgresql-devel libtool python2-devel gcc-c++ zlib-devel libpng-devel sqlite-devel libcurl-devel pcre-devel speex-devel speexdsp-devel ldns-devel libedit-devel ilbc2-devel opus-devel lua-devel libsndfile-devel

dnf install -y which tzdata yasm git

fs编译安装

服务器准备好后,就开始安装FreeSWITCH;下载 1.10 分支的最新可用版本:

cd

git clone -b v1.10.7 https://github.com/signalwire/freeswitch.git

进入创建的文件夹:

cd freeswitch

chmod 775 -R ./*

并准备好源代码进行编译:

./bootstrap.sh -j

./configure

cd /root/freeswitch/src/mod/codecs/mod_g729/

make

cd -

make

make install

空间优化

dnf autoremove

dnf clean all

package-cleanup --quiet --leaves | xargs dnf remove -y

package-cleanup --quiet --dupes | xargs dnf remove -y

dnf remove -y devtoolset-9-gcc scl-utils scl-utils-build yum-utils centos-release-scl centos-release-scl-rh rpmdevtools yum-plugin-ovl

rm -rf /var/cache/dnf/*

rm -rf /root/freeswitch

rm -rf /usr/share/icons /usr/share/themes/ /usr/share/doc /usr/share/man

镜像操作

制作镜像。

sudo docker commit -m="rockylinux.8-fs.1.10-release" -a="zr" rockylinux.8-fs.1.10-compile 10.55.55.136:5000/zr/rockylinux.8-fs.1.10-release:v1.2

上传镜像到registry。

sudo docker images

sudo docker push 10.55.55.136:5000/zr/rockylinux.8-fs.1.10-release:v1.2

下载镜像。

sudo docker pull 10.55.55.136:5000/zr/rockylinux.8-fs.1.10-release:v1.2

启动容器release。

sudo docker run -itd --net=host -v /usr/local/freeswitch/conf:/usr/local/freeswitch/conf -v /usr/local/freeswitch/log:/usr/local/freeswitch/log -v /usr/local/freeswitch/recordings:/usr/local/freeswitch/recordings --name rockylinux.8-fs.1.10-sbc 10.55.55.136:5000/zr/rockylinux.8-fs.1.10-release:v1.2 /usr/local/freeswitch/bin/freeswitch -nonat -nosql -nonatmap -nocal -nort

sudo docker logs rockylinux.8-fs.1.10-sbc

sudo docker exec -it rockylinux.8-fs.1.10-sbc /usr/local/freeswitch/bin/fs_cli -x status

sudo docker rm -f rockylinux.8-fs.1.10-sbc

总结

fs.1.10版本比1.6版本的安装依赖要更多,最终产生的镜像大小也更大。

后续继续整理fs.1.10镜像的dockerfile模式。

空空如常

求真得真

这篇关于fs.1.10 ON rockylinux8 docker镜像制作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040831

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

docker-compose安装和简单使用

本文介绍docker-compose的安装和使用 新版docker已经默认安装了docker-compose 可以使用docker-compose -v 查看docker-compose版本 如果没有的话可以使用以下命令直接安装 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-c

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列5—Linux镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

OpenStack镜像制作系列4—Windows Server2019镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录  CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系

OpenStack镜像制作系列2—Windows7镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系列