最近需要搭建asterisk开源项目模拟语音通话,浏览了比较多的博客文章,然后归纳加工,实测可以成功搭建,希望能帮到有需要的人。
这些命令假设你已经按照“操作系统安装”一节的内容把操作系统安装好了。
一、asterisk安装和配置
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
把以下的注释取消掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
vi /etc/group
更改以下数据
wheel:x:10:root,asteriskpbx
更改asteriskpbx用户,后续未说明都用此用户
su – asteriskpbx
sudo ls /root/
查看是否能看到 /root 目录下的文件,若有,则成功。若无,请重新查看以上步骤
详见“添加系统用户”。 对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、创建asterisk目录,使用svn下载
mkdir -p ~/src/asterisk-complete/asterisk
cd ~/src/asterisk-complete/asterisk
svn co http://svn.asterisk.org/svn/asterisk/branches/1.8
6、创建libpri目录,使用svn下载并安装
cd ~/src/asterisk-complete/
mkdir libpri
cd libpri/
svn co http://svn.asterisk.org/svn/libpri/tags/1.4.8
cd 1.4.8
make
sudo make install
(此处,如果make报致命错误,可能是centos版本太高级,或者libpri版本太高级,请按照该教程安装centos版本和libpr版本)
7、检查升级内核版本(此处操作过程出现错误)
sudo yum install kernel-devel-`uname -r`
8、编译安装tags
cd ~/src/asterisk-complete/
mkdir dahdi
cd dahdi/
svn co http://svn.asterisk.org/svn/dahdi/linux-complete/tags/2.4.0+2.4.0
cd 2.4.0+2.4.0
make
sudo make install
sudo make config
(此处,如果make报致命错误,可能是centos版本太高级,或者dahdi版本太高级,请按照该教程安装centos版本和dahdi版本)
9、编译安装
cd~/src/asterisk-complete/asterisk/1.8
./configure
make
sudo make install
sudo make config
10、额外步骤(安装菜单选择menuselect),不强制要求,可跳过此步骤(已跳过)
sudo yum installlibnewt-devel (这个安装notavailable 貌似不影响以下步骤)
cd~/src/asterisk-complete/asterisk/1.8
cd menuselect
make clean
./configure
cd ..
make menuselect
用下箭头选择 Core Sound Packages,右箭头进入,空格键选择CORE-SOUNDS-EN-WAVandCORE-SOUNDS-EN-ALAW。左箭头离开,下箭头选择Extra Sound Packages,右箭头进入,空格键选择WAV, ULAW,and ALAW 格式,按x保存离开。
sudo make install
sudo chown -R asteriskpbx:asteriskpbx /var/lib/asterisk/sounds/
文件会下载并且安装到合适的位置(/var/lib/asterisk/sounds//by default)
11、设置文件权限
sudo chown -R asteriskpbx:asteriskpbx/usr/lib/asterisk/
sudo chown -Rasteriskpbx:asteriskpbx /var/lib/asterisk/
sudo chown -Rasteriskpbx:asteriskpbx /var/spool/asterisk/
sudo chown -Rasteriskpbx:asteriskpbx /var/log/asterisk/
sudo chown -Rasteriskpbx:asteriskpbx /var/run/asterisk
sudo chownasteriskpbx:asteriskpbx /usr/sbin/asterisk
vi /etc/udev/rules.d/dahdi.rules
将文件最后一行改成
SUBSYSTEM=="dahdi",OWNER="asteriskpbx", GROUP="asteriskpbx",MODE="0660"
12、更改root权限,关闭SELinux
sudo echo 0 > /selinux/enforce (sudo echo 1 >/selinux/enforce 重新开启)
cd /etc/selinux/
sudo vim config
把SELINUX选项改成disabled
SELINUX=disabled
重启
sudo reboot
13、初始化配置
sudo mkdir /etc/asterisk/
sudo chown asteriskpbx:asteriskpbx/etc/asterisk/
14、备份配置文件
cp ~/src/asterisk-complete/asterisk/1.8/configs/indications.conf.sample /etc/asterisk/indications.conf
cp ~/src/asterisk-complete/asterisk/1.8/configs/asterisk.conf.sample /etc/asterisk/asterisk.conf
vim /etc/asterisk/asterisk.conf
将数据更改成以下
runuser=asteriskpbx
rungroup=asteriskpbx
15、开启asterisk终端
/usr/sbin/asterisk start
使用上面的命令提示使用:asterisk -r 进行连接
*CLI>module show
Module Description Use Count
0 modules loaded
*CLI>core stop now
16、新建并编辑modules.conf配置文件内容
cat >>/etc/asterisk/modules.conf
; The modules.conf file, used to define which modules Asterisk shouldload (or
; not load).
;
[modules]
autoload=yes
17、新建并编辑musiconhold.conf配置文件内容
cd /etc/asterisk/
cat >> musiconhold.conf
; musiconhold.conf
[default]
mode=files
directory=moh
二、音乐格式转换
1、 安装rpmforge repository
rpm –Uhv apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm
yum install yum-priorities
yum install mpg123
2、格式转换
上传apologize.mp3到/tmp目录下
cd /tmp
mpg123 -w apologize.wav apologize.mp3
sox apologize.wav -t raw -r 8000 -s -c 1 apologize.sln
(asterisk文档中–w是无法进行的,上网没查到,所以去掉,对音乐播放不影响)
三、IP电话安装
1、 PC端Sip软件电话(X-lite或eysbeam)(注意PC端要插入耳机和话筒,不然没法拨号)
参考链接:http://blog.csdn.net/sukhoi27smk/article/details/17532249
① 设置sip.conf
vim /etc/asterisk/sip.conf
[general]
context = default
srvlookup= yes
[111]
secret=aaa
port=5060
type=friend
host=dynamic
qualify =yes
nat =no
context =internal
canreinvite= no
[222]
secret=aaa
port=5060
qualify =yes
nat = no
context =internal
canreinvite= no
type=friend
host=dynamic
②设置extensions.conf
[internal]
exten => 1001,1, playback(/tmp/apologize)
exten => 1002,1,playback(/tmp/apologize)
playback表示播放/tmp/apologize这首歌曲
③ 设置eyebeam或X-lite(参考上面链接)
或者配置电话接通:
[internal] //这里的internal和sip.conf里的context相同,可修改
exten => 1001,1,Dial(SIP/111)
exten => 1002,1,Dial(SIP/222)
2、 公司IP电话
配置文件同上
配置参考链接:http://jingyan.baidu.com/article/215817f7eee4a01eda1423e6.html
①将IP电话连接PC主机和网络接口
② 选择IP电话(硬件)的√ 可以查看IP电话的IP地址
③ 根据IP地址登录web,默认账号密码admin
④ 选择account,界面输入请参考PC端Sip软件电话连接
3、开启asterisk并拨打IP电话测试
/usr/sbin/asterisk -cvvv
若提示已经在跑,输入asterisk –r
若提示文件不存在,先输入asterisk跑一次,再输入asterisk –r即可。
IP电话拨打号码,这里是拨打1001或1002,将会听到apologize这首歌曲。
4.X-lite电话配置
点击软件上方三角形ShowMenu,再点开SIP Account Settings,设置新账户
用户名和密码根据上面的配置文件设置保持一致,域名地址为服务器地址,需要加上端口号,配置文件中设定端口号为5060,保存成功后,如果能够连接上就会在服务器有显示如下:
-- Registered SIP '111' at 192.168.1.145:22582
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:43620
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:11484
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:17486
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:3102
-- Registered SIP '222' at 192.168.1.112:54070
-- Unregistered SIP '111'
-- Registered SIP '111' at 192.168.1.145:33024
-- Unregistered SIP '222'
注:如果extensions.conf被重新编写了 一定要记得在CLI那里reload一下,
重新编写sip.conf就sip reload。
附:asterisk 常用指令操作:
- 运行调试常用命令
./asterisk & 在后台启动asterisk
./asterisk –vvvc 启动asterisk并尽量多的在控制台显示调试信息
./asterisk –r 连接asterisk控制台
set verbose 9999 设置打印详细信息
2.asterisk控制台下常用命令
sip reload 重新加载sip配置信息
sip set debug 设置显示更多的sip信息
sip set debug off关闭显示更多的sip信息
sip show channels 显示所有活动的SIP通道
sip show peers 显示所有已定义的SIP peer
dialplan show 显示拨号方案
dialplan reload重新加载拨打方案
stop gracefully 优雅地停止asterisk
stop now 立即停止运行asterisk
module show 显示所有已加载模块
module loadcdr_radius.so 加载模块cdr_radius.so
module reload cdr_radius.so 重新加载模块cdr_radius.so
module unload cdr_radius.so 卸载模块cdr_radius.so
core show applications 显示所有的应用,比如Dial, Radius, Hangup,Answer等
core show channels 显示所有的通话频道
core show codecs 显示所有支持的编解码器
core show functions 显示所有的功能函数
在asterisk源码目录下运行makemenuselect可以进入模块选择页面,在里面可以选择和去除一些模块。
看完这些目录之后,对其大体的功能也可能会有点认识,还是从启动服务器还是聊起。启动服务器方法很多,我们按照手册中的描述选取一种
Asterisk –cvvvv 具体参数含义请参考手册
也可以通过运行 /usr/sbin/safe_asterisk 来运行。
我们下文的描述就会基于这个简单的拓扑展开讨论,这儿的tel都是sip电话,我们假定tel1号码为808,tel2号码为830,现在的简单需求就是我808能够打通830,实现双向通话。开始配置前,先了解主要配置文件的作用。
/etc/asterisk/asterisk.conf 主要配置文件,
/etc/zaptel.conf 硬件接口的基本层. 修改这个配置文件要用modprobe装载LinuxKernel使用模块.
/etc/asterisk/zapata.conf 为硬件配置Asterisk的接口.
/etc/asterisk/extensions.conf 拨号方案.
/etc/asterisk/sip.conf SIP协议配置文件
/etc/asterisk/iax.conf 呼入和呼出IAX通道
/etc/asterisk/extensions.conf 拨号方案配置文件
/etc/asterisk/moduprobe.conf 加载模块配置文件