安装、配置和测试Asterisk过程中遇到的问题及解决方法
原文地址:http://blog.csdn.net/szyanjian/article/details/51494832
最近刚刚接触Asterisk,第一步想用Asterisk搭建一个VoIP服务器,然后用安装两个软电话实现通话,然后再深入一点研究。然而就是这第一步,对于我这个Linux和Asterisk新手来说,也是问题频出,今天终于能打通了,在此记录一下遇到的问题及解决办法,希望对遇到和我同样问题的人有点帮助。
一、下载和安装Asterisk
我觉得下载源码这些东西就去官网下 ,虽然国外的网站下载速度慢点,但是比其他的一些途径下载的靠谱一些。我在这里只需要搭建一个VoIP服务器,其他的包现在都不需要(那些包再一步一步去探索),所以只需要到这个地址下载Asterisk的源码。
(http://downloads.asterisk.org/pub/telephony/asterisk/releases/)
我下载的是最新的asterisk-13.9.1.tar.gz,下载之后,我把它copy到了/usr/local/asterisk目录下,解压。
命令是这样的:
cd /usr/local
sudo mkdir asterisk
sudo chmod 777 asterisk #读、写和执行权限
cd asterisk
sudo cp /你下载的源码的目录 . #注意最后的“.”,表示当前目录
sudo tar -xvf asterisk-13.9.1.tar.gz #解压,会生成asterisk-13.9.1目录
cd asterisk-13.9.1 #在这个目录下有一个README文件,里面描述了安装步骤。
正常的步骤应该是:
./configure
make
make install
make samples
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
在执行./configure的时候可能会遇到一些问题,我所遇到的问题在这篇文章中都得到了解答。要注意的是多条命令同时执行报权限不足时,可以分开然后加上sudo执行。
(http://blog.sina.com.cn/s/blog_7a3dc0c90102vwvu.html)
二、运行Asterisk
在asterisk-13.9.1目录下执行asterisk -cvvvv就可以运行asterisk了。执行之后建议用sudo netstat -aup查看一下进程端口号,Asterisk的SIP默认端口是5060,IAX默认端口是4569,在我的机器上,Asterisk还监听了4520和5000端口,我还不知道是干什么的。我遇到一个坑爹的问题是:无论我杀死、重启Asterisk多少次,asterisk就是没监听5060端口。我搜索了半天没找到解决办法,后来在asteriskHelp论坛里找到一个帖子,描述的是跟我差不多的问题,原因可能是SIP模块没有启动。然后,我重新编译了一下Asterisk,启动再查看你就没问题了。
三、下载软电话测试
在window上下载一个x-lite,然后安装,很简单,下载地址
在linux下会麻烦一些,需要下载xten源码,然后编译,这个步骤可以自己查一下。我在安装好之后遇到一个莫名奇妙的问题,在xten安装好的目录下明明有xten这个文件,也有执行的权限。但是我直接执行,一直报“没有这个这个文件或目录”,查一半天才知道这是因为我的linux虚拟机是64位的,但是这个xten是32位的,在64位的机器上执行32位程序就是会报找不到程序的错误。又查了半天才找到一篇文章真正解决了这个问题,地址在这里
四、配置sip.conf和extensions.conf
在这个阶段只需要配置sip.conf和extensions.conf,他们都在etc/astersisk目录下。前面安装Asterisk时make simples命令会在配置文件里写入示例配置,sip.conf与extensions.conf里面都有,先不要将它们删除。
在sip.conf最后面添加配置:
[111]
username=111
secret=aaa
type=friend
host=dynamic
context=internal
[222]
username=222
secret=aaa
type=friend
host=dynamic
context=internal
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
上面的配置就是在asterisk服务器上定义了两个用户(用户这个描述不准确,但是现在先这么理解没有问题),如果IP画集或者软电话的username和secret与asterisk上定义的用户吻合,那么话机就能成功注册到asterisk服务器上了。
上面的username与secrect好理解,就是用户名和密码;type有三种,分别是friend、peer、user,想详细了解的话,自己去查一下;host表示话机或者软电话的ip地址,dynamic表示动态的ip地址;context对应的是extensions.conf中的一种拨号方案,表示该号码从internal这个拨号方案中出去。
在extensions.conf中添加配置
[internal]
exten=>111,1,Dial(SIP/111)
exten=>222,1,Dial(SIP/222)
- 1
- 2
- 3
extensions.conf中定义的是DiaPlan拨号计划,也就电话呼入呼出一步步怎么处理就是在这个配置文件中规定的。上面是一个非常简单的拨号方案,意思是:拨111,处理的第一步就是从SIP通道呼出111。
五、启动asterisk
重新启动Asterisk,将软电话注册到asterisk就可以用了。