快速安装方式安装开源OpenSIPS和CP控制界面

        OpenSIPS是目前世界上主流的两个SIP软交换引擎(其中另外一个是kamailio)或者SIP信令服务器(个人认为是比较正确的称谓)。关于Opensips的基础和一些参数配置和安装方式笔者在很久以前的历史文档中有非常多的介绍。最近,很多用户使用OpenSIPS软交换平台做freeSBC或者其他的功能业务的实现,这些客户遇到很多的疑问和安装中也遇到很多问题,所以,为了让客户能够快速安装opensips, 笔者通过一个最完整和稳定的方式完整实现一次安装过程,帮助客户能够快速准确地安装好opensips,数据库,CLI和界面管理设置。

另外提醒读者,OpenSIPS是一个SIP信令服务器,它的功能非常强大,也非常灵活,cfg配置的核心文件可以通过rfc3261结合第三方应用做不同场景中的流程处理。因此,用户学习OpenSIPS时就会面对很多的问题。比较常见的“大概”可以支持的业务场景如下,但不仅限于于此。

如果读者不明白这些相关的基本知识点的话,可以通过微信号查找2018年的历史文档,查找 “Kamailio/OpenSIPS学习笔记”可以获得学习资料。

Kamailio/OpenSIPS学习笔记-SIP相关基础​

mp.weixin.qq.com/s?__biz=MzA4NjU0NTIwNQ==&mid=2656444429&idx=1&sn=d77093faef24765a05f0c67b1189069f&chksm=84658657b3120f4181d417e1b67aa0b0da079532ac227682415521394af0dcd86728790e97cb&scene=21#wechat_redirect​编辑

一些客户遇到的主要的问题是操作系统选择错误,另外安装的opensips的版本和界面控制系统CP的安装错误。因此,笔者选择目前官方最稳定的安装方式进行安装,帮助客户或者其他想学习opensips的用户能够快速上手,并且无需再查找其他资源,保证你安装环境能够正常工作。笔者首先明确安装配置环境,然后通过一步步快速安装方式安装opensips,安装数据库,最后安装opensips的界面CP,最后访问界面。

提醒读者:根据官方人士的推荐,为了保证为用户提供完整稳定的安装流程,笔者仅测试当前的opensips 数据源,仅测试Debian 10.6(buster)版本。如果读者安装错误,可能是其他支持包版本或者连接的问题,请自行更新修复。

1 安装配置环境准备

在安装opensips或者其他的开源软件时,一些用户经常犯的错误时,不咨询官方资源,不看官方说明,根据自己的喜好或者其他业务要求原因,想当然安装一个操作系统。因此,最后导致很多支持包错误,安装错误等问题。这里,笔者不是说其他的操作系统不支持或者不能安装,为了减少时间浪费,最好按照官方推荐来配置,除非有业务需求必须安装到一个指定的操作系统,否则,笔者建议大家按照官方的配置建议来安装。这里,笔者安装的测试环境包括:

  1. Debian 10.6(buster) 版本,当然用户也可以安装其他的操作系统或者其他的版本,但是“可能”发生支持包错误(至少目前笔者测试安装ubutun-18/20发生了错误)。根据官方推荐,安装Debian 10.6(buster)版本。
  2. OpenSIP-3.1 稳定版
  3. OpenSIPS Control Panel class 8

​如果读者非常熟悉操作系统和其支持包包括源代码安装的话,也可以通过源代码安装方式实现。对于一般基础用户,最好查看官方的数据配置源:

2 安装OpenSIPS

用户安装好推荐的操作系统Debian-10以后,以root账号登录系统。执行以下几个步骤的操作。首先安装支持包,创建OpenSIPS的数据源:

apt install gnupg2
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 049AD65B
echo "deb https://apt.opensips.org buster 3.1-releases" >/etc/apt/sources.list.d/opensips.list
echo "deb https://apt.opensips.org buster cli-releases" >/etc/apt/sources.list.d/opensips-cli.list

如果执行权限错误的话,可能是登录用户没有读写权限,不能写入sources.list.d/opensips.list文件,请检查用户执行权限再次执行。

配置好数据以后,再次执行系统更新

apt-get update

系统执行更新以后,会看到opensips的数据加载到了记录中。

确保成功保存文件配置

