转自:http://blog.csdn.net/seanchan/article/details/4216071
很久以前接触过一些voip方面的东西,包括Asterisk、openh232、gnugk等等,当时的想法是纯粹H323、SIP协议的软件才是真正的voip软件,所以对Asterisk没什么兴趣,认为只是一个另类的软交换,现在看来真是自己的知识贫乏,太落伍了。最近因为公司开始接触这方面的业务,我也回头来找这方面的资料,原来国内有很多人用Asterisk来做voip,当然是用它作为基础进行应用开发,不是简单的使用,毕竟Asterisk只是个毛坯房,要住进去还要自己装修的。
Asterisk是一款实现用户电话交换机(PBX)功能的自由软件、开源软件。Asterisk提供完善PBX功能,可以连接多种不同的电话终端,包括普通电话机,IP电话机,软电话等,支持多种主流的IP电话协议和系统接口。软件名称Asterisk-星号(*),在Unix(包括Linux)和DOS操作系统中是通配符,用来在查找中适配任何字符,寓意该软件广泛的适用性。
Asterisk软件提供很多以前只有昂贵的专业PBX系统才支持的功能,比如:语音信箱,会议电话,交互式语音提示和自动电话转接等。由于该软件开放的性质,用户可以灵活的配置方便的扩展系统的功能,甚至编程开发自己所需功能的模块。Asterisk通常都运行在Linux操作系统下,当然它也可以在其他系统,如BSD,Windows或OS X下编译并安装。
Asterisk服务器不需要任何特殊的硬件即可提供VoIP的服务,只需服务器有网络连接即可。它支持主流VoIP协议,包括会话发起协议(SIP)、H.323,既可作为IP电话服务器也可以作IP电话和PSTN之间的转接。Asterisk系统还设计了一个新协议,IAX,用于在Asterisk服务器之间维护话路通道。如果需要连接普通电话或PSTN中继线,运行Asterisk的服务器则需要安装相应的硬件接口板。许多厂商都生产用于连接普通电话、T1、E1中继线、ISDN等的接口板。
由于是自由软件且具有丰富的系统功能,Asterisk提供给用户一个廉价并功能强大的PBX解决方案。它被越来越多的用于代替传统专用的PBX,或被用于跨国VoIP电话以节省长途费用。一些国家的VoIP电话公司已经开始支持Asterisk,提供IAX2接口或允许用户的Asterisk服务器使用SIP协议连接。
截止2009年5月20日,Asterisk的最新版本是1.6.1.0版。
以上这些是维基百科中的解释,应该是通俗易懂的了。
言归正传,还是赶紧开始搭个平台出来先,我用的机器是一台RedHat9的机器,系统老了点,但是现成的,暂时也没其他机器可以用了,安装前已经估计到可能需要升级一些开发包,但还不知道要升级哪些。
第一步当然是先下载个Asterisk,我选择了1.4.25版本,一是这个版本比较稳定,二是因为我的机器可能不太适合装太新的东西,下面是下载地址:
http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.25.tar.gz
安装必须用root用户,如果不用root用户会怎么样呢?估计会报没权限之类的错误,我反正没试过。如果你的机器连接互联网,你也可以用下面的命令下载文件到你的机器:
#wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.25.tar.gz
首先解压文件:
#tar -zxvf asterisk-1.4.25.tar.gz
开始编译:
#cd asterisk-1.4.25
#./configure
#make menuselect
#make
“make menuselect”这步是做些模块选择,我现在对这些东西还没什么了解,所以我什么都没动就退出了。
执行到“make”时出问题了:
expand.c:489: allocated_variable_append: Assertion 'current_variable_set_list->next != 0' failed
make: *** [all] Aborted
有人说make3.79有问题,需要升级,我看看我机器上的make版本:
#make --version
GNU Make 3.79
......
怎么就这么准确呢,简直就是说我的情况嘛。赶紧到GNU下个最新的make:
#wget ftp://ftp.gnu.org/gnu/make/make-3.81.tar.gz
#tar -zxvf make-3.81.tar.gz
#cd make-3.81
#./configure
#make
#make install
无惊无险,顺利升级,但……是……,记得注销,重新登陆,因为我在安装完新的make后又查看了一下make版本,居然还是3.79。
再次回到asterisk-1.4.25下面,执行“#make”,又遇到问题了:
……
……
func_curl.c:109: `CURLOPT_NOSIGNAL' undeclared (first use in this function)
……
CURL的版本也低了,需要升级CURL:
#wget http://curl.haxx.se/download/curl-7.19.5.tar.gz
#tar -zxvf curl-7.19.5.tar.gz
#cd curl-7.19.5
#./configure
#make
#make install
#curl --version
curl 7.19.5 (i686-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.7a zlib/1.1.4
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: Largefile NTLM SSL libz
如果你安装没出错,但看到的版本号还是老的,那就请重新登陆吧。
再次编译Asterisk:
#cd asterisk-1.4.25
#make
这次顺利通过,按照提示执行安装:
#make install
如果需要安装samples,执行下面的命令:
#make samples
好了,现在可以试下Asterisk是否能工作:
#asterisk -vvvc
这里的参数-v的意思是出现一些Asterisk工作的信息,v越多,显示的信息越多,第一次见到这样的参数,还真是有创意。
如果你见到了下面这些提示:
Asterisk Ready.
*CLI>
恭喜!你已经安装成功了!
这个提示符下面可以用“help”命令看看可以做些什么,我看到有个“stop now”,于是自执行:
*CLI>stop now
Beginning asterisk shutdown....
Executing last minute cleanups
== Destroying musiconhold processes
Asterisk cleanly ending (0).
#
直接把Asterisk停了:)