一、前言
最近这两天一直倒腾Opensips,折腾了2天终于把Opensips 2.4.3搭建起来了,在此记录一下搭建的过程以及踩过的坑。
二、准备安装包
MySQL-devel:mysql-community-devel-5.7.26-1.el7.x86_64.rpm
Opensips:opensips-2.4.3.tar.gz
Opensips官网地址:
https://www.opensips.org/Downloads/Downloads
MySQL-devel下载地址:
https://rhel.pkgs.org/7/mysql-5.7-x86_64/mysql-community-devel-5.7.26-1.el7.x86_64.rpm.html
先说明一下我的环境,我是基于CentOS7搭建Opensips 2.4.3,并且已安装mysql5.7.26版本,但是缺少mysql-devel,所以先得安装一下mysql-devel包。如果已安装mysql-devel则忽略第三点安装步骤
我们的应用场景只是在局域网内使用,所以不需要安装rtpproxy代理。如果要在公网上应用,那么就需要安装rtpproxy,rtpproxy是在公网环境传递语音与视频流。
三、开始安装MySQL-devel
查询mysql安装情况
rpm -qa | grep mysql
使用rpm -ivh xxx.rpm进行安装
rpm -ivh mysql-community-devel-5.7.26-1.el7.x86_64.rpm
四、开始安装opensips
1、准备环境
yum -y install gcc gcc-c++ glibc bison flex zlib-devel ncurses ncurses-devel
2、进行解压opensips
tar xf opensips-2.4.3.tar.gz
3、进入到解压后的目录,进行编译
make menuconfig
此时会跳到菜单视图界面,按左键退出。
编译完成会生成Makefile.conf文件
4、修改Makefile.conf文件
vim Makefile.conf
由于该文件内容比较多,可以进行查找定位到要修改内容,同时按住Shift键+冒号键,输入左斜杆和查找的字符
黄色选中就是定位的内容
将exclude_module中的db_mysql删除,在include_modules添加db_mysql,目的是为了编译时将db_mysql模块编译进去
修改安装目录,保存退出
5、开始编译安装,这个过程大概的3分钟左右
make all
make install
安装完成,进入到/usr/local/opensips/目录,目录结构如下
6、opensips自带的配置文件缺少配置,所以需要进入菜单界面,生成opensips配置文件。进入解压的目录
cd /home/ssudev/opensips-2.4.3
make menuconfig
按上下箭头选择,按空格键进行选中,如果搭建在局域网内则不用选择USE_NAT,如果是公网上使用则选中USE_NAT。选中完毕后,按左键退回到上一步,选中到Generate Residentital Script生成文件,记住生成所在的目录,默认在opensips的解压目录etc下
生成成功后,按左键退回上一步,直至退出。进入到解压目录etc,可以看到生成的文件
将文件移动到/usr/local/opensips/etc/opensips/下
mv opensips_residential_2022-12-6_14\:46\:55.cfg /usr/local/opensips/etc/opensips/opensips.cfg
提示会覆盖,按y确认覆盖
7、修改opensips的配置文件,进入安装目录,主要修改opensips.cfg和opensipsctlrc文件
配置opensips.cfg文件
vim openships.cfg
修改所有注释为“# CUSTOMIZE ME”地方
listen=udp:192.168.0.54:5060 # CUSTOMIZE ME
改成自己的IP
listen=tcp:192.168.0.54:5060 # CUSTOMIZE ME
改成自己的IP
mpath="/usr/local/opensips/lib64/opensips/modules"
改成自己的安装目录
涉及到的mysql连接,都改成mysql服务所在的主机,我这里没有使用本地mysql,用的是局域网内其他主机地址
配置opensipsctlrc文件
vim opensipsctlrc
将注释打开,DBHOST改成mysql所在的主机IP,保存退出
8、开始创建opensips数据库,进入到/usr/local/opensips/sbin目录下,先进行配置文件语法监测看有没有错误
./opensips -C
如下表示OK,没有报错
创建数据库,要求输入数据库连接密码、字符编码,咱们使用latin1,UTF8会报错,创建不成功,后面通过sqlyon修改成utf8
./opensipsdbctl create
启动opensips
./opensipsctl start #启动
./opensipsctl start #暂停
./opensipsctl start #重启
添加账号密码,该账号就是客户端进行拨号的号码,号码任意填写
./opensipsctl add 账号 密码
./opensipsctl add 2001 123456
同时查看数据库,有2条数据
五、使用sip客户端工具测试
找了很多我使用的是linphone测试工具,支持windows、Android,但是这些工具连接不上都没有具体的错误提示。IOS端的PortSIP UC有直观的错误提示。
六、搭建过程中遇到的问题
408 Request Timeout 请求超时,注意检查防火墙,防火墙如果是开启的则需要开放5060端口;
403 Forbidden auth ID 查看/usr/local/opensips/etc/opensips目录下的opensips.cfg配置文件,发现配置文件中缺少模块。进入到菜单界面选择模块重新生成配置文件,但是不一定有效。这里我把我的配置文件放到连接中:
https://blog.51cto.com/u_13560480/5916445
483 too many hops 要么是opensips.cfg的配置文件监听ip、端口没有写对。另外一种情况是domian表中的domian字段是null,我这里是属于后者,在表中添加domian字段信息,就能正常登录了。