开发者社区> 迎风语> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

FreeSWITCH安装

简介: FreeSWITCH
+关注继续查看

Build FreeSWITCH

这里主要介绍三种安装方法

  • Docker安装
  • 源码安装
  • 官网依赖安装

第一节 Docker 安装 FreeSwitch

1、Authentication required

最新FreeSwitch需要PAT才可以安装依赖。

SignalWire Personal Access Tokens (PAT)s are required to access FreeSWITCH install packages. HOWTO Create a SignalWire Personal Access Token

2、阿里源

由于使用debian默认的源是国外的,下载比较久,创建sources.list文件

cat >> sources.list <<-'EOF'
deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
EOF

3、创建Dockerfile

这里我已经创建了账号,使用的时候请替换TOKEN

FROM debian:11.1

# 安装编译freeswitch,所需要依赖环境
ENV TOKEN=pat_CKj8GjohjcGkU3JEMsuAzfri
ADD ./sources.list /etc/apt/sources.list
RUN apt-get clean && apt-get update && apt-get install -yq gnupg2 wget lsb-release vim sngrep
RUN wget --http-user=andy --http-password=$TOKEN -O /usr/share/keyrings/signalwire-freeswitch-repo.gpg https://freeswitch.signalwire.com/repo/deb/debian-release/signalwire-freeswitch-repo.gpg
RUN echo "machine freeswitch.signalwire.com login andy password $TOKEN" > /etc/apt/auth.conf
RUN echo "deb [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/debian-release/ `lsb_release -sc` main" > /etc/apt/sources.list.d/freeswitch.list
RUN echo "deb-src [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/debian-release/ `lsb_release -sc` main" >> /etc/apt/sources.list.d/freeswitch.list
RUN apt-get update -y && apt-get build-dep freeswitch -y

# 需要把下载freeswitch-1.10.7.tar.gz,解压到Dockerfile文件同级目录下,添加到docker镜像里
#RUN wget https://files.freeswitch.org/releases/freeswitch/freeswitch-1.10.7.-release.tar.gz && tar -xzvf freeswitch-1.10.7.-release.tar.gz 
ADD ./freeswitch-1.10.7.-release.tar.gz /opt/

# 自定义安装freeswitch模块
COPY ./modules.conf /opt/freeswitch-1.10.7.-release/modules.conf
RUN cd /opt/freeswitch-1.10.7.-release && ./configure && make -j && make all install 
# RUN cd /opt/freeswitch-1.10.7.-release && ./configure && make -j && make all install &&  make cd-sounds-install cd-moh-install

#配置环境路径
#ENV PATH "/usr/local/freeswitch/bin:$PATH"

#修改配置信息
# ADD ./vars.xml /usr/local/freeswitch/conf/vars.xml  #修改密码、端口、IP等
# ADD ./switch.conf.xml /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml  #端口
# ADD ./event_socket.conf.xml /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml #esl链接密码

# 添加启动文件
ADD ./start.sh /start.sh
RUN chmod +x /start.sh

SHELL       ["/bin/bash"]
HEALTHCHECK --interval=15s --timeout=5s \
    CMD  /usr/local/freeswitch/bin/fs_cli -x status | grep -q ^UP || exit 1

CMD ["/start.sh"]

start.sh脚本

#!/bin/bash
set -e
exec /usr/local/freeswitch/bin/freeswitch

目录结构如下

目录结构

4、创建阿里云容器个人账号

阿里云官网容器镜像服务

5、创建Makefile

SHELL = /bin/bash
VERSION = 1.0.1

all:
    echo Hi

setup:
    if [[ ! -f .env ]]; then \
        cp env.example .env; \
    fi

run:
    docker-compose up -d

start:
    docker-compose up

bash:
    docker exec -it xswitch bash

cli:
    docker exec -it xswitch fs_cli

logs:
    docker logs -f --tail=100 xswitch

stop:
    docker stop xswitch

pull:
    docker pull registry.cn-hangzhou.aliyuncs.com/andy_wg/freeswitch:${VERSION}

.PHONY conf:
    docker cp xswitch:/usr/local/freeswitch/conf .

eject: conf
    echo conf copied to local dir, please edit docker-compose.yml to use it

get-sounds:
    wget -O sounds.zip https://xswitch.cn/download/sounds.zip
    unzip sounds.zip
    echo "edit docker-compose.yml to use it"

build:
    docker build -t xswitch .  

push:
    docker tag xswitch registry.cn-hangzhou.aliyuncs.com/andy_wg/freeswitch:${VERSION}
    docker push registry.cn-hangzhou.aliyuncs.com/andy_wg/freeswitch:${VERSION}

login:
    docker login --username=浪浪舒服 registry.cn-hangzhou.aliyuncs.com

get-ip:
    curl myip.ipip.net

6、生成镜像并上传阿里云

make build
make push

7、运行

宿主机目录:/data/freeswitch/conf,需要提前准备freeswitch的conf的配置。

docker run -it --network host --name freeswitch  -v /data/freeswitch/conf:/usr/local/freeswitch/conf -d freeswitch-1.10.7