然后,执行安装命令,安装openisps和CLI 工具。注意,opensips-3.1以后对工具做了很多的优化和升级,支持了更多的功能。CLI工具安装也是独立完成。

apt install opensips
apt install opensips-cli

安装CLI工具,如果CLI根据安装失败,其他后续步骤免谈。没有cli工具无法访问opensips引擎和CP界面。因此,我们一定要确保CLI工具也成功安装。

安装好opensips和opensips CLI以后,我们还需要安装opensips的其他支持模块,执行命令:

apt install opensips-*

​如果以上步骤全部正常安装成功的话,说明opensips和CLI已经安装成功。

也可以通过源码安装的方式进行编译安装,采用mariadb

3 配置系统启动服务

安装好opensips和CLI以后,我们需要开启opensips的系统服务,执行以下命令:

systemctl enable opensips  // 开启服务
systemctl start opensips  // 启动服务 stop 关闭
systemctl status opensips // 查看opensips状态

到这一步为止,我们已经成功安装了opensips, CLI和开启了系统服务。接下来,我们继续安装数据库。

4 OpenSIPS数据库安装配置

OpenSIPS使用MYSQL来存储一些必要的配置信息和模块信息,例如需要存储subscribers和密码,拨号规则,路由配置等信息。这里,我们开始安装mysql和相关的支持包。首先,安装mysql的db,执行命令:

apt install mariadb-server

说明,这里安装的数据库是本地安装(和opensips同一服务器),无需访问互联网资源,无密码设置。

然后,通过CLI命令,创建opensips数据库:

opensips-cli -x database create opensips

注意输入的mysql url地址,这里输入的是mysql://localhost。如果有独立安装的数据库服务器,输入其他第三方地址。具体说明,查看mysql手册。

数据库和相关的表创建成功以后,查看数据库表状态,执行命令:

mysql opensips -e "show tables"

5 安装OpenSIPS Control Panel界面

用户在确认以上所有步骤安装成功以后,如果需要配置CP界面的话,我们可以通过安装步骤实现界面配置安装。如果仅通过CLI操作实现opensips配置的话,无需安装界面系统。通过界面配置实现OpenSIPS的配置相对比较简单,笔者建议用户通过安装界面来一步步实现cfg的文件配置流程,如果一开始就通过cfg配置的话,一些新手可能非常迷惑。所以,我们花费一点时间来配置控制界面。首先,我们需要安装一些必要的支持包,我们需要执行以下命令:

apt-get install -y apache2;
apt-get install -y php php-curl php-gd php-pear php-cli php-mysql php-apcu;
apt-get install libapache2-mod-php  unzip;

以上支持包安装完成以后,再执行下载CP安装命令:

cd /var/www/html;
wget https://github.com/OpenSIPS/opensips-cp/archive/master.zip;
unzip master.zip;
mv opensips-cp-master opensips-cp
chown -R www-data:www-data /var/www/html/opensips-cp/
mysql -Dopensips < /var/www/html/opensips-cp/config/db_schema.mysql
cp /var/www/html/opensips-cp/config/tools/system/smonitor/opensips_stats_cron /etc/cron.d/
mysql -e "CREATE USER 'opensips'@'localhost' IDENTIFIED BY 'opensipsrw';"
mysql -e "GRANT ALL PRIVILEGES ON opensips.* TO 'opensips'@'localhost';"
mysql -e "FLUSH PRIVILEGES"
systemctl restart cron

最后配置apache文件访问界面系统,访问默认apache配置文件目录(/etc/apache2/sites-available/000-default ),编辑配置文件000-default,替换成以下文件配置:

<VirtualHost *:80>
        #ServerName www.example.com
 
        ServerAdmin webmaster@localhost
 
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
 
        <Directory /var/www/html/opensips-cp/web>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
  </Directory>
  
        <Directory /var/www/html/opensips-cp>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all denied
  </Directory>
  
        Alias /cp /var/www/html/opensips-cp/web
 
  <DirectoryMatch "/var/www/html/opensips-cp/web/tools/.*/.*/(template|custom_actions|lib)/">
    Require all denied
  </DirectoryMatch>
 
 
</VirtualHost>
​


重新启动服务器,su -, 然后reboot。

通过浏览器访问OpenSIPS Control Panel 界面

