FreeSWITCH是一个开源软件。因此,您 总是能够自由地获取它的源代码。此外,它还是一种特别的开源代码:您可以修改它(或者雇佣一些顾问根据您的规格修改),在上面构建您的产品,并进行销售,不需要发布您的修改或支付任何版税(它包含在类似BSD的许可中)。事实上,无论修改与否,从源码开始构建并安装FreeSWITCH是很简单的。这一章我们将探讨这一主题。

        FreeSWITCH可以安装于Linux、Windows、*BSD和OSX之上,可以安装在一系列硬件之上,它们跨越96核的大型数据中心服务器到Raspberry Pi,从VMWare到KVM虚拟机,以及从LXC容器到AWS实例。

        对于每个平台,无论是编译还是运行FreeSWITCH,都依赖于许多先决条件:许多库、工具和程序。显然,为了提高您的舒适度,我们已经在主流平台上自动完成了这些预安装需求。同时,我们还为最流行的Linux发行版本(Debian、CentOS/RHEL、Ubuntu)提供现成的安装包。我们也将涉及这些内容。

        在这一章里,我们将描述如何下载FreeSWITCH源码进行安装,也会描述如何安装现成的软件包。最后,我们将解析如何启动FreeSWITCH,如何让FreeSWITCH运行在后台(作为守护进进程或服务)。

        在本章中,我们将讨论以下主题

  1. 选择安装FreeSWITCH的平台
  2. 选择从源码安装还是安装现成的软件包
  3. 在Linux和Windows下安装 FreeSWITCH
  4. 启动FreeSWITCH 后台运行

 

把FreeSWITCH安装在哪

        FreeSwitch几乎可以安装在任何东西上,这对于测试、开发和打开大量不同用例(想想嵌入式系统和物联网)都是有益的。

        对于生产系统,特别是对于关键任务系统(想想你公司的PBX,或出租车调度服务,或你的热启动支持WebRTC的商业视频会议和翻译服务),你有三种选择:使用我们建议的平台(最有尝试性和真实性),或确切知道你在做什么(提示:它是不可能的,你知道多少FreeSWITCH内部的事情),或者请求一家合格的咨询公司。这不仅对于节省时间、金钱、努力和减少挫折很重要,而且对于持续的支持、错误修复、功能升级和平台升级来说更重要。

选择操作系统

        哪个操作系统最适合在生产环境中运行FreeSWITCH?选择您公司最常用的,您最专长的,感觉最舒服的;您知道从哪里寻求支持的。只要你选择一个经过咨询的操作系统,我们就会为你提供支持。

        请注意,在Linux上,在我们不支持的发行版上编译和运行freeswitch似乎很容易。它还是Linux,不是吗?警告!Freeswitch是一个复杂的服务应用程序,特别是对于视频混合和美化,它有许多非常具体的依赖关系。因此,如果您不使用视频相关的模块,那么您可能会发现在其他的Linux发行版上编译和运行fs更容易(我们希望听到您的成功)。

        如果没有特别的考虑(比如说嵌入式系统),那么始终选择64位操作系统;它在内核和库级别都是最适合现代服务器硬件的。特别是,避免在64位硬件上使用32位操作系统或虚拟机。相关的不兼容报道屡见不鲜,很明显,不值得承担这种未知的风险。

Linux

        Debian 8 (Jessie) 64位是现有Linux发行版本中建议、部署和测试最多的版本,也是大多数FreeSWITCH开发者使用的平台。如果您对Linux感兴趣,并对发行版本感到困惑,那么一定要使用Debian Jessie。所有的库、依赖项、内核特性等等这些在这个平台的测试频度是分钟级别的,包括FreeSWITCH的每种可能配置、用例和工作负载。Debian (Raspbian)也用于Raspberry Pi,Pi3有足够的马力处理视频。FreeSWITCH可选的Linux发行版本,其次推荐是CentOS/RHEL 7或Ubuntu 16.04 (Xenial)。请注意,Ubuntu在更新软件包和库方面往往过于冒险,即使是在长期支持(LTS)版本也是如此。我们支持Ubuntu,甚至发布现成的软件包,但是如果你没有严格的公司政策,那请选择Debian。如果您使用Ubuntu,您会发现是在闭门造车,特别是安全保护方面。Freeswitch 1.8发布声明称,将支持Debian9“Stretch”,随着时间的推移,它将成为首选的Linux发行版。对Stretch的支持可能会回溯到Freeswitch 1.6,但是,请访问h ttp://freeswitch.org/confluenceofficial的官方文档以获取最新的更新。

 

