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或者其他的开源软件时,一些用户经常犯的错误时,不咨询官方资源,不看官方说明,根据自己的喜好或者其他业务要求原因,想当然安装一个操作系统。因此,最后导致很多支持包错误,安装错误等问题。这里,笔者不是说其他的操作系统不支持或者不能安装,为了减少时间浪费,最好按照官方推荐来配置,除非有业务需求必须安装到一个指定的操作系统,否则,笔者建议大家按照官方的配置建议来安装。这里,笔者安装的测试环境包括:
- Debian 10.6(buster) 版本,当然用户也可以安装其他的操作系统或者其他的版本,但是“可能”发生支持包错误(至少目前笔者测试安装ubutun-18/20发生了错误)。根据官方推荐,安装Debian 10.6(buster)版本。
- OpenSIP-3.1 稳定版
- 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媒体服务器的集成等。