第3章 安装Asterisk
虽然我渴望肩负崇高而伟大的使命,但我的主要职责是完成平凡而渺小的任务,在我看来,这些任务同样崇高而伟大。世界的进步,不仅需要英雄人物的强力推动,也需要汇聚每一位朴实的劳动者的滴滴汗水。
——海伦·凯勒
在本章中,我们将从源代码逐步完成Asterisk的安装。很多人不喜欢采用这种方式,他们认为这种方式太费时费力。我们的目标是证明从源代码安装Asterisk其实并没有那么难。更为重要的是,我们希望为你提供最佳的Asterisk学习平台。
在本书中,我们将帮助你从零开始构建一个正常运行的Asterisk系统。为了实现这一目标,本章我们将为Asterisk系统构建一个基础平台。因为我们是从源代码开始安装的,所以可能有很多种方式来实现。我们的目标是提供一个适合探索很多领域的标准平台,因此可以将Asterisk裁剪到只保留最基本的部分,并运行极度精简的功能。但是这个练习是留给读者的。我们在这里讨论这个过程是为了让你快速而简单地启动和运行Asterisk,这样你就有更多的时间去关注Asterisk那些有趣的特性。
你看到的大部分命令最好通过一连串的复制-粘贴操作来执行(实际上,我们强烈建议你使用本书的电子版本[1])。虽然看起来要打很多字,但是我们带你浏览的命令可以让你在30分钟内从头到尾全部完成,所以从源代码安装实际上并没有看起来那么复杂。我们只需要运行一些前置条件、编译、安装后配置,Asterisk就准备好了。
为了简单起见,将在CentOS 7系统上执行这些命令。CentOS在功能上等同于RHEL,与Fedora非常相似,因此它们的步骤也应该是非常相似的。对于其他平台,如Debian/Ubuntu等,命令的用法也非常相似,但需要根据平台的要求进行调整[2]。
安装指南的第一部分不会直接就涉及Asterisk,而是处理Asterisk本身或者一些实用功能(例如数据库集成)所必需的一些依赖项。我们将尽量让指南保持足够的通用性,以使得它适用于你选择的任何发行版本。
该指南假定你是一名经验丰富的Linux管理员[3]。一个完全可运行的Asterisk系统将由很多个独立的部件组成,如果你对Linux知之甚少,就会发现在处理这些部件时会面临很多挑战。我们仍然建议你采用这种方式,但是你要认识到,如果你的Linux命令行经验不够扎实,学习起来会比较困难。
如果你想学习Linux命令行,推荐你阅读William Shotts撰写的The Linux Command Line,它是在知识共享许可协议下发行的,介绍了有效使用Linux shell所需的所有知识。这本书可以在linuxcommand.org上找到。你可以把这本书从头到尾记下来,你所学到的几乎所有知识都是那些经验丰富的Linux管理员认为值得一看的。
当然,另外一本由Dan Mackin、Ben Whaley、Trent R.Hein、Garth Snyder和Evi Nemeth(Prentice Hall)编写的传奇性的UNIX and Linux System Ad-ministration Handbook也很不错,强烈推荐。
Asterisk软件包
可以使用诸如yum或apt-get之类的软件包管理系统安装Asterisk软件包。我们建议你在熟悉Asterisk后使用它们。
如果你正在使用RHEL,可以从Fedora项目的EPEL软件库(http://fedorap roject.org/wiki/EPEL)中获得Asterisk。对于Ubuntu,可以从Universe软件库中获得Asterisk软件包。
你还应该注意到,由于Asterisk的悠久历史,它能够与多种电话技术集成。但是如今,新接触Asterisk的人希望先学习SIP集成,而不是先考虑那些更复杂的、过时的或外围信道类的技术集成。一旦你熟悉了在纯SIP环境中使用Asterisk,就可以更轻松地集成其他信道类型。
基于Asterisk的项目
很多项目使用Asterisk作为其基础平台。其中有一些(例如FreePBX GUI)十分受欢迎,以至于被很多人误认为它们就是Asterisk产品本身。实际上FreePBX GUI几乎无处不在,在大多数知名的基于Asterisk的项目中都能找到它的身影。这些项目是在Asterisk的基础上,增加Web管理界面和复杂的数据库,以及在典型的PBX中需要用到的外部功能(例如话机配置、时间服务器等)。
我们不打算在本书中介绍这些项目,原因如下:
●这本书尽量只关注Asterisk本身。
●已经有很多书介绍过这些基于Asterisk的项目了。
●我们相信,如果你按照我们教你的方式学习Asterisk,无论你最终选择使用Asterisk还是基于Asterisk的版本,这些知识都会对你很有帮助。
●如果你希望了解基于FreePBX的系统背后的原理,那么本书将向你介绍一些需要的技能。
●对我们来说,Asterisk的强大之处在于它不会尝试替你解决问题。这些项目是非常好的例子,证明了我们可以使用Asterisk做什么。但是如果你想构建自己的Asterisk应用程序(这是Asterisk的真正意义所在),这些项目可能给你造成不必要的障碍,这是因为它们的目的是帮你简化构建商业PBX的过程,而不是帮你挖掘Asterisk平台的全部潜能。
以下一些最受欢迎的基于Asterisk的项目(不分先后顺序):
AsteriskNOW(http://www.asterisk.org/asterisknow)
由Digium管理,使用FreePBX GUI。
Issabel(https://www.issabel.org)
Elastix产品[4]原始开源版本的一个分支。使用FreePBX GUI。
FreePBX官方发行版(http://www.freepbx.org/freepbx-distro)
FreePBX项目的官方发行版,由Sangoma管理。
面向树莓派(Raspberry Pi)的Asterisk(http://www.raspberry-asterisk.org/)
面向树莓派的Asterisk和FreePBX全套安装版本。
AstLinux(https://www.astlinux-project.org/)
AstLinux项目迎合了希望在小型、低功耗、固态设备上运行Asterisk的需求。AstLinux的全部安装尺寸以兆为单位(AstLinux最初是为配合CF卡而设计的)。如果你对小型计算机很感兴趣,并且想玩一个可以装在口袋里的PBX一体机,AstLinux可能适合你。
我们建议你看看这些项目[5]。
[1] 电子版本在知识共享许可协议(Creative Commons license)下发行,所以如果你购买了纸质版本(我们向你表示感谢!),你也可以下载电子版本用于搜索和复制/粘贴。
[2] Asterisk应该几乎可以在所有Linux平台上运行,如果你熟悉在Linux机器上安装软件的基本过程,那么应该会发现安装Asterisk的过程非常简单。
[3] 这里我们主要是指你可以轻松地从shell管理系统。
[4] Elastix不再是一个基于Asterisk的或开源的产品。
[5] 当然,在你读完本书之后。