Windows

        Windows是继Linux之后,运行FreeSwitch最流行的操作系统。在许多windows商店中,FreeSWITCH与整个微软生态系统融为一体,并一直支持C#。我们提供.msi安装程序,适用于64位(建议用于服务器类型的机器)和32位Windows。此外,您还可以使用免费的Microsoft Visual Studio版本(如Express版或Community版),自己编译FreeSWITCH源码。

 

OS X (Mac)

        许多开发者在他们的Mac下编译和运行FreeSWITCH,并提供了一个macOS的自动安装包(macFI),使得所有事情变得像点击和午餐一样简单。FreeSWITCH支持OS X的版本是10.12 (Sierra)、10.11 (El Capitan)和10.10 (Yosemite)。在生产环境中部署Mac的FreeSWITCH是原始的。

 

*BSD

        FreeSWITCH可以在FreeBSD编译和安装。不时有关于OpenBSD和其他BSD衍生产品的FreeSWITCH相关的传言。至少内核和通用的模块(视频模块除外)可以很容易地在FreeBSD平台编译,而不需要多少改动。

选择安装包还是编译源码?

        从安装包或程序直接安装可执行程序是最简单的方式,也会降低依赖性(您不需要下载源码,不需要安装编译工具和依赖库)。这是目前最省时的方式。

        有一个缺点是:最终得到的目录结构与您将在本书或任何FreeSWITCH文档中阅读到的目录结构不同。这是因为每一个操作系统,每一个Linux发行版,都要求在特定的目录布局下安装程序,比如说,在/usr/bin/下安装可执行文件;在/usr/share/doc/freeswitch/下存放文档文件。此外,每个Linux发行版本可能它的一些特殊约定。与之相对的是编译源码安装FreeSWITCH,可以自由选择配置安装路径,在缺省配置下,所有文件都将被安装在以下路径中:

/usr/local/freeswitch/.

        接下来我们将看到,在安装包安装的最后,会建立一些链接来模拟缺省的源安装和适配文档。

 

安装FreeSWITCH

        这里我们将简要介绍两种主流平台下安装FreeSWITCH所需的步骤。请访问

Debian 8 Jessie

        这是一个参考平台,是部署得最多的平台,大多数开发在被移植到其他OS和发行版之前,首先在Debian平台完成。如果对使用哪个Linux发行版有疑问,请使用这个发行版。Debian支持源代码安装和包安装,并且大部分是自动化的。

        FreeSWITCH宣称支持Debian 9 "Stretch",随着时间推移,它将成为首选支持的Linux发行版本。Stretch的支持可能被扩展到FreeSWITCH 1.6,请访问http://freeswitch.org/confluence获取最新的官方文档。

        请确保最最新部署、更新的干净的Debian 8 (Jessie)64位系统开始。你可以从Debian服务器下载最小镜像netinst(因为无论如何软件包都需要更新),也可以选择常规的Debian 8安装介质。

        如果您没有特定的需求,您可以接受屏幕上显示的所有默认选项的指令。在Debian部署结束时,当问及软件的选择时,只选择SSH服务和标准系统实用程序(在列表项上按空格键),我们会在后续步骤中自行安装其它需要的软件包。

freeswitch 图形化 freeswitch应用场景_freeswitch 图形化

        选择软件之后,依照屏幕上的提示,以正常的方式完成Debian的部署。

        然后通过SSH连接,安装并设置缺省语言和字符集,使用CLI命令时,en_US.UTF-8UTF-8是一种好的选择:

字符集配置界面:

freeswitch 图形化 freeswitch应用场景_安装_02

 

选择完毕后单击 OK按钮:

freeswitch 图形化 freeswitch应用场景_发行版_03

 

        然后退出SSH,重新登陆,或者重启下机器。现在,我们可以开始安装FreeSWITCH了。

 

安装包安装

