opensips的安装

Opensips的简介

Opensips可以搭建sip服务器,也就是我们平时所说的sip代理,opensips的服务器有两个主要的配置文件,opensips.cfgopensipsctlrc,就其目录而言,如果你在编译的时候没有进行目录的选择,一般是会放在/usr/local/etc/opensips/的目录下。

一、opensips的简单功能实现

Opensips的预安装

Opensips我是通过源码安装编译的,其中在编译之前是需要安装一些安装包(我用的是rpm)来解决报错的问题,我在安装过程中遇到的缺失的包都有

1bison

2flex

3boost

4ncurse

如果你的服务器上没有gcc等编译器,还需要安装gcc,总之,就是提示需要什么,你就安装什么,那些安装的rpm包的来源可以在网上下载,也可以在你的光盘里面的Package里面获得,你所需要的就是挂载磁盘,怎么挂载磁盘,网上去搜吧

5mysql

Mysql是非常重要的环节,我的数据库是用的是rpm包安装的,有以下几个包

        a:mysql-lib

        b:mysql-server

        c:mysql-5.*

d:mysql-devel

特别重要的是mysql-develmysql-devel里面含有mysql.h头文件,如果你不安装的话,后面启动opensips的时候就会报错,找不到头文件等等,总之是数据库的报错

Opensips的安装

Opsnsips的预安装已经成功了,下来就是opensips主角登场

1:关于选择哪个版本

选择哪个版本还是比较重要的,因为每个版本带的模块都不一样,通过下载安装包,解压,进入目录opensips*/modules查看它所带的模块都有哪些,另外,你不要想着没有这个模块,那我将以*.so文件的形式加上去模块,或者编译之前将文件夹放进去呢?不行,我尝试过了,编译会报错。

2:我选择的是1.6版本,因为1.5不带stun模块,如果有这个模块,我就不用自己再搭建stun服务器了。

3:下载版本,网速如好的话,请到官网上下载,各位也知道开源的软件这个性质

4:我的安装的环境是redhat 6.164位的服务器

5:安装:

        a:tarzxvf opensips-1.5.1-tls_src.tar.gz

        b:cdopensips-1.5.1-tls

        c:viMakefile 去掉exclude_modules?=后面的db_mysql

另外,我尝试过makemenuconfig的做法,就是将exclude里面mysql选中,但是在后面编译的时候好像没有起到作用,所以我建议还是直接编辑Makefile文件,比较稳妥

        d:make

        e:makeinstall

        f:查看/usr/local/sbin/usr/local/etc/opensips,是否有可执行文件和配置文件,配置文件就是文章刚开头说的那两个文件,那如果有的话,接下来就是配置文件的编辑了

Opensips的配置(以下我是借鉴的网上的,很实用)

1vi /usr/local/etc/opensips/opensips.cfg

log_stderror=yes     可以选择no,就直接放在系统日志里面去了

disable_tcp=yes       这个我还没有查到为什么要选yes

loadmodule "db_mysql.so"              加载数据库模块

loadmodule "auth.so"                        加载鉴权模块

loadmodule "auth_db.so"                

modparam("usrloc","db_mode", 2)                 将用户信息放到内存里面

modparam("auth_db","calculate_ha1", yes)

modparam("auth_db","password_column", "password")

下面是鉴权模块的配置,在哪个服务器上进鉴权

if (!www_authorize("127.0.0.1","subscriber")) {

www_challenge("127.0.0.1","0");

exit;

};

2vim /usr/local/etc/opensips/opensipsctlrc

去掉下面配置项前面的注释

SIP_DOMAIN=192.168.10.113

DBENGINE=MYSQL

DBHOST=localhost (最好为127.0.0.1)

DBNAME=opensips

DB_PATH="/usr/local/etc/opensips/dbtext"

DBRWUSER=opensips

DBRWPW="opensipsrw"

DBROUSER=opensipsro

DBROPW=opensipsro

DBROOTUSER="root"

USERCOL="username"

ALIASES_TYPE="DB"

CTLENGINE="FIFO"

VERIFY_ACL=1

ACL_GROUPS="local ld int voicemailfree-pstn"

VERBOSE=1

创建数据库表

如果在你的机器上曾安装过opensips

请执行 /usr/local/sbin/opensipsdbctl migrate

其实也可以直接将数据库opensipsdrop

如果你是第一次安装

请执行 /usr/local/sbin/opensipsdbctl create

启动opensips服务器

/usr/local/sbin/opensips

如果成功启动,说明前面的配置成功

启动起来之后,尝试注册,可以用xlite等等一些windows下的或者csipsimple进行注册

测试结果:

网内的client可以拨通电话,但是外网的能拨通电话,但是听不到声音,因为代理商、上走的是tcp包,语音通道走的是rtp包,没有经过服务器,所以,现在的问题就是完成网间穿越

我在上述过程中遇到的最大问题就是opensipsmysql之间的问题:我在第一次启动的时候,启动日志里面报错,说是mysql数据库用opensips用户启动不起来,我就尝试用opensips用户登录,确实连接不到数据库,用root用户登录以后,查看mysql数据库中的user表,也是有数据的,一共有4条数据,全是opensipsopensipsro的,我最后的解决办法是删除一些用户的登陆权限,除了localhost+root以外的全部删除,但是这个会造成远程登录数据库的时候出现问题,所以我暂时还没找到合适的办法,所以,如果你的数据库有重要数据,还是先备份

stunserver的安装

opensips的测试(内网外网)

stunserver的测试

opensips和stunserver的整合