开源软交换ASTERISK学习日记(一)

转自: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停了:)

你可能感兴趣的:(开源)