在一台新的Debian64位祼机上,以root用户登陆,在命令行执行以下命令(下面的内容以FreeSWITCH 1.6为例,对于1.8,请在http://freeswitch.org/confluence搜索最新的指南):

apt-get update

apt-get -y upgrade

apt-get install -y wget ca-certificates wget -O -

https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add -

echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" > /etc/apt/sources.list.d/freeswitch.list

apt-get update

apt-get install -y freeswitch-meta-all

 

        现在已经在机器上完成FreeSWITCH的部署,包括所有附件、文件和默认配置。

        我们还需要做一件事(这是可选的,但很有帮助),因为安装后硬盘上的文件布局与本书和文档中看到的不同。我们创建了/usr/local/freeswitch目录,模拟文档中的目录结构,并在这个目录下建立FreeSWITCH各种不同组件的连接文件。同样,以root用户执行以下命令:

 

        因为软件包安装后硬盘上的布局与您将在本书和所有文档中看到的不同。我们创建了/usr/local/freeswitch目录,该目录在文档中到处引用,并从那里符号链接到各种FreeSWITCH组件。同样,作为根用户,从命令行执行以下操作:

mkdir -p /usr/local/freeswitch/bin

ln -s /usr/bin/freeswitch /usr/local/freeswitch/bin/ ln -s /usr/bin/fs_* /usr/local/freeswitch/bin/

ln -s /usr/bin/fsxs /usr/local/freeswitch/bin/

ln -s /usr/bin/tone2wav /usr/local/freeswitch/bin/

ln -s /usr/bin/gentls_cert /usr/local/freeswitch/bin/ ln -s /etc/freeswitch /usr/local/freeswitch/conf

ln -s /var/lib/freeswitch/* /usr/local/freeswitch/ ln -s /var/log/freeswitch /usr/local/freeswitch/log ln -s /var/run/freeswitch /usr/local/freeswitch/run

ln -s /etc/freeswitch/tls /usr/local/freeswitch/certs ln -s /usr/lib/freeswitch/mod /usr/local/freeswitch/ rm /usr/local/freeswitch/lang

 

        现在,我们已经用安装包完成了FreeSWITCH 系统的部署,它是稳定的,并且更新到最新的的系统,包括安全和特性,完全兼容官方文档和社区知识。

        接下来,重启机器,你会发现FreeSWITCH已经自动运行了,运行用户是freeswitch(用户组也是freeswitch)。

我们可以定期地通过以下命令更新平台(以root用户执行):

apt-get clean apt-get update

apt-get dist-upgrade

 

源码安装

:

        还是在一台新的Debian64位祼机上,以root用户登陆,在命令行执行以下命令

apt-get update

apt-get -y upgrade

apt-get install -y wget ca-certificates git wget -O -

https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add -

echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" > /etc/apt/sources.list.d/freeswitch.list

apt-get update

apt-get install -y --force-yes freeswitch-video-deps-most

 

        这时,我们会看到机器上安装了大量的软件。这些都是FreeSWITCH源码编辑安装所需要的依赖项。您将得到一个完整的开发人员套件、工具、库和语言;FreeSWITCH开发环境所需要的东西都已经自动安装好了。

          稍等片刻,所有的依赖包安装完成之后,我们就可以继续下一步了:下载源码,编译并安装FreeSWITCH;安装演示配置文件和相关的附件文件:

git config --global pull.rebase true cd /usr/src/

git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.6 freeswitch

cd freeswitch

./bootstrap.sh -j

./configure make

make install

make cd-sounds-install cd-moh-install

 

        每一步都有点耗时,结束之后,您将获得一个全新的FreeSWITCH部署。它是稳定的,并且更新到最新的的系统,包括安全和特性,完全兼容官方文档和社区知识(是的,结果和包安装完全相同,不同之处是您可以根据需要修改源码并重新编译)。

我们还需要做点什么,让FreeSWITCH以我们推荐的方式运行,避免所有的文件、可执行文件、程序都归属于root。让我们创建一个指定用户,名字就叫freeswitch,让它成服FreeSWITCH文件的属主。同样的,我们将以freeswitch用户来运行FreeSWITCH。

cd /usr/local groupadd freeswitch

adduser --disabled-password--quiet --system --home

/usr/local/freeswitch --gecos "FreeSWITCH open source softswitch" --ingroup freeswitch freeswitch

chown -R freeswitch:freeswitch /usr/local/freeswitch/ chmod -R ug=rwX,o= /usr/local/freeswitch/

chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*

        现在,我们准备把FreeSWITCH集成到Debian的自动化管理框架中,通过systemd管理FreeSWITCH的启动、停止和重启进程。首先,我们从源码包提取相关脚本,然后编辑它,以便每次系统引导时能够自动加载它:

cp /usr/src/freeswitch/debian/freeswitch-systemd.freeswitch.service

/etc/systemd/system/freeswitch.service

        接下来,编辑这个新文件,以反映/usr/local/freeswitch/目录下的具体位置。具体来说,修改下面几行内容:

 

PIDFile=/usr/local/freeswitch/run/freeswitch.pid ExecStart=/usr/local/freeswitch/bin/freeswitch -u freeswitch -g freeswitch

-ncwait -nonat -rp

 

        最后,告诉systemd重载配置,并激活它,让FreeSWITCH在引导时自动启动:

systemctl daemon-reload systemctl start freeswitch systemctl enable freeswitch

 

        现在,重启机器,你会发现FreeSWITCH自动运行了,并且服务是以freeswitch用户执行的(用户组也是freeswitch)。

我们可以周期性地以root用户执行以下命令来更新整个平台:

apt-get update

apt-get dist-upgrade cd /usr/src/freeswitch make current

 

无论选择哪种方法安装,在FreeSWITCH启动之后,我们都可以通过fs_cli工具连接FreeSWITCH并管理它,fs_cli是一个命令行工具,安装在/usr/local/freeswitch/bin目录下:

freeswitch 图形化 freeswitch应用场景_发行版_04

 

Windows

        FreeSWITCH从一开始设计就原生支持Windowsg平台。Windows不是舶来品,也不是事后才想到的,它是FreeSWITCH架构中不可或缺的部分,它的内核大量使用APR库,与Apache一拥有无与伦比的可伸缩性的跨平台性能。

        在Windows平台部署FreeSWITCH,我们推荐使用MSI安装包的方式:

freeswitch 图形化 freeswitch应用场景_freeswitch 图形化_05

 

打开你的浏览器,访问http://files.freeswitch.org/windows/installer/,选择你的架构(推荐用X64),选择版本,右击,选择另存为,把安装包下载到桌面上:

 

freeswitch 图形化 freeswitch应用场景_freeswitch 图形化_06

 

接下来双击FreeSWITCH装包的图标,并授权它运行:

freeswitch 图形化 freeswitch应用场景_Windows_07

接受许可之后选择典型(Typical)安装,然后单击安装(Install)按钮:

freeswitch 图形化 freeswitch应用场景_安装_08

稍等一会,安装包会自动完成它的工作:

 

freeswitch 图形化 freeswitch应用场景_发行版_09

 

        你将会得到一个整洁的标准FreeSWITCH目录树,它位于C:\Program Files\FreeSWITCH\,它包含了完整的演示配置,声音文件和可执行文件:

freeswitch 图形化 freeswitch应用场景_安装_10

在“conf”子目录下,你能找到安装好的演示配置文件,还有我们将在下一章用到的所有文件。

freeswitch 图形化 freeswitch应用场景_Windows_11

 

        阅读本书和其它FreeSWITCH文档,你会感觉宾至如归,Windows和Linux唯一不同的是根路径(在Windows下是C:\Program Files\FreeSWITCH而不是/usr/local/freeswitch),还有路径分隔符不同(反斜杠\而不是斜杠/)。(和Linx相比)FreeSWITCH部署依然是由相同的XML文件配置,使用同一套声音文件。

        现在是时候向Windows防火墙注册FreeSWITCH了,只有这样它才通过接受网络连接(接收网络数据)。为此,打开FreeSWITCH安装的根目录(本例中是C:\Program Files\FreeSWITCH),找到可执行文件FreeSwitchConsole.exe。双击它,这时,会在前台启动FreeSWITCH,运行为普通进程(不是后台服务进程)。这时,Windows会询问你是否授权FreeSWITCH接受并建立网络连接,显然,我们应该给它所有受权。然后,在控制台输入fsctl shutdown。

        安装程序已经把FreeSWITCH注册为服务,因此你可以在服务面板上控制FreeSWITCH的起停,还可以设置开机运行(自动启动类型)。

freeswitch 图形化 freeswitch应用场景_Windows_12

        一旦FreeSWITCH服务运行,你可以使用Windows下的等效工具连接它,工具名是fs_cli.exe,位置是在安装的根目录下(C:\Program Files\FreeSWITCH),双击它就可以了:

freeswitch 图形化 freeswitch应用场景_freeswitch 图形化_13

 

感觉温暖和舒适吧?

 

总结

这一章,我们讨论了私服多内容:

  1. 什么平台可以安装FreeSWITCH
  2. 首先的平台是什么
  3. 怎样在Debian 平台安装FreeSWITCH
  4. 怎样在微软的Windows安装FreeSWITCH
  5. 怎样把 FreeSWITCH 运行为后台服务(守护进程或服务)
  6. 怎样通过 fs_cli连接FreeSWITCH。

 

下一章,我们将深入研究缺省安装的演示配置文件,探索它的可用功能。