Asterisk权威指南/第三章 安装Asterisk
在这一章我们将详细介绍如何从源代码安装Asterisk。很多人回避这种方法,说它太难了,又耗时间。我们在这里想证明的是从源代码安装Asterisk其实没那么难。更重要的是,我们想为你提供一个最好的Asterisk安装,以便学习。
在本书中,我们将帮助你从空白开始构建起一个功能健全的Asterisk。在本章你将为你的Asterisk系统搭建一个基础平台。从源代码安装有很多种方法,这里将向你介绍的方法我们已经用了很多年了。
作为这个过程的一部分,我们还会介绍如何在Linux操作系统上安装依赖软件包,这些依赖软件包会在本书的其他部分涉及到(比如数据库集成)。我们提供了在CentOS(基于Redhat)和Ubuntu(基于Debian)上的具体安装指令,我们相信这两个系统是覆盖面最广的。我们将保持这些指令尽可能地也适用于其他Linux发行版。
尽管我们选择了CentOS和Ubuntu,但Asterisk本身是不特定于任何Linux发行版的。Asterisk甚至可以安装到Solaris,BSD,或者OS X上,如果你喜欢的话。但我们在这里不会讨论这些,毕竟Asterisk还是主要开发用于Linux平台的。
注:Asterisk软件包。也可以通过软件包管理程序(yum或apt-get)安装Asterisk,你有兴趣的话可以试一下。但是预构建的软件包可能不是最新的,所以要用最新的版本我们还是建议从源代码安装。
你在本章看到的一些命令可能会分成多行,并且标明了它们所适用的发行版。没有标明的命令可以同时适用于两个发行版上。
基于Asterisk的项目
编辑很多项目是以Asterisk作为它们的基础平台的。其中一些,像Trixbox,很流行,以至于被人们当成了Asterisk产品本身。这些项目一般是在Asterisk的基础上添加一个Web管理界面、一个复杂的数据库和一些受限制的配置修改规则。
我们选择不介绍这些项目,是出于以下原因:
- 这本书应该尽可能地专注于Asterisk本身。
- 已经有一些介绍那些项目的书了。
- 我们相信,如果你按照我们教你的方式学习Asterisk,这些知识在你选择使用那些项目的时候一样很有用。
- 对我们来说,Asterisk的强大在于它不会试图去替你解决问题。那些项目就很好地说明了我们可以用Asterisk做什么,它们真的做得很棒。但是,如果你想建立一个自己的Asterisk系统(Asterisk的真正意义所在),那些项目会对你构成限制,因为它们的目的是简化你建造一个系统的过程,而不是帮你发觉Asterisk的潜能。
一些有名的项目包括(我们建议你去看一下):
- AsteriskNOW
http://www.asterisk.org/asterisknow - Trixbox
http://www.trixbox.org - Elastix
http://www.elastix.org - PBX in a Flash
http://www.pbxinaflash.net
快速安装
编辑如果你想尽快把Asterisk跑起来,可以按顺序执行下面的shell命令。我们建议你至少把本章读一遍,以便更好地理解整个过程。 这些命令假设你已经按照“操作系统安装”一节的内容把操作系统安装好了。 1. 执行系统更新并重启
CentOS:
yum update -y && reboot
CentOS 64-bit:
yum remove *.i386 && yum update -y && reboot
Ubuntu:
sudo apt-get update && sudo apt-get upgrade && sudo reboot
2. 同步时间,并且安装网络时间协议(NTP)服务器:
CentOS:
yum install -y ntp && ntpdate pool.ntp.org && chkconfig ntpd \
on && service ntpd start
CentOS 64-bit:
yum install -y ntp && ntpdate pool.ntp.org && chkconfig ntpd \
on && service ntpd start
Ubuntu:
sudo apt-get install ntp
Ubuntu还需要一些额外的配置,见“启用NTP精确系统时间”。
3. (只对CentOS)添加一个新的系统用户
CentOS (32 and 64 bit):
adduser asteriskpbx && passwd asteriskpbx && yum install \
sudo && visudo
详见“添加系统用户”。 对Ubuntu来说,我们假设在安装过程中创建的用户是asteriskpbx。
4. 安装依赖软件包
CentOS:
sudo yum install gcc gcc-c++ make wget subversion \
libxml2-devel ncurses-devel openssl-devel \
vim-enhanced
CentOS 64-bit:
sudo yum install gcc.x86_64 gcc-c++.x86_64 \
make.x86_64 wget.x86_64 subversion.x86_64 \
libxml2-devel.x86_64 ncurses-devel.x86_64 \
openssl-devel.x86_64 vim-enhanced.x86_64
Ubuntu:
sudo apt-get install build-essential subversion \
libncurses5-dev libssl-dev libxml2-dev vim-nox
5. 创建你的目录结构
$ mkdir -p ~/src/asterisk-complete/asterisk
$ cd ~/src/asterisk-complete/asterisk
6. 从Subversion检出最新代码 【备注: 该代码及步骤目前已经无法使用. 正确的书目请参考官方页面http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/Installing_id292446.html】
$ svn co http://svn.asterisk.org/svn/asterisk/branches/1.8
或者,检出特定标签
$ svn co http://svn.asterisk.org/svn/asterisk/tags/1.8.1
7. 构建并安装软件
$ cd ~/src/asterisk-complete/asterisk/1.8/
$ ./configure
$ make
$ sudo make install
$ sudo make config
8. 从menuselect安装额外的语音提示
$ cd ~/src/asterisk-complete/asterisk/1.8/
$ make menuselect
$ sudo make install
9. 修改Asterisk安装目录的权限
$ sudo chown -R asteriskpbx:asteriskpbx /usr/lib/asterisk/
$ sudo chown -R asteriskpbx:asteriskpbx /var/lib/asterisk/
$ sudo chown -R asteriskpbx:asteriskpbx /var/spool/asterisk/
$ sudo chown -R asteriskpbx:asteriskpbx /var/log/asterisk/
$ sudo chown -R asteriskpbx:asteriskpbx /var/run/asterisk/
$ sudo chown asteriskpbx:asteriskpbx /usr/sbin/asterisk
10. (只对CentOS)禁用SELinux
$ sudo vim /etc/selinux/config
把SELINUX的值从enforcing修改成disabled,然后重启。
11. 创建/etc/asterisk目录,并且把indications.conf示例文件拷进去
$ sudo mkdir -p /etc/asterisk
$ sudo chown asteriskpbx:asteriskpbx /etc/asterisk
$ cd /etc/asterisk/
$ cp ~/src/asterisk-complete/asterisk/1.8/configs/indications.conf.sample \
./indications.conf
12. 把asterisk.conf拷到/etc/asterisk,修改runuser和rungroup的值为asteriskpbx
$ cp ~/src/asterisk-complete/asterisk/1.8/configs/asterisk.conf.sample \
/etc/asterisk/asterisk.conf
$ vim /etc/asterisk/asterisk.conf
详细信息请看“indications.conf和asterisk.conf”一节。
13. 创建modules.conf。设定为自动装载模块,并且禁用额外模块
$ cat >> /etc/asterisk/modules.conf
; The modules.conf file, used to define which modules Asterisk should load (or
; not load).
;
[modules]
autoload=yes
; Resource modules currently not needed
noload => res_speech.so
noload => res_phoneprov.so
noload => res_ael_share.so
noload => res_clialiases.so
noload => res_adsi.so
; PBX modules currently not needed
noload => pbx_ael.so
noload => pbx_dundi.so
; Channel modules currently not needed
noload => chan_oss.so
noload => chan_mgcp.so
noload => chan_skinny.so
noload => chan_phone.so
noload => chan_agent.so
noload => chan_unistim.so
noload => chan_alsa.so
; Application modules currently not needed
noload => app_nbscat.so
noload => app_amd.so
noload => app_minivm.so
noload => app_zapateller.so
noload => app_ices.so
noload => app_sendtext.so
noload => app_speech_utils.so
noload => app_mp3.so
noload => app_flash.so
noload => app_getcpeid.so
noload => app_setcallerid.so
noload => app_adsiprog.so
noload => app_forkcdr.so
noload => app_sms.so
noload => app_morsecode.so
noload => app_followme.so
noload => app_url.so
noload => app_alarmreceiver.so
noload => app_disa.so
noload => app_dahdiras.so
noload => app_senddtmf.so
noload => app_sayunixtime.so
noload => app_test.so
noload => app_externalivr.so
noload => app_image.so
noload => app_dictate.so
noload => app_festival.so
Ctrl+D
14. 配置musiconhold.conf
$ cat >> musiconhold.conf
; musiconhold.conf
[default]
mode=files
directory=moh
Ctrl+D
15. 现在可以开始配置信道和拨号计划了。
安装操作系统
编辑因为Asterisk需要获取CPU的优先权,所以有必要将Asterisk安装在一个没有任何图形界面的服务器上,比如X Window系统(Gnome,KDE等等)。CentOS和Ubuntu都有用作服务器的无图形用户界面的发行版。我们将在下文中指导这两个系统上的操作系统安装。
CenetOS服务器
编辑CentOS全称“社区企业操作系统(Community Enterprise Operating System),”它是基于Red Hat企业版Linux(RHEL)开发的。更多关于CentOS是什么以及它的历史的信息,可以在http://www.centos.org获取。
你需要从CentOS网站http://mirror.centos.org/centos/5/isos/下载一个ISO。对应32位系统和64位系统分别选择i386或x86_64。然后你会看到一个镜像列表,选择其中一个镜像,你就会看到可供下载的文件列表。可能你想选择列表中的第一个ISO文件,那你就需要下载它,我们将用yum命令下载其他额外的软件。
一旦你下载好了ISO文件,把它刻录到CD或DVD上,然后开始安装。如果你是要把系统安装在虚拟机上(我们不推荐这么做,但用这种方式能很好地测试Asterisk),你应该直接挂载这个ISO文件并安装。
基本系统安装
编辑系统一从光盘启动,就选择linux一行并按下回车。
此时会出现字符安装界面。你会被询问是否检测该光盘,教程中假设你已经做过检查了,因此可以跳过这一步。
CentOS欢迎你进入安装,按回车继续。
选择语言和键盘。如果你在北美,你可以选择默认。
如果你预先格式化了你的硬盘驱动器, 你将被询问是否初始化驱动,这将擦去所有数据。选择Yes。
安装程序会问你是否想要删除现在的分区方案并创建一个新的。选择Remove all partitions on selected drivesand create default layout。如果有更好的选项,选择它。在驱动窗口,检验是否选择了正确的磁盘驱动。(按Tab键可以循环依次选择屏幕上的各选项。)一旦选择好了驱动窗口,你就可以滚动向上或向下(假设你有多个驱动)选择你想安装的驱动。按空格键切换选择。核对选择的驱动是否正确,按Tab键直至OK按钮高亮,然后按回车。