[b][size=x-large]0、引言[/size][/b]
在研究WebRTC服务端SIP信令,需要有SIP服务器,网上找了好些参考的项目,Asterisk项目就是其中之一,根据官方网站的Wiki中的指导,从源码安装Asterisk(https://wiki.asterisk.org/wiki/display/AST/Installing+Asterisk+From+Source),本文记录编译安装过程及相关问题的处理。
[b][size=x-large]1、准备[/size][/b]
(1)VMware;
(2)CentOS 64位版本(本人使用CentOS 6.4 的64位版本);
(3)安装的虚拟机要可以上网,建议网络使用NAT,相关方法可网上查找;
[b][size=x-large]2、编译安装过程[/size][/b]
[b][size=large]2.1 更新CentOS系统软件至最新版本[/size][/b]
[b][size=large]2.2 下载相关源码包[/size][/b]
[table]
|名称|地址|
|Asterisk|http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz|
|dahdi-complete|http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz|
|libpri|http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz|
|pjproject|http://www.pjsip.org/release/2.5/pjproject-2.5.tar.bz2|
[/table]
注:本文编写时下载到的版本
Asterisk 13.9.0
dahdi-complete 2.11.1
libpri 1.5.0
pjproject 2.5
[b][size=large]2.3 安装DAHDI-linux-complete[/size][/b]
可选安装,若不集成电话设备或不计划使用MeetMe拨号应用,那么就可以不安装DAHDI,安装相关命令如下:
[b][size=large]2.4 安装LibPRI[/size][/b]
可选安装,若不集成电话设备或不计划使用MeetMe拨号应用,那么就可以不安装LibPRI,
安装相关命令如下:
注意:LibPRI依赖DAHDI,安装前请确认DAHDI已安装
[b][size=large]2.5 安装pjproject[/size][/b]
1、编译及安装,相关命令如下:
注意:若make时出现“make[2]: g++: Command not found”错误,说明系统缺少g++的编译命令,使用下面的yum命令先安装
2、更新共享连接命令如下:
3、验证pjproject已经正确安装的命令如下:
结果如下:
[code="java"]
# ldconfig -p | grep pj
libpjsua2.so.2 (libc6,x86-64) => /usr/lib/libpjsua2.so.2
libpjsua2.so (libc6,x86-64) => /usr/lib/libpjsua2.so
libpjsua.so.2 (libc6,x86-64) => /usr/lib/libpjsua.so.2
libpjsua.so (libc6,x86-64) => /usr/lib/libpjsua.so
libpjsip.so.2 (libc6,x86-64) => /usr/lib/libpjsip.so.2
libpjsip.so (libc6,x86-64) => /usr/lib/libpjsip.so
libpjsip-ua.so.2 (libc6,x86-64) => /usr/lib/libpjsip-ua.so.2
libpjsip-ua.so (libc6,x86-64) => /usr/lib/libpjsip-ua.so
libpjsip-simple.so.2 (libc6,x86-64) => /usr/lib/libpjsip-simple.so.2
libpjsip-simple.so (libc6,x86-64) => /usr/lib/libpjsip-simple.so
libpjnath.so.2 (libc6,x86-64) => /usr/lib/libpjnath.so.2
libpjnath.so (libc6,x86-64) => /usr/lib/libpjnath.so
libpjmedia.so.2 (libc6,x86-64) => /usr/lib/libpjmedia.so.2
libpjmedia.so (libc6,x86-64) => /usr/lib/libpjmedia.so
libpjmedia-videodev.so.2 (libc6,x86-64) => /usr/lib/libpjmedia-videodev.so.2
libpjmedia-videodev.so (libc6,x86-64) => /usr/lib/libpjmedia-videodev.so
libpjmedia-codec.so.2 (libc6,x86-64) => /usr/lib/libpjmedia-codec.so.2
libpjmedia-codec.so (libc6,x86-64) => /usr/lib/libpjmedia-codec.so
libpjmedia-audiodev.so.2 (libc6,x86-64) => /usr/lib/libpjmedia-audiodev.so.2
libpjmedia-audiodev.so (libc6,x86-64) => /usr/lib/libpjmedia-audiodev.so
libpjlib-util.so.2 (libc6,x86-64) => /usr/lib/libpjlib-util.so.2
libpjlib-util.so (libc6,x86-64) => /usr/lib/libpjlib-util.so
libpj.so.2 (libc6,x86-64) => /usr/lib/libpj.so.2
libpj.so (libc6,x86-64) => /usr/lib/libpj.so
[/code]
[b][size=large]2.6 安装Asterisk[/size][/b]
1、解压
2、检查安装依赖
3、配置
若成功的话,可以看到以下类似的信息
我在配置过程中,发现缺少提示缺少jansson,后来重新安装jansson就好了,相关命令如下
4、设置Asterisk选项,命令如下:
界面如下:
[img]http://dl2.iteye.com/upload/attachment/0117/5687/b9c0cc35-270b-3210-8e70-43971605d8fe.png[/img]
相关选项的意思可以查看官方的wiki,地址
https://wiki.asterisk.org/wiki/display/AST/Using+Menuselect+to+Select+Asterisk+Options
另外,若pjproject已经正确安装,则可以在Resource Modules分类中看到res_pjsip选项已启用,如下图所示
[img]http://dl2.iteye.com/upload/attachment/0117/5689/921b0066-89eb-3372-9362-4979bfa9715e.png[/img]
5、编译,相关命令如下:
编译成功可以看到以下信息
6、安装,相关命令如下:
安装成功可以看到以下信息
7、安装配置示例文件,相关命令如下:
8、安装初始化脚本,相关命令如下:
[b][size=large]2.7 验证[/size][/b]
1、验证DAHDI安装情况,相关命令如下:
若没有任何信息,可能是DAHDI没有启动,可以使用下面的命令启动
若DAHDI已启动则可以看到下面类似信息
[code="java"]
# lsmod | grep dahdi
dahdi_transcode 7928 1 wctc4xxp
dahdi_voicebus 40464 2 wctdm24xxp,wcte12xp
dahdi 196544 12 wctdm24xxp,wcte11xp,wct1xxp,wcte12xp,wct4xxp
crc_ccitt 2096 1 dahdi
[/code]
2、验证Asterisk安装情况,查看Asterisk状态命令如下:
(1)若Asterisk没有启动,则看到的信息如下:
[code="java"]
# service asterisk status
asterisk is stopped
[/code]
可以使用下面的命令启动Asterisk:
看到的信息如下:
[code="java"]
# service asterisk start
Starting asterisk:
[/code]
(2)若Asterisk已启动,则看到的信息如下:
[code="java"]
# service asterisk status
asterisk (pid 32117) is running...
[/code]
(3)若Asterisk被锁定了,则看到的信息如下:
[code="java"]
# service asterisk status
asterisk dead but subsys locked
[/code]
解决方法是删除/var/run/asterisk的内容,相关命令如下:
[b][size=x-large]3、小结[/size][/b]
至此,Asterisk已经编译并安装成功,后续将推出配置实战及相关使用方法。
在研究WebRTC服务端SIP信令,需要有SIP服务器,网上找了好些参考的项目,Asterisk项目就是其中之一,根据官方网站的Wiki中的指导,从源码安装Asterisk(https://wiki.asterisk.org/wiki/display/AST/Installing+Asterisk+From+Source),本文记录编译安装过程及相关问题的处理。
[b][size=x-large]1、准备[/size][/b]
(1)VMware;
(2)CentOS 64位版本(本人使用CentOS 6.4 的64位版本);
(3)安装的虚拟机要可以上网,建议网络使用NAT,相关方法可网上查找;
[b][size=x-large]2、编译安装过程[/size][/b]
[b][size=large]2.1 更新CentOS系统软件至最新版本[/size][/b]
sudo yum update
[b][size=large]2.2 下载相关源码包[/size][/b]
[table]
|名称|地址|
|Asterisk|http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz|
|dahdi-complete|http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz|
|libpri|http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz|
|pjproject|http://www.pjsip.org/release/2.5/pjproject-2.5.tar.bz2|
[/table]
注:本文编写时下载到的版本
Asterisk 13.9.0
dahdi-complete 2.11.1
libpri 1.5.0
pjproject 2.5
[b][size=large]2.3 安装DAHDI-linux-complete[/size][/b]
可选安装,若不集成电话设备或不计划使用MeetMe拨号应用,那么就可以不安装DAHDI,安装相关命令如下:
tar -xvzf dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete-2.11.1+2.11.1
make && make install
make config
[b][size=large]2.4 安装LibPRI[/size][/b]
可选安装,若不集成电话设备或不计划使用MeetMe拨号应用,那么就可以不安装LibPRI,
安装相关命令如下:
tar -xvzf libpri-current.tar.gz
cd libpri-1.5.0
make && make install
注意:LibPRI依赖DAHDI,安装前请确认DAHDI已安装
[b][size=large]2.5 安装pjproject[/size][/b]
1、编译及安装,相关命令如下:
tar -xvjf pjproject-2.5.tar.bz2
cd pjproject-2.5
./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
make dep && make && make install
注意:若make时出现“make[2]: g++: Command not found”错误,说明系统缺少g++的编译命令,使用下面的yum命令先安装
yum install -y gcc-c++
2、更新共享连接命令如下:
ldconfig
3、验证pjproject已经正确安装的命令如下:
ldconfig -p | grep pj
结果如下:
[code="java"]
# ldconfig -p | grep pj
libpjsua2.so.2 (libc6,x86-64) => /usr/lib/libpjsua2.so.2
libpjsua2.so (libc6,x86-64) => /usr/lib/libpjsua2.so
libpjsua.so.2 (libc6,x86-64) => /usr/lib/libpjsua.so.2
libpjsua.so (libc6,x86-64) => /usr/lib/libpjsua.so
libpjsip.so.2 (libc6,x86-64) => /usr/lib/libpjsip.so.2
libpjsip.so (libc6,x86-64) => /usr/lib/libpjsip.so
libpjsip-ua.so.2 (libc6,x86-64) => /usr/lib/libpjsip-ua.so.2
libpjsip-ua.so (libc6,x86-64) => /usr/lib/libpjsip-ua.so
libpjsip-simple.so.2 (libc6,x86-64) => /usr/lib/libpjsip-simple.so.2
libpjsip-simple.so (libc6,x86-64) => /usr/lib/libpjsip-simple.so
libpjnath.so.2 (libc6,x86-64) => /usr/lib/libpjnath.so.2
libpjnath.so (libc6,x86-64) => /usr/lib/libpjnath.so
libpjmedia.so.2 (libc6,x86-64) => /usr/lib/libpjmedia.so.2
libpjmedia.so (libc6,x86-64) => /usr/lib/libpjmedia.so
libpjmedia-videodev.so.2 (libc6,x86-64) => /usr/lib/libpjmedia-videodev.so.2
libpjmedia-videodev.so (libc6,x86-64) => /usr/lib/libpjmedia-videodev.so
libpjmedia-codec.so.2 (libc6,x86-64) => /usr/lib/libpjmedia-codec.so.2
libpjmedia-codec.so (libc6,x86-64) => /usr/lib/libpjmedia-codec.so
libpjmedia-audiodev.so.2 (libc6,x86-64) => /usr/lib/libpjmedia-audiodev.so.2
libpjmedia-audiodev.so (libc6,x86-64) => /usr/lib/libpjmedia-audiodev.so
libpjlib-util.so.2 (libc6,x86-64) => /usr/lib/libpjlib-util.so.2
libpjlib-util.so (libc6,x86-64) => /usr/lib/libpjlib-util.so
libpj.so.2 (libc6,x86-64) => /usr/lib/libpj.so.2
libpj.so (libc6,x86-64) => /usr/lib/libpj.so
[/code]
[b][size=large]2.6 安装Asterisk[/size][/b]
1、解压
tar -zxvf asterisk-13-current.tar.gz
2、检查安装依赖
cd asterisk-13.9.0
cd contrib/scripts
./install_prereq install
./install_prereq install-unpackaged
3、配置
./configure
若成功的话,可以看到以下类似的信息
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ (TM)
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
configure: Package configured for:
configure: OS type : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : unknown : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : unknown : linux-gnu :
我在配置过程中,发现缺少提示缺少jansson,后来重新安装jansson就好了,相关命令如下
wget http://www.digip.org/jansson/releases/jansson-2.7.tar.gz
tar -zxvf jansson-2.7.tar.gz
./configure
make && make install
4、设置Asterisk选项,命令如下:
make menuselect
界面如下:
[img]http://dl2.iteye.com/upload/attachment/0117/5687/b9c0cc35-270b-3210-8e70-43971605d8fe.png[/img]
相关选项的意思可以查看官方的wiki,地址
https://wiki.asterisk.org/wiki/display/AST/Using+Menuselect+to+Select+Asterisk+Options
另外,若pjproject已经正确安装,则可以在Resource Modules分类中看到res_pjsip选项已启用,如下图所示
[img]http://dl2.iteye.com/upload/attachment/0117/5689/921b0066-89eb-3372-9362-4979bfa9715e.png[/img]
5、编译,相关命令如下:
make
编译成功可以看到以下信息
+--------- Asterisk Build Complete ---------+
+ Asterisk has successfully been built, and +
+ can be installed by running: +
+ +
+ make install +
+-------------------------------------------+
+--------- Asterisk Build Complete ---------+
6、安装,相关命令如下:
make install
安装成功可以看到以下信息
+---- Asterisk Installation Complete -------+
+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample +
+ configuration files (overwriting any +
+ existing config files), run: +
+ +
+ make samples +
+ +
+-------------------------------------------+
+---- Asterisk Installation Complete -------+
7、安装配置示例文件,相关命令如下:
make samples
8、安装初始化脚本,相关命令如下:
make config
make install-logrotate
[b][size=large]2.7 验证[/size][/b]
1、验证DAHDI安装情况,相关命令如下:
lsmod | grep dahdi
若没有任何信息,可能是DAHDI没有启动,可以使用下面的命令启动
service dahdi start
//或者
/etc/init.d/dadhi start
若DAHDI已启动则可以看到下面类似信息
[code="java"]
# lsmod | grep dahdi
dahdi_transcode 7928 1 wctc4xxp
dahdi_voicebus 40464 2 wctdm24xxp,wcte12xp
dahdi 196544 12 wctdm24xxp,wcte11xp,wct1xxp,wcte12xp,wct4xxp
crc_ccitt 2096 1 dahdi
[/code]
2、验证Asterisk安装情况,查看Asterisk状态命令如下:
service asterisk status
//或者
/etc/init.d/asterisk status
(1)若Asterisk没有启动,则看到的信息如下:
[code="java"]
# service asterisk status
asterisk is stopped
[/code]
可以使用下面的命令启动Asterisk:
service asterisk start
//或者
/etc/init.d/asterisk start
看到的信息如下:
[code="java"]
# service asterisk start
Starting asterisk:
[/code]
(2)若Asterisk已启动,则看到的信息如下:
[code="java"]
# service asterisk status
asterisk (pid 32117) is running...
[/code]
(3)若Asterisk被锁定了,则看到的信息如下:
[code="java"]
# service asterisk status
asterisk dead but subsys locked
[/code]
解决方法是删除/var/run/asterisk的内容,相关命令如下:
rm -rf /var/run/asterisk
[b][size=x-large]3、小结[/size][/b]
至此,Asterisk已经编译并安装成功,后续将推出配置实战及相关使用方法。