Ubuntu18.04 安装opensips,实现局域网内sip语音视频通话
Ubuntu18.04直接安装opensips
- 本人实践亲测有效,用docker安装opensips尝试多次均无法连接mysql数据库,故舍弃,直接在主机上安装opensips
- 部分内容参考自:https://www.jianshu.com/p/db19658a02a1
创建目录,下载程序解压,切换到解压目录
- opensips目前最新是3.2.x,但由于3.x版本后砍了opensipsctlrc配置项,无法自动生成数据库,官方是3.0后版本推荐手动新增库、新增表2张表,但没看到用户怎么新增,故只实践2.4.11版本。
- 官方推荐的3.x的mysql配置文件以及2张表数据结构,参考,本项目未使用

# mkdir /home/opensips
# cd /home/opensips
# wget http://download.opensips.org/2.4.11/opensips-2.4.11.tar.gz
//解压
# tar -zxvf opensips-2.4.11.tar.gz
//切换目录
# cd opensips-2.4.11
安装依赖
# apt update
# apt install gcc -y
# apt install g++ -y
# apt install build-essential -y
//mysql必须为5.7版本,服务端已经装好docker,这里就不装了,若要安装,则安装下,要去配置文件中注释监听地址 # 127.0.0.1
// #apt-get install mysql-server
# apt install mysql-client
# apt install libmysqlclient-dev -y
# apt install pkg-config
# apt install libssl-dev
# apt-get install perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perl libberkeleydb-perl
# apt-get install bison flex libncurses5 libncurses5-dev
编译代码
1. mark编译包
# make menuconfig
- mark过程应该不报错,应为这样

2. 进入菜单

- 操作提示:空格/回车选择,q返回上一级
2.1 选择mysql模块
- 选择Configure Compile Options,再选择 Configure Excluded Modules,按空格选中安装mysql模块

2.2 设置配置文件安装位置
- 选择mysql模块后按q返回,选择Configure Install Prefix,回车默认安装在/usr/local/下

2.3 保存修改
- 选择Save Changes 保存修改,提示需要libmysqlclient-dev不用理会,前面已经安装了

2.4 编译安装
按q返回,选择Compile And Install OpenSIPS后回车,等待3分钟左右编译,正常依赖都装好了不会提示依赖问题,若有提示可能是某依赖装失败了需要重装,按Ctrl+c退出界面后用apt安装包,若包安装失败原因有很多,或许是apt源没配置对ubuntu的版本,又或许是兼容性,具体需要百度查询。

安装完成,提示Press any to return to menuconfig后按Exit & Save All Changes后退出

配置数据库
切换目录
# cd /usr/local/etc/opensips
编辑opensipsctlrc文件(3.0版本后无此文件)
# vim opensipsctlrc
- 配置项里的内容修改了只对本工具有效,这个工具用来生成opensips数据库和sip的用户名和密码用的工具

登录mysql,创建oepnsips用户
- 登录mysql后,创建opensips要用的新用户opensips,这里用他默认用户名opensips和密码opensipsrw
CREATE USER 'opensips'@'%' IDENTIFIED BY 'opensipsrw';
GRANT ALL ON opensips.* TO 'opensips'@'%';
flush privileges;
创建opensips数据库
//进入文件夹
# cd /usr/local/sbin
//创建数据库,这时候如果mysql版本为8.0以上的话会列出一系列编码选择,得mysql5.7版本不会出现这问题
opensipsdbctl create
//表创建完成后(提示的两个问题都选n)

- 创建的表结构如下

生成特定配置文件
//进入目录
# cd /usr/local/etc/opensips
# osipsconfig

- 操作内容
//依次选择—> Generate OpenSIPS Script —> Residential Script —> Configure Residential Script
//选中如下几项[*] ENABLE_TCP[*] USE_AUTH[*] USE_DBACC[*] USE_DBUSRLOC[*] USE_DIALOG
//按q返回,选择 —> Generate Residential Script 回车,生成新的配置文件,文件格式为opensips_residential_xxxxx.cfg,按qqq退出命令,生成新的配置文件


备份旧文件,修改新文件
//备份原配置文件
# mv opensips.cfg opensipsold.cfg1
//用生成的opensips_residential_xxx.cfg替换原先的opensips.cfg:
# mv opensips_residential_2021-7-21_6:35:0.cfg opensips.cfg
//编辑新生成的配置文件,修改监听端口和ip,ip把127.0.0.1改为自己的ip,保存
# vim opensips.cfg

注意配置数据库连接,若都用默认且mysql服务在本机可不用配置
- 前面配置的opensipsctlrc只是辅助工具用的不是opensips主程序用的
- 官网说明配置文件opensips.cfg配置数据库方式为,故前一步打开的opensips.cfg文件内有关于mysql相关的配置要修改(可修改地方通常标记CUSTOMIZE ME),比如mysql的地址,端口,库名称按如下格式修改,例如:mysql://root:123456@192.168.1.10:3360/opensips


创建账号
opensipsctl add 1000 123456 //创建账号1000 密码123456
opensipsctl add 1001 123456 //创建账号1001 密码123456
//创建账号将在表subscriber新增一条记录,也可以在数据库直接修改
常用命令
sudo opensipsctl start 启动服务
sudo opensipsctl stop 停止服务
sudo opensipsctl restart 重启服务
启用
# opensipsctl start
手机安装软件测试
安卓手机可以装个Linphone或者
苹果手机可以装个PortSIP UC
设置苹果手机账号为1000

设置苹果手机账号为1001

用苹果手机拨通安卓手机, PortSIP UC通话界面

安卓手机, Linphone通话界面

通话完成后在acc表会新增1条INVITE记录和一条BYE记录