通过以上命令安装以后,用户就可以通过浏览器,输入OpenSIPS的IP地址/cp来访问OpenSIPS Control Panel控制界面,例如,笔者的是192.168.0.102/cp。登录用户名称,admin,密码是opensips( 前面已设置)

如果出现“Can not find driver”的问题:

确保已经装好php7.4-mysql扩展
php -v
sudo apt-get install php7.4-mysql
确保php.ini已启用pdo
locate php.ini
sudo nano /etc/php/7.4/fpm/php.ini
启用以下
extension=pdo_firebird
extension=pdo_mysql
extension=pdo_oci
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite
保存
重启web服务器(apache或者nginx)
service nginx restart
php -m | grep -i pdo
PDO
pdo_mysql
phpinfo()中依然是PDO drivers > no value,我们先尝试重试自己的开发站点

总结

OpenSIPS和控制界面,数据库安装是相对比较复杂的过程,很多用户出现的错误大部分都是因为版本的错误或者操作系统选择不匹配。笔者为用户提供了一个完整的opensips,数据库和界面配置的配置方式,并且推荐了相对比较稳定的版本。通过以上一步步的配置,用户就可以实现OpenSIPS,数据库和界面的配置。当然,这仅是万里长征的第一步,为了实现OpenSIPS所提供的强大功能,用户需要首先创建分机,配置路由, 均衡负载,HA或者推荐第三方的集成,例如和Asterisk或者FreeSWITCH媒体服务器的集成等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/266601.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 NOIP2016 普及组 回文日期 + 洛谷 NOIP2017 图书管理员

回文日期这题目本来是不难想思路的。。。。。。 然而我第一次做的时候改了蛮久才把代码完全改对&#xff0c;主要感觉还是不够细心&#xff0c;敲的时候也没注意见检查一些小错误&#xff0c;那么接下来不说废话&#xff0c;请看题干&#xff1a; 接下来请看输入输出的样例以及…

【机器学习】模式识别

1 概述 模式识别&#xff0c;简单来讲&#xff0c;就是分类问题。 模式识别应用&#xff1a;医学影像分析、人脸识别、车牌识别、遥感图像 2 模式分类器 分类器的分类&#xff1a;线性分类器、非线性分类器、最近邻分类器 2.1 分类器的训练&#xff08;学习&#xff09;过…

Stable Diffusion系列(三):网络分类与选择

文章目录 网络分类模型基座模型衍生模型二次元模型2.5D模型写实风格模型 名称解读 VAELora嵌入文件放置界面使用 网络分类 当使用SD webui绘图时&#xff0c;为了提升绘图质量&#xff0c;可以多种网络混合使用&#xff0c;可选的网络包括了模型、VAE、超网络、Lora和嵌入。 …

使用minio实现大文件断点续传

部署 minio 拉取镜像 docker pull minio/minio docker images新建映射目录 新建下面图片里的俩个目录 data(存放对象-实际的数据) config 存放配置开放对应端口 我使用的是腾讯服务器所以 在腾讯的安全页面开启 9000&#xff0c;9090 两个端口就可以了&#xff08;根据大家实际…

数据权限篇

文章目录 1. 如何实现数据权限&#xff08;内核&#xff09;1.1 原理1.2 源码实现&#xff0c;mybatis如何重写sql1.2.1 重写sql1.2.2 解析sql1.2.3 DataPermissionDatabaseInterceptor 1. 如何实现数据权限&#xff08;内核&#xff09; 1.1 原理 面对复杂多变的需求&#xf…

二叉树进阶题目(超详解)

文章目录 前言根据二叉树创建字符串题目分析写代码 二叉树的层序遍历题目分析 写代码二叉树的层序遍历II题目分析写代码 二叉树的最近公共祖先题目分析写代码时间复杂度 优化思路优化的代码 二叉搜索树与双向链表题目分析写代码 从前序与中序遍历序列构造二叉树题目分析写代码从…

python实现bp神经网络对csv文件进行数据预测

参考资源&#xff1a; sklearn库 bp神经网络[从原理到代码一篇搞定]&#xff08;2&#xff09;_sklearn 神经网络-CSDN博客 十分钟上手sklearn&#xff1a;安装&#xff0c;获取数据&#xff0c;数据预处理 - 知乎 (zhihu.com) 一个实例讲解如何使用BP神经网络(附代码) - 知…

