sip服务器的搭建

     我们都知道使用VOIP网络电话,需要连接上sip服务器,这样用户之间才可以通信。
     在这里,我就简单介绍下如何搭建sip服务器。在windows系统下可搭建minisipserver,其官网为http://www.myvoipapp.com/,我们可以从中选取对应的版本,具体配置步骤见http://jingyan.baidu.com/article/03b2f78c744ab55ea237aef3.html。当然我们也可以下载Linux版本,安装和使用教程见http://www.myvoipapp.com/docs/mss_services/linux/index.html,我就不再赘述。
     这里我着重讲解下如何在ubuntu下搭建OpensSIPS服务器,OpenSIPS是一个成熟的开源SIP服务器,除了提供基本的SIP代理及SIP路由功能外,还提供了一些应用级的功能。OpenSIPS的结构非常灵活,其核心路由功能完全通过脚本来实现,可灵活定制各种路由策略,可灵活应用于语音、视频通信、IM以及Presence等多种应用。同时OpenSIPS性能上是目前最快的SIP服务器之一,可用于电信级产品构建。凭借其可扩展、模块化的系统架构,OpenSIPS提供了一个高度灵活的、用户可配置的路由引擎,可以为voice、video、IM和 presence等服务提供强大高效的路由、鉴权、NAT、网关协议转化等功能。由于其稳定高效等特点,OpenSIPS已经被诸多电信运营商应用在自己的网络体系中。

一.前提条件:

(1)mysql已经配置好

1 sudo apt-get install mysql-server
2 sudo apt-get isntall mysql-client
3 sudo apt-get install libmysqlclient-dev

(2)如果找不到curses.h,安装sudo apt-get install libncurses5-dev

二.安装:

1. 下载 opensips
    http://www.opensips.org/Resources/Downloads
我使用的是1.8版本,即可以git下来
 git clone https://github.com/OpenSIPS/opensips.git -b 1.8 opensips_1_8

2. 解压后,进入opensips目录

    make all  ,如果出错,一般是缺少一些编译工具,直接sudo apt-get install xxx(相应的工具)
    make install
可能设置到权限不足的问题,为了省事,我们不妨在root用户下进行操作

三.配置

1.opensips数据库
   cd /usr/local/etc/opensips/查看发现有三个文件,分别是opensips.cfg opensipsctlrc osipsconsolerc,然后vim将其对应的ip地址修改成自己主机上的。

2.开启数据库
   /usr/local/sbin/opensipsdbctl create 
   如果出现以下错误
    “ERROR: could not load the script in /usr/local/lib/opensips/opensipsctl/opensipsdbctl.mysql for database engine MYSQL
     ERROR: database engine not loaded - tried 'MYSQL'”
     则
1 cd /usr/local/lib64/opensips/opensipsctl/
2 cp $(你的opensips目录)/scrips/*.mysql  ./
3 mkdir mysql
4 cp  $(你的opensips目录)/scrips/mysql/*.sql ./mysql
5 cd /usr/local/share/opensips
6 cp $(你的opensips目录)/scrips/*.mysql  ./
7 mkdir mysql
8 cp  $(你的opensips目录)/scrips/mysql/*.sql ./mysql
如果ubuntu是32位的话,则为/usr/local/lib/opensips/opensipsctl
    成功后,会有两个选项,全选y
3.察看设置是否正确
   /usr/local/sbin/opensipsctl -c

四.使用

1.开启opensips服务
   /usr/local/sbin/opensipsctl start
   关闭stop 重启restart
    这里我遇到了ERROR: PID file/var/run/opensips.pid does not exist -- OpenSIPS start failed. 的问题。在这里使用tail -n 20 /var/log/syslog,可以查看错误原因,我发现是权限的问题,因而要sudo /usr/local/sbin/opensipsctl start 。
     
2.添加sip用户
    /usr/local/sbin/opensipsctl  add username password   如:/usr/local/sbin/opensipsctl add 100 100
     可以使用/usr/local/sbin/opensipsctl  rm 100删除用户。

如果出现ERROR: domain unknown: use usernames with domain or set default domain in SIP_DOMAIN,说明环境变量未配置,所以vim /etc/environment,在里面写入SIP_DOMAIN="你的IP Domain",而后再source下即可

默认的数据库用户为opensips,密码为opensipsrw,当然你也可以设置成对应的用户,直接在/usr/local/etc/opensips的配置文件修改对应的DBRWUSER,DBRWPW
                               
3.查看sip用户
     可以使用mysql -u root -p而后输入你的密码,就能够通过show databases;查看数据库,再使用use opensips;并且show tables;就可以查看opensips数据库里的表格,最后使用select * from subscriber;便能够查看添加的sip用户情况
4.可随意找一款网络电话进行测试,如sipdroid或linphone,设置用户信息,发现仍然连接不上,这到底是什么原因呢?我查了很久,才发现是由于对应默认的端口5060未打开,因而使用sudo ufw allow 5060。再次测试,总算连接成功,而后就可以愉快地进行通话喽!!!下面就是我测试成功的结果:
           
 
注意:如若不是公网IP,手机与服务器要确保在同一区域网里
 
   

posted on 2015-04-11 20:51  华语  阅读(32860)  评论(0编辑  收藏  举报

导航