快速安装方式安装开源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.comServerAdmin webmaster@localhostDocumentRoot /var/www/htmlErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined<Directory /var/www/html/opensips-cp/web>Options Indexes FollowSymLinks MultiViewsAllowOverride NoneRequire all granted</Directory><Directory /var/www/html/opensips-cp>Options Indexes FollowSymLinks MultiViewsAllowOverride NoneRequire 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媒体服务器的集成等。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Settings中电池选项-Android13

Settings中电池选项-Android13 1、设置中界面2、电池计算2.1 充电时间计算2.1.1 BatteryUsageStats获取2.1.2 BatteryStatsImpl计算 2.2 电池剩余使用时间2.2.1 Estimate获取2.2.2 BatteryStatsImpl计算 3、电池信息来源4、命令模拟* 日志 [电池]Android 9.0 电池未充电与充电字…

[内功修炼]函数栈帧的创建与销毁

文章目录 1:什么是函数栈帧2:理解函数栈帧能解决什么问题呢3:函数栈帧的创建与销毁的解析3.1:什么是栈3.2:认识相关寄存器与汇编指令相关寄存器相关汇编指令 3.3 解析函数栈帧的创建和销毁3.3.1 预备知识3.3.2 详细解析一:调用main函数,为main函数开辟函数栈帧First:push前push…

华为云Windows Server服务器下,Node使用pm2-logrotate分割pm2日志,解决pm2日志内存占用过高的问题。

一、简介 PM2 是一个守护进程管理器&#xff0c;它将帮助您管理和保持您的应用程序在线。PM2 入门很简单&#xff0c;它以简单直观的 CLI 形式提供&#xff0c;可通过 NPM 安装。官网地址&#xff1a;https://pm2.keymetrics.io/ 二、问题&#xff1a;pm2日志内存占用过高&am…

12.25

led.c #include "led.h" void all_led_init() {RCC_GPIO | (0X3<<4);//时钟使能GPIOE_MODER &(~(0X3<<20));//设置PE10输出GPIOE_MODER | (0X1<<20);//设置PE10为推挽输出GPIOE_OTYPER &(~(0x1<<10));//PE10为低速输出GPIOE_OSPEED…

ElasticSearch之RestClient笔记

1. ElasticSearch 1.1 倒排索引 1.2 ElasticSearch和Mysql对比 1.3 RestClient操作 导入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.15.…

linux:下载、网络请求、端口

一&#xff1a;ping命令 可以通过ping命令,检查指定的网络服务器是否是可联通状态 语法: ping [-c num] ip或主机名 1、选项&#xff1a;-c,检查的次数&#xff0c;不使用-c选项&#xff0c;将无限次数持续检查 2、参数&#xff1a;ip或主机名&#xff0c;被检查的服务器的…

时序预测 | Matlab实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测 | Matlab实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-BiLSTM麻雀算…

LabVIEW在齿轮箱故障诊断中的应用

LabVIEW在齿轮箱故障诊断中的应用 在现代机械工业中&#xff0c;齿轮箱作为重要的传动设备&#xff0c;其性能稳定性对整体机械系统的运行至关重要。故障的及时诊断和处理不仅保障了设备的稳定运行&#xff0c;还减少了维护成本。利用LabVIEW强大数据处理和仿真能力&#xff0…

jenkins Job华为云EIP变更带宽

引言: 在数字化时代&#xff0c;云服务资源的弹性管理是企业降低运营成本、提高效率的关键手段。通过弹性公网IP&#xff08;EIP&#xff09;服务&#xff0c;企业可以实现按需计费&#xff0c;优化网络支出。然而&#xff0c;根据业务流量的不同阶段调整计费模式&#xff0c;…

STM32实现流水灯

led.c #include"led.h"void Led_Init(void) {GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_ModeGPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_PinGPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_…

Android---Kotlin 学习009

继承 在 java 里如果一个类没有被 final 关键字修饰&#xff0c;那么它都是可以被继承的。而在 kotlin 中&#xff0c;类默认都是封闭的&#xff0c;要让某个类开放继承&#xff0c;必须使用 open 关键字修饰它&#xff0c;否则会编译报错。此外在子类中&#xff0c;如果要复写…

基于电商场景的高并发RocketMQ实战-Commitlog基于内存的高并发写入优化、基于JVM offheap的内存读写分离机制

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…

HBase基础知识(五):HBase 对接 Hadoop 的 MapReduce

通过 HBase 的相关 JavaAPI&#xff0c;我们可以实现伴随 HBase 操作的 MapReduce 过程&#xff0c;比如使用 MapReduce 将数据从本地文件系统导入到 HBase 的表中&#xff0c;比如我们从 HBase 中读取一些原 始数据后使用 MapReduce 做数据分析。 1 官方 HBase-MapReduce 1&am…

AI数字人可以用在哪些行业,对这些行业有什么好处

引言&#xff1a; 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;的发展已经深入到各个领域&#xff0c;尤其在旅游业、政务党建、城市园区、品牌宣传和乡村振兴等领域&#xff0c;AI数字人的应用正逐步改变我们的生活方式。 一.AI数字人在旅游业中的应…

Android 11.0 系统默认打开OEM解锁开关功能实现

1.前言 在11.0的系统rom定制化开发中,在9.0系统以后为了设备的安装,系统开始启用oem机制,所以在adb push文件就需要先oem解锁,然后才可以 进行相关操作,所以就需要默认打开oem解锁的开关,来方便oem解锁功能的实现 如图: 2.系统默认打开OEM解锁开关功能实现的核心类 pac…

微短剧,会成为长视频的“救命稻草”吗?

职场社畜秒变霸道总裁&#xff0c;普通女孩穿越成为艳丽皇妃.......这样“狗血”的微短剧&#xff0c;最近不仅在国内各大视频平台上异常火爆&#xff0c;而且还直接火出了国外。 所谓微短剧&#xff0c;就是单集时长从几十秒到十几分钟的剧集&#xff0c;有着相对明确的主题和…

redis—String字符串

目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 前言 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型&#xff0c;而且其他几种数据结构也都是在字符串类似基础.上构建的&#xff0c;例如列表…

JavaEE:CAS详解

一.什么是CAS CAS: 全称 Compare and swap &#xff0c;字面意思 :” 比较并交换 “ &#xff0c;一个 CAS 涉及到以下操作&#xff1a; 我们假设内存中的原数据V&#xff0c;旧的预期值A&#xff0c;需要修改的新值B。 我们来进行操作&#xff1a; 1. 比较 V 和 A 是否相等。…

vue3 全局配置Axios实例

目录 前言 配置Axios实例 页面使用 总结 前言 Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 环境。它提供了一种简单、一致的 API 来处理HTTP请求&#xff0c;支持请求和响应的拦截、转换、取消请求等功能。关于它的作用&#xff1a; 发起 HTTP …

VMware虚拟机安装Ubuntu系统教程

所使用的文件如下&#xff1a; VMware Workstation 17 Pro ubuntu-22.04.3-desktop-amd64.iso 一、ubuntu 命名规则及各版本一览表 1.ubuntu 命名规则&#xff1a; 例如&#xff1a;ubuntu 16.04 LTS 是长期维护版本&#xff1b;ubuntu 17.04 是新特性版本 前两位数字为发…