VSCode软件与SCL编程

原创 NingChao NCLib 博途工控人平时在哪里技术交流博途工控人社群 VSCode简称VSC&#xff0c;是Visual studio code的缩写&#xff0c;是由微软开发的跨平台的轻量级编辑器&#xff0c;支持几乎所有主流的开发语言的语法高亮、代码智能补全、插件扩展、代码对比等&#xff0c…

【Python】贪心算法入门

一.引言 本文将通过两个问题和两道例题带你入门贪心算法。 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最优&#xff08;最好或最有利&#xff09;的选择&#xff0c;从而希望导致全局最优解的算法。贪心算法不保证找到全局最优…

STM32——CAN协议

文章目录 一.CAN协议的基本特点1.1 特点1.2 电平标准1.3 基本的五个帧1.4 数据帧 二.数据帧解析2.1 帧起始和仲裁段2.2 控制段2.3 数据段和CRC段2.4 ACK段和帧结束 三.总线仲裁四.位时序五.STM32CAN控制器原理与配置5.1 STM32CAN控制器介绍5.2 CAN的模式5.3 CAN框图 六 手册寄存…

w15初识php基础

一、计算100之内的偶数之和 实现思路 所有的偶数除2都为0 代码实现 <?php # 记录100以内的偶数和 $number1; $num0; while($number<100){if($number%20){ $num$number;}$number1; } echo $num; ?>输出的结果 二、计算100之内的奇数之和 实现思路 所有的奇数除…

JavaScript常用技巧专题四

文章目录 一、使用箭头函数简化函数定义二、使用解构赋值简化变量声明三、使用模板字面量进行字符串拼接四、使用展开运算符进行数组和对象操作五、使用数组的高阶方法简化循环和数据操作六、使用条件运算符简化条件判断七、使用对象解构和默认参数简化函数参数八、使用函数式编…

7. 行为模式 - 状态模式

亦称&#xff1a; State 意图 状态模式是一种行为设计模式&#xff0c; 让你能在一个对象的内部状态变化时改变其行为&#xff0c; 使其看上去就像改变了自身所属的类一样。 问题 状态模式与有限状态机 的概念紧密相关。 有限状态机。 其主要思想是程序在任意时刻仅可处于几…

《PySpark大数据分析实战》-18.什么是数据分析

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

Confluent 与阿里云将携手拓展亚太市场,提供消息流平台服务

10 月 31 日&#xff0c;杭州云栖大会上&#xff0c;阿里云云原生应用平台负责人丁宇宣布&#xff0c;Confluent 成为阿里云技术合作伙伴&#xff0c;合作全新升级&#xff0c;一起拓展和服务亚太市场。 本次合作伙伴签约&#xff0c;阿里云与消息流开创领导者 Confluent 将进一…

掌握函数式组件:迈向现代化前端开发的关键步骤(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Linux创建macvlan 测试bridge、private和vepa模式

Linux创建macvlan&#xff0c;测试bridge、private和vepa模式 最近在看Docker的网络&#xff0c;看到关于macvlan网络的介绍。查阅了相关资料&#xff0c;记录如下。 参考 1.Linux Macvlan 2.图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN 环境 操…

Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测

【遥感影像深度学习】系列的第一章,Python遥感影像深度学习的入门课程,介绍如何使用卷积神经网络(CNN)从卫星图像中分割云层 1、数据集 在本项目中,我们将使用 Kaggle 提供的 38-Cloud Segmentation in Satellite Images数据集。 该数据集由裁剪成 384x384 (适用…

十八、本地配置Hive

1、配置MYSQL mysql> alter user rootlocalhost identified by Yang3135989009; Query OK, 0 rows affected (0.00 sec)mysql> grant all on *.* to root%; Query OK, 0 rows affected (0.00 sec)mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)2、…

Web前端 ---- 【Vue】vue路由守卫(全局前置路由守卫、全局后置路由守卫、局部路由path守卫、局部路由component守卫)

目录 前言 全局前置路由守卫 全局后置路由守卫 局部路由守卫之path守卫 局部路由守卫之component守卫 前言 本文介绍Vue2最后的知识点&#xff0c;关于vue的路由守卫。也就是鉴权&#xff0c;不是所有的组件任何人都可以访问到的&#xff0c;需要权限&#xff0c;而根据权限…