opensips的安装
Opensips的简介
Opensips可以搭建sip服务器,也就是我们平时所说的sip代理,opensips的服务器有两个主要的配置文件,opensips.cfg和opensipsctlrc,就其目录而言,如果你在编译的时候没有进行目录的选择,一般是会放在/usr/local/etc/opensips/的目录下。
一、opensips的简单功能实现
Opensips的预安装
Opensips我是通过源码安装编译的,其中在编译之前是需要安装一些安装包(我用的是rpm包)来解决报错的问题,我在安装过程中遇到的缺失的包都有
1:bison
2:flex
3:boost
4:ncurse
如果你的服务器上没有gcc等编译器,还需要安装gcc,总之,就是提示需要什么,你就安装什么,那些安装的rpm包的来源可以在网上下载,也可以在你的光盘里面的Package里面获得,你所需要的就是挂载磁盘,怎么挂载磁盘,网上去搜吧
5:mysql
Mysql是非常重要的环节,我的数据库是用的是rpm包安装的,有以下几个包
a:mysql-lib
b:mysql-server
c:mysql-5.*
d:mysql-devel
特别重要的是mysql-devel,mysql-devel里面含有mysql.h头文件,如果你不安装的话,后面启动opensips的时候就会报错,找不到头文件等等,总之是数据库的报错
Opensips的安装
Opsnsips的预安装已经成功了,下来就是opensips主角登场
1:关于选择哪个版本
选择哪个版本还是比较重要的,因为每个版本带的模块都不一样,通过下载安装包,解压,进入目录opensips*/modules查看它所带的模块都有哪些,另外,你不要想着没有这个模块,那我将以*.so文件的形式加上去模块,或者编译之前将文件夹放进去呢?不行,我尝试过了,编译会报错。
2:我选择的是1.6版本,因为1.5不带stun模块,如果有这个模块,我就不用自己再搭建stun服务器了。
3:下载版本,网速如好的话,请到官网上下载,各位也知道开源的软件这个性质
4:我的安装的环境是redhat 6.1,64位的服务器
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的配置(以下我是借鉴的网上的,很实用)
1:vi /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;
};
2:vim /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
其实也可以直接将数据库opensips给drop了
如果你是第一次安装
请执行 /usr/local/sbin/opensipsdbctl create
启动opensips服务器
/usr/local/sbin/opensips
如果成功启动,说明前面的配置成功
启动起来之后,尝试注册,可以用xlite等等一些windows下的或者csipsimple进行注册
测试结果:
网内的client可以拨通电话,但是外网的能拨通电话,但是听不到声音,因为代理商、上走的是tcp包,语音通道走的是rtp包,没有经过服务器,所以,现在的问题就是完成网间穿越
我在上述过程中遇到的最大问题就是opensips和mysql之间的问题:我在第一次启动的时候,启动日志里面报错,说是mysql数据库用opensips用户启动不起来,我就尝试用opensips用户登录,确实连接不到数据库,用root用户登录以后,查看mysql数据库中的user表,也是有数据的,一共有4条数据,全是opensips和opensipsro的,我最后的解决办法是删除一些用户的登陆权限,除了localhost+root以外的全部删除,但是这个会造成远程登录数据库的时候出现问题,所以我暂时还没找到合适的办法,所以,如果你的数据库有重要数据,还是先备份
stunserver的安装
opensips的测试(内网外网)
stunserver的测试
opensips和stunserver的整合