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 ...
随机推荐
- 细粒度语义分割:ICCV2019论文解析
细粒度语义分割:ICCV2019论文解析 Fine-Grained Segmentation Networks: Self-Supervised Segmentation for Improved L ...
- 机器学习PAL数据预处理
机器学习PAL数据预处理 本文介绍如何对原始数据进行数据预处理,得到模型训练集和模型预测集. 前提条件 完成数据准备,详情请参见准备数据. 操作步骤 登录PAI控制台. 在左侧导航栏,选择模型开发和训 ...
- 在NVIDIA A100 GPU上利用硬件JPEG解码器和NVIDIA nvJPEG库
在NVIDIA A100 GPU上利用硬件JPEG解码器和NVIDIA nvJPEG库 根据调查,普通人产生的1.2万亿张图像可以通过电话或数码相机捕获.这样的图像的存储,尤其是以高分辨率的原始格式, ...
- 教你在Kubernetes中快速部署ES集群
摘要:ES集群是进行大数据存储和分析,快速检索的利器,本文简述了ES的集群架构,并提供了在Kubernetes中快速部署ES集群的样例:对ES集群的监控运维工具进行了介绍,并提供了部分问题定位经验,最 ...
- 浪潮 ClusterEngineV4.0 任意命令执行
1.浪潮ClusterEngineV4.0 任意命令执行 影响版本 ClusterEngineV4.0 2.漏洞影响 远程代码执行 3.复现 fofa语句 title='TSCEV4.0' 抓包构造e ...
- C# 强行锁定 第三方 外部 应用程序窗体窗口的分辨率尺寸大小 禁止鼠标拖拽改变窗口大小
我们也许会有一些奇怪的需求,比如说禁止一个外部程序的窗口大小更改. 如果我们没法修改外部程序的代码,那要怎么做呢? 当然,我们可以通过DLL注入目标程序的方式去Hook或registry一个事件来检测 ...
- spring如何集成第三方框架? 比如mybatis
实体Bean的创建: 1: 基于class构建, 2: 构造方法构建 3: 静态工厂方法创建 4: FactoryBean构建 spring如何集成第三方框架? 比如mybatis 在mybatis中 ...
- 【C++】随机数,rand()与srand()函数
rand()函数 rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为2147483647. 测试代码: #include<cstdl ...
- LockSupport中的park()与unpark()
类注释原文:Basic thread blocking primitives for creating locks and other synchronization classes.意思就是Lock ...
- DBA入门相关知识介绍
DBA(database administrator):数据库管理员 DBMS(database management system):数据库管理系 ...