注意注意:opensips的组件安装,默认是root用户,如果是非root用户,中间会产生很多权限问题,我这里用的是非root用户,会将其中出现的问题展示出来。root用户按照以下步骤安装会更加简单。
下载资源文件都放在 /usr/src/目录下,我安装的是2.4.3版本,安装前执行
sudo chmod 777 -R /usr/src/

一、mysql安装

opensips添加鉴权用户需使用mysql存储,当然也可使用redis存储

1、安装

这里安装的是5.6版本
(1)下载安装包
sudo wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

这时会有如下错误(没有就忽略):
wget: unable to resolve host address ‘dev.mysql.com’
无法解析主机地址。这就能看出是DNS解析的问题。
在这里插入图片描述

解决方案:
进入/etc/resolv.conf。
修改内容为下
nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器
如果没有vim命令:
安装:yum -y install vim*
(2)安装
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum install mysql-community-server

2、查看是否安装成功

rpm -qa|grep mysql,安装完成如下:
在这里插入图片描述

3、安装后启动

sudo service mysqld restart

4、登陆mysql

mysql -u root

5、修改密码

set password for ‘root’@‘localhost’ =password(‘123456’);

6、设置客户端连接

这一步是为了更加方便的操作数据库,或者更加清晰的看到数据库信息。我用的客户端是navicat。
直接连接,会有如下异常:
Host ‘XXX’ is not allowed to connect to this MySQL server
解决方案:
use mysql;
CREATE USER ‘root’@’ %’ IDENTIFIED BY ‘123456’;
flush privileges;

二、opensips安装

Opensips需要很多依赖包,我们先安装一部分,然后在安装过程中需要什么我们就安装什么。

1、安装依赖包

sudo yum install mysql mysql-server mysql-libs mysql-devel
sudo yum install gcc make
sudo yum install flex bison ncurses libncurses-dev ncurses-devel

2、下载并解压opensips的源码

在usr/src目录下:
sudo wget http://opensips.org/pub/opensips/latest/opensips-2.4.3.tar.gz
如果下载不了,可去官网下载。
解压:tar zxvf opensips-2.4.3.tar.gz
进入:cd opensips-2.4.3/

3、编译

如果希望使用默认编译选项编译,直接执行
Make all
如果希望修改编译参数,执行
make menuconfig
我们在这里执行sudo make menuconfig,一定要sudo
此时会进入这样一个页面:
在这里插入图片描述

进入“Configure Compile Options”:
在这里插入图片描述

再进入 “Configure Excluded Modules”
在这里插入图片描述

空格键选择“db_mysql”
左键返回上一层,“Save Changes”,回车执行
在这里插入图片描述

最后,再返回上一层,选择“Compile And Install OpenSIPS”,回车执行,等待安装完成。
在这里插入图片描述

4、配置文件目录

在usr/src目录下安装opensips,其安装文件分布如下:
/usr/src //opensips安装路径
/usr/local/ //安装文件根目录
├── etc//配置目录
│ └── opensips
│ ├── opensips.cfg //主要配置脚本文件
│ ├── opensipsctlrc
│ ├── osipsconsolerc
├── lib64
│ └── opensips
│ ├── modules //包含的模块动态库的目录
│ │ ├── acc.so
│ │ ├── alias_db.so

│ │ └── usrloc.so
│ └── opensipsctl //命令行MI操作用到的文件
│ ├── dbtextdb
│ │ └── dbtextdb.py
│ ├── opensipsctl.base
│ ├── opensipsctl.ctlbase
│ ├── opensipsctl.dbtext
│ ├── opensipsctl.fifo
│ ├── opensipsctl.mysql
│ ├── opensipsctl.sqlbase
│ ├── opensipsctl.unixsock
│ ├── opensipsdbctl.base
│ ├── opensipsdbctl.dbtext
│ └── opensipsdbctl.mysql
├── sbin
│ ├── opensips //opensips程序可执行文件(启动opensips)
│ ├── opensipsctl //用于opensips命令行MI操作的脚本
│ ├── opensipsdbctl //opensips数据库操作脚本
│ ├── opensipsunix
│ ├── osipsconfig
│ └── osipsconsole
以上目录的权限均需修改:
sudo chmod 777 -R /usr/local/
注意:这里需要给以上目录添加sudo权限,编辑/etc/sudoers文件,更改secure_path配置如下:
在这里插入图片描述
这里是为sudo命令定义PATH环境变量。保存即生效。

5、配置数据库信息

cd /usr/local/etc/opensips/
sudo vim opensipsctlrc
配置如下:
在这里插入图片描述

6、配置opensips

cd /usr/local/sbin/
sudo osipsconfig
如下图所示:
依次选择–> Generate OpenSIPS Script –> Residential Script–> Configure Residential Script
在这里插入图片描述

空格选中以上四项。然后左键返回,选中“Generate Residential Script”,回车,会生成新的cfg文件:
在这里插入图片描述

进入cd /usr/local/etc/opensips/
如图所示:
在这里插入图片描述
更改文件权限:
sudo chmod 777 -R opensips_residential_2022-2-11_14:55:21.cfg
拷贝和替换原有配置文件:
mv opensips.cfg opensips.cfg.old
mv opensips_residential_2022-2-11_14:55:21.cfg opensips.cfg
修改opensips.cfg:
sudo vim opensips.cfg
如图所示修改:
在这里插入图片描述
修改完数据库配置后使用opensipsdbctl新建数据库:
cd /usr/local/sbin/
sudo opensipsdbctl create
这时候会有如下异常:
Access denied for user ‘root’@‘localhost.localdomain’ (using password: YES)
在这里插入图片描述
可以看出是数据库不支持localhost.localdomain形式去连接,那好办,新增就行了,如下:
use mysql;
CREATE USER ‘root’@‘localhost.localdomain’ IDENTIFIED BY ‘123456’;
flush privileges;
再继续执行sudo opensipsdbctl create,执行成功。这个时候,opensips数据库和用户创建成功:
在这里插入图片描述

三、启动与停止

1、前台运行

如果需要让opensips在前台运行,便于调试和查看日志,可以在opensips.cfg配置文件中设置:
debug_mode = yes
该选项默认为no。然后在安装根目录下直接执行sbin/opensips文件运行opensips/

2、后台运行

将debug_mode配置项设置为no,或屏蔽掉该配置项,然后适用脚本进行启动和停止
启动:opensipsctl start
重启:opensipsctl restart
停止:opensipsctl stop

3、启动失败

先进行下一步日志配置,如果启动失败,可以看到日志。
我这边启动失败,报错为:
在这里插入图片描述

解决方案:
mysql -u root
grant all privileges on opensips.* to opensips@localhost identified by ‘opensipsrw’;
flush privileges;
重启成功。

四、日志配置

OpenSIPS使用syslog服务写日志,所以缺省情况下日志会写入/var/log/message这个系统日志文件中。
更改步骤:
1、opensips.cfg配置debug_mode=no及log_stderror=no时日志才会写文件。
2、在sudo vim /etc/rsyslog.conf中,增加一行:
local0.* /data/opensips/logs/opensips.log
3、重启rsyslog服务:sudo systemctl restart rsyslog.service
注意:我这边测试的日志写入比较慢。目前还没有解决办法。
debug_mode=yes 是开启调试模式,前台运行,详细见上文。

参考:https://www.jianshu.com/p/4f17429cfdcd
https://mp.weixin.qq.com/s?__biz=MzI1NjY1ODQ0OQ==&mid=2247483672&idx=1&sn=4ba52c38910711d2d01597b23946f118&scene=19#wechat_redirect

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