附录:注意事项,异常项
//后面启动时候一直提示:ERROR: PID file /var/run/opensips.pid does not exist -- OpenSIPS start failed
//应该是mysql版本问题,再装一个5.7版本的mysql试试
//docker装mysql5.7
# docker pull mysql:5.7
# docker run -itd --name mysql57 \
-p 3360:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
//如果创建用户时提示“ERROR: domain unknown: use usernames with domain or set default domain in SIP_DOMAIN”,
//可修改opensipsctlrc文件将SIP_DOMAIN设为本机域名或IP地址
//查看本机apt可安装的mysql版本,如果最新的版本为5.7就安装5.7
apt-cache madison mysql-server
Ubuntu18.04 安装opensips,实现局域网内sip语音视频通话的更多相关文章
- Ubuntu18.04安装mysql5.7
Ubuntu18.04安装mysql5.7 1.1安装 首先执行下面三条命令: # 安装mysql服务 sudo apt-get install mysql-server # 安装客户端 sudo a ...
- Ubuntu18.04安装RabbitMQ
Ubuntu18.04安装RabbitMQ 2018年06月10日 19:32:38 dmfrm 阅读数:2492 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...
- ubuntu18.04 安装mysql不出现设置 root 帐户的密码问题(装)
ubuntu18.04 安装mysql不出现设置 root 帐户的密码问题 https://blog.csdn.net/NeptuneClouds/article/details/80995 ...
- ubuntu18.04 安装hadoop 2.7.3+hive 2.3.4
1. 安装hadoop 详细请参见本人的另外一片博文<Hadoop 2.7.3 分布式集群安装> 2. 下载hive 2.3.4 解压文件到/opt/software -bin.tar.g ...
- Ubuntu18.04安装Virtualenv虚拟环境
在Ubuntu18.04安装Virtualenv虚拟环境 [实验环境]: 在这台电脑上已经安装了python3 [安装参考] 1.查看是否已安装virtualenv virtualenv --vers ...
- Ubuntu18.04安装thunderbird并设置中文
Ubuntu18.04安装thunderbird并设置中文 安装thunderbird sudo apt-get install thunderbird 安装中文包 sudo apt-get inst ...
- Ubuntu18.04安装Docker, centos7安装Docker
Ubuntu18.04安装Docker 第一种方法从Ubuntu的仓库直接下载安装: 安装比较简单,这种安装的Docker不是最新版本,不过对于学习够用了,依次执行下面命令进行安装. $ sudo a ...
- Ubuntu18.04安装和配置Java JDK11并卸载自带OpenJDK
卸载自带的OpenJDK方法: 在终端执行命令:sudo apt-get remove openjdk* Ubuntu18.04安装JDK11.0.2 前面步骤一样,可参考:https://www.c ...
- Ubuntu18.04 安装 oh-my-zsh
目录 Ubuntu18.04 安装 oh-my-zsh 目录 安装zsh 安装curl 安装oh-my-zsh 使用zsh替换bash 修改终端主题和配色 修改终端配置 隐藏用户和主机名 效果图 Ub ...
随机推荐
- TensorFlow用法
TensorFlow用法 什么是TensorFlow TensorFlow是一个开源软件库,用于使用数据流图进行数值计算.图中的节点表示数学运算,而图的边缘表示流动的多维数据数组(张量).这种灵活的体 ...
- 智能驾驶L2发展策略
智能驾驶L2发展策略 智能驾驶L2,以们通俗的定义是,以高级辅助驾驶的产品为主的各种巡航产品,包括定速巡航,自适应巡航ACC,预见性巡航,智能巡航等等. 车辆驾驶是集注意力高度集中,手把控方向盘和换挡 ...
- BAD SLAM:捆绑束调整直接RGB-D SLAM
BAD SLAM:捆绑束调整直接RGB-D SLAM BAD SLAM: Bundle Adjusted Direct RGB-D SLAM 论文地址: http://openaccess.thecv ...
- 正则表达式re模块的基础及简单应用
一.re的简介 re模块是python独有的匹配字符串的模块 该模块中的很多功能是基于正则表达式实现 二.正则表达式的基础语法 元字符 匹配内容说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数 ...
- 量子:基于ERP块对的两步量子直接通信
学习论文: 题目:Two-step quantum direct communication protocol using the Einstein-Podolsky-Rosen pair block ...
- QueryTable的使用以及错误
1.QuerySeter的filter使用遇到的错误 1.1 Filter里的字段名和操作符要用双下划线."__" 不是" _",否则会被认为成是列名的一部分, ...
- [Linux]经典面试题 - 网络基础 - TCP三次握手
[Linux]经典面试题 - 网络基础 - TCP三次握手 目录 [Linux]经典面试题 - 网络基础 - TCP三次握手 一.TCP报文格式 1.1 TCP报头 1.2 报文图例 二.TCP三次握 ...
- 合宙模块LUA相关资料汇总
1. 目录 1. 目录 [2. LUA二次开发](#2. LUA二次开发) 2.1 [新手教程](#2.1 新手教程) 2.2 [进阶教程](#2.2 进阶教程) 2.3 [LUA开发环境](#2.3 ...
- 管中窥豹-ssh链接过多的问题分析及复盘
缘起 某一天,产品侧同事联系过来,反馈话单传输程序报错,现象如下: 实际上,该节点仅提供了一个sftp服务,供产品侧传输话单过来进行临时存储,由计费部门取走而已. 分析 于是找运维同事上服务器看了下情 ...
- redis淘汰+过期双向保证高可用 | redis 为什么那么快?
前言 redis和数据相比除了他们的结构型颠覆以外!还有他们存储位置也是不相同.传统数据库将数据存储在硬盘上每次数据操作都需要IO而Redis是将数据存储在内存上的.这里稍微解释下IO是啥意思.IO就 ...