8、安装CJSON

安装完FreeSwitch后,当启动lua调用json的时候会报错,这时需要安装下面的库

https://github.com/Kong/kong-cjson/archive/2.1.0.tar.gz

9、参考

第二节 源码安装

1、前提

安装方式可分为Docker安装和源码安装,推荐使用Docker安装

由于FreeSWITCH核心开发者大部分都使用Debian,在Debian上安装FreeSWITCH的方法见FreeSwitch官网

2、获取源码

3、安装

安装FreeSWITCH前需要安装一些依赖。在不同的平台上,依赖不同的包,如:

  • Debian/Ubuntu:
apt-get -y install build-essential subversion automake autoconf wget libtool libncurses5-dev
  • CentOS:
yum install -y git gcc-c++ yasm autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel libxml2-devel libyuv-devel opus-devel libvpx-devel libvpx2* libdb4* libidn-devel unbound-devel libuuid-devel lua-devel libsndfile-devel libtiff-devel 

FreeSWITCH最新的源代码将Sofia-SIP和SpanDSP移出了FreeSWITCH代码仓库,分离到了独立的仓库中,在安装FreeSWITCH之前需要单独安装:

https://github.com/freeswitch/sofia-sip
https://github.com/freeswitch/spandsp

最新的mod\_verto模块也需要libks,源代码可以从以下地址获取:

https://github.com/signalwire/libks

重点:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

获取FreeSwich源码

git clone https://github.com/signalwire/freeswitch.git

编译安装:

./bootstrap.sh # 初始化源码环境和工具
./configure    # 配置,如果将FreeSWITCH装到特定位置,可以使用 --prefix 指定
make           # 编译
make install   # 安装

创建软链接

ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/ 
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/

你最好参考一下http://www.freeswitch.org.cn/Makefile以确定你的平台上应该安装哪些包。当然,该文件不是永远能保证最新的。

4、参考链接

第三节 官网依赖安装

1、环境

操作系统:Centos7.4 FreeSwitch:1.10.7

2、提前

SpanDSP and sofia-sip
Sofia-sip and SpanDSP dependencies have been removed from the FreeSWITCH™ tree since v1.10.4 Release (05 August 2020).
You can find source files of Sofia-sip here: https://github.com/freeswitch/sofia-sip
SpanDSP sources are here: https://github.com/freeswitch/spandsp
Packages for Sofia-sip and SpandDSP are available for all supported platforms from our packaging repos.
You might have to visit each directory, run ./bootstrap.sh then ./configure then make install

3、源码安装

echo "signalwire" > /etc/yum/vars/signalwireusername
echo "pat_CKj8GjohjcGkU3JEMsuAzfri" > /etc/yum/vars/signalwiretoken
yum 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 epel-release
yum-builddep -y freeswitch
yum install -y yum-plugin-ovl centos-release-scl rpmdevtools yum-utils git
yum install -y devtoolset-4-gcc*
 
scl enable devtoolset-4 'bash'
 
cd /usr/local/src
git clone -b v1.10 https://github.com/signalwire/freeswitch.git freeswitch
cd /usr/local/src/freeswitch
./bootstrap.sh -j
./configure --enable-portable-binary \
            --prefix=/usr --localstatedir=/var --sysconfdir=/etc \
            --with-gnu-ld --with-python --with-erlang --with-openssl \
            --enable-core-odbc-support --enable-zrtp
make
make -j install
make -j cd-sounds-install
make -j cd-moh-install

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

作者高分内容
更多
FreeSWITCH安装 121
相关文章
Elasticsearch 学习笔记——1.在 Linux 上安装 elasticsearch
一个偶然的机会,leader 让我看看关于 es 的内容,之前我还未接触过,打开官网一看,发现关于 ealstic 的组件还真是不少,当然 ealsticsearch 应该是其中最流行、最有用和最受欢迎的了,截止到今天(2019.04.05),elasticsearch 在 Github 上面已经有 39k+ star 了。所以,最近在学习它,并且也想写一点学习笔记,分享出来供大家参考。
60 0
CentOS7 安装 ElasticSearch v7.15.1
CentOS7 安装 ElasticSearch v7.15.1
83 0
CRF 及CRF++ 安装与解释
CRF简介 Conditional Random Field:条件随机场,一种机器学习技术(模型) CRF由John Lafferty最早用于NLP技术领域,其在NLP技术领域中主要用于文本标注,并有多种应用场景,例如: 分词(标注字的词位信息,由字构词) 词性标注(标注分词的词性,例如:名词,动词,助词) 命名实体识别(识别人名,地名,机构名,商品名等具有一定内在规律的实体名
3035 0
适应安装程序用的TreeView控件
  对axTree做了大量的修改,一是修改Bug,二是添加新功能 1、增加了必选项功能 2、支持16×16的图标位图 3、修改连接线的Bug,增加上虚线补齐功能 4、支持API 滚动条,调整滚...
449 0
+关注
1
文章
0
问答
作者高分内容
更多
FreeSWITCH安装 121
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载