一. 安装mysql
opensips需要用到mysql来保存数据。
安装完mysql之后还要执行如下命令,不然后面安装opensips会报错。
sudo yum install mysql-devel
二.安装rtpproxy
如果是局域网环境,不需要安装rtpproxy,rtpproxy的作用是公网环境传递语音与视频流。
1.下载rtpproxy安装文件
github下载地址:https://github.com/miconda/rtpproxy
百度网盘地址:链接:https://pan.baidu.com/s/1RsyPLexfZxHPdtul5mgPrA
提取码:4onw
2.安装rtpproxy
下载后解压好放到服务器某个位置即可,然后进入rtpproxy目录内,执行命令:
./configure
make
make install
make和make install命令执行过程中,日志可能有点奇怪,不用在意,后面可以正常启动就行。
本人运行时,日志如下:
make时:
make install时:
make[1]: 进入目录“/usr/local/rtpproxy”
test -z "/usr/local/bin" || /usr/bin/mkdir -p "/usr/local/bin"
/usr/bin/install -c rtpproxy makeann '/usr/local/bin'
test -z "/usr/local/share/man/man8" || /usr/bin/mkdir -p "/usr/local/share/man/man8"
/usr/bin/install -c -m 644 rtpproxy.8 '/usr/local/share/man/man8'
make[1]: 离开目录“/usr/local/rtpproxy”
3.运行rtpproxy
./rtpproxy -A 10.0.0.2 -l 192.168.1.2 -s unix:/var/run/rtpproxy.sock -m 13000 -M 13010 -F
选项参数含义:
-A 本机外网IP
-l 本地内网IP
-s 与opensips通讯的socket,与opensips.cfg配置文件保持一致
-F 不检查是否为超级用户模式
-m RTP最小端口
-M RTP最大端口
如果rtpproxy启动成功但公网环境下不起作用,可以将rtpproxy.sock换个位置再尝试。
三.安装opensips
1.安装opensips运行环境
yum -y install gcc gcc-c++ glibc bison flex zlib-devel ncurses ncurses-devel
2.下载opensips
官网下载地址:http://www.opensips.org/Resources/Downloads
3.解压opensips安装包(我下载的版本是2.4.3)
tar xf opensips-2.4.3.tar.gz
4.编译opensips
进入opensips-2.4.3解压目录,执行命令
make menuconfig
然后一直按左键退出图形界面。
make menuconfig 执行后会在opensips-2.4.3解压目录下生成Makefile.conf文件。
5.修改Makefile.conf文件(也可以使用图形界面修改,这里我直接手动修改)
最重要的就是把db_mysql模块编译进去。
在exclude_modules中删掉db_mysql,
在include_modules中添加db_mysql,
修改安装目录为PREFIX=/usr/local/opensips/
6.安装opensips
make all
make install
7.配置opensips
cd /usr/local/opensips/
目录结构如下
这里有两个文件需要修改,opensipsctlrc和oepnsips.cfg
修改opensipsctlrc文件
将对应字段的注释打开,部分需要手动修改
修改opensips.cfg文件
使用make menuconfig菜单工具生成一个opensips.cfg文件(用来替换opensips中的opensips.cfg,之所以需要替换,是因为原生的opensips.cfg文件少了很多引入)
步骤如下:
进入opensips-2.4.3解压目录,执行命令
make menuconfig
如果搭建的opensips服务器用在局域网,USE_NAT可以去掉。
这一步记住自己菜单中生成的 .cfg文件名
退出菜单后执行如下命令:
cd etc/
mv opensips_residential_2018-2-7_3\:59\:1.cfg opensips.cfg
cp opensips.cfg /usr/local/opensips/etc/opensips/opensips.cfg
这里之后开始真正地修改opensips.cfg文件
然后所有带 # CUSTOMIZE ME的地方根据自己的实际情况修改,重点修改为数据库账号密码,主机ip等。
8.创建opensips数据库
cd /usr/local/opensips/sbin
#检测配置文件语法
./opensips -C
#创建数据库
./opensipsdbctl create
#输入安装mysql时的(root)密码,开始创建数据库和表
9.开启opensips服务
./opensipsctl start #开启opensips服务
./opensipsctl stop #关闭opensips服务
./opensipsctl restart #重启opensips服务
10.添加sip用户
./opensipsctl add username password #添加用户
./opensipsctl rm username #删除用户
11.查看sip用户
可以使用mysql -u opensips -p而后输入你的密码,就能够通过show databases;查看数据库,再使用use opensips;并且show tables;就可以查看opensips数据库里的表格,最后使用select * from subscriber;便能够查看添加的sip用户情况,也可以直接使用navicat查看。
默认的opensips的数据库密码为opensipsrw
12.配置rtpproxy
安装和配置rtpproxy才能让opensips在公网下互通,如果只用于局域网,可以忽略该步骤。
13. 测试opensips服务器是否搭建成功
可以分别在收到和电脑上安装一个linphone,测试创建的账号是否可以互通。
四.安装中遇到的错误
1.ERROR: PID file /var/run/opensips.pid does not exist -- OpenSIPS start failed
错误日志:tail -1000f /var/log/messages
Apr 7 23:26:14 VM-0-3-centos ./opensips[13382]: ERROR:core:udp_init_listener: bind(1c, 0x7fc524500744, 16) on 182.254.242.219: Cannot assign requested address
Apr 7 23:26:14 VM-0-3-centos ./opensips[13382]: ERROR:core:trans_init_all_listeners: failed to init listener [182.254.242.219], proto udp
Apr 7 23:26:14 VM-0-3-centos ./opensips[13382]: ERROR:core:main: failed to init all SIP listeners, aborting
解决方法:
2.创建数据库时错误
创建opensips数据库时如有错误,可以从账号权限是否足够入手。