Ubuntu18.04安装opensips一次过,实现sip语音视频通话
安装方式
- apt命令安装,不建议使用此方式
想要在ubuntu18.04(建议使用18.04,不出错)上通过apt命令安装的可以借鉴一下这篇文章,但是这篇文章中博主有错误并未解决,下面是解决方式
执行下列命令,使用 opensipsdbctl 创建数据库的时候会报错
opensipsdbctl create
# 错误信息为
ERROR: could not load the script in /usr/local//lib64/opensips/opensipsctl/opensipsdbctl.mysql for database engine MYSQL
ERROR: database engine not loaded - tried 'MYSQL'
解决方式,安装 opensips-mysql-module
apt install opensips-mysql-module
然后重新生成数据库
opensipsdbctl create
# 表创建完成后(提示的两个问题都选n)
然后结合上面博主的文章,也是一次过,无错误。⚠️这篇文章主要讲源码安装。
- 源码安装
网上资料基本是源码安装,也建议源码安装
opensips官方网站
Ubuntu18.04源码安装opensips步骤,一次过
安装依赖
apt update
apt install gcc -y
apt install g++ -y
apt install build-essential -y
# apt-get install mysql-server 如果mysql数据库不在本机,可以不用在本机安装数据库,如果要在本机安装mysql,自行安装配置
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
# libncurses5重要
apt-get install bison flex libncurses5 libncurses5-dev
下载程序,解压,进入到解压目录
- opensips目前最新是3.4.4,但是由于3.x之后版本砍了opensipsctlrc配置项,导致无法自动生成数据库,官方3.0版本后建议手动增加库,新增2张表,但是并没有明确表示如何新增用户,故建议大家不要使用3.0及之后的版本。本文以2.4.11版本为例。
wget https://download.opensips.org/opensips-2.4.11.tar.gz
//解压
tar -zxvf opensips-2.4.11.tar.gz
//切换目录
cd opensips-2.4.11
编译源码
- mark编译包
make menuconfig
- mark过程应该不报错,这样为正常
- 进入菜单,操作提示:空格/回车选择,q返回上一级
2.1 选择mysql模块
- 选择Configure Compile Options,再选择 Configure Excluded Modules,上下键翻滚选择,按空格选中安装mysql模块
2.2 设置配置文件安装位置 - 选择mysql模块后按q返回,选择Configure Install Prefix,回车默认安装在/usr/local/下,可以输入自己想安装的路径,比如:/usr/local/opensips/
2.3 保存修改 - 选择Save Changes 保存修改,提示需要libmysqlclient-dev不用理会,前面已经安装了
2.4 编译安装 - 按q返回,选择Compile And Install OpenSIPS后回车,开始编译,正常情况不会提示依赖问题,若有提示可能是某依赖装失败了需要重装,按Ctrl+c退出界面后用apt安装包,若包安装失败原因有很多,或许是apt源没配置对ubuntu的版本,又或许是兼容性,具体需要百度查询。
- 安装完成,提示 Press any to return to menuconfig 后按 Exit & Save All Changes 后大概按三次q退出
配置数据源
切换目录
cd /usr/local/etc/opensips
编辑opensipsctlrc文件(3.0版本后无此文件)
vim opensipsctlrc
- 配置项里的内容修改了只对本工具有效,这个工具用来生成opensips数据库和sip的用户名和密码用的工具
登录mysql,创建oepnsips用户
- 登录mysql后,创建opensips要用的新用户opensips,使用默认的用户名opensips和密码opensipsrw
mysql -h 127.0.0.1 -u root -p
# 输入root用户的密码,登录到mysql中
# 创建用户和密码
CREATE USER 'opensips'@'%' IDENTIFIED BY 'opensipsrw';
# 赋权
GRANT ALL ON opensips.* TO 'opensips'@'%';
flush privileges;
创建opensips数据库
//进入文件夹
cd /usr/local/sbin
//执行该命令后会让选择数据库编码,选择最后一个gb18030,或者gb2312,这两个都是适用于简体中文的字符集,是 GB2312 和 GBK 的扩展,支持简体中文、繁体中文及一些特殊字符
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.cfg-back
# 用生成的opensips_residential_xxx.cfg替换原先的opensips.cfg:
mv opensips_residential_2024-4-13_10:30: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:[email protected]:3360/opensips
创建账号
# 创建账号1000 密码123456
opensipsctl add 1000 123456
# 创建账号1001 密码123456
opensipsctl add 1001 123456
# 创建账号将在表subscriber新增一条记录,也可以在数据库直接修改
- 注意事项,异常项
# 如果创建用户时提示
“ERROR: domain unknown: use usernames with domain or set default domain in SIP_DOMAIN”,
# 可修改opensipsctlrc文件将SIP_DOMAIN设为本机域名或外网IP地址
启用
opensipsctl start
启动的时候会如果报错,报错信息为,按照我上面的步骤一般不会报错
ERROR: PID file /var/run/opensips.pid does not exist -- OpenSIPS start failed
查看系统日志信息 /var/log/syslog
# 里面记录了具体的错误信息,然后根据错误信息很容易解决
tail -f /var/log/syslog -n 500
# 错误信息为: 造成这个的原因就是udp和tcp的ip设置为了服务器的外网ip而不是内网ip
Apr 12 23:20:40 localhost /usr/local/sbin/opensips[2385]: INFO:core:mod_init: initializing TCP-plain protocol
Apr 12 23:20:40 localhost /usr/local/sbin/opensips[2385]: ERROR:core:udp_init_listener: bind(30, 0x7fc65b3aa734, 16) on 1.xx.xx.160: Cannot assign requested address
Apr 12 23:20:40 localhost /usr/local/sbin/opensips[2385]: ERROR:core:trans_init_all_listeners: failed to init listener [1.xx.xx.160], proto udp
Apr 12 23:20:40 localhost /usr/local/sbin/opensips[2385]: ERROR:core:main: failed to init all SIP listeners, aborting
常用命令
# 启动服务
sudo opensipsctl start
# 停止服务
sudo opensipsctl stop
# 重启服务
sudo opensipsctl restart
手机安装软件测试
- 安卓安装 Linphone
- 苹果安装Linphone
苹果如果app store是国内账号,得换成美国账号才能下载这个APP,可以下载其他的sip app,比如PortSIP,app store里面有很多类型的软件。
以Linphone为例
- 设置账号为1000的账号,另一个手机设置为1001的账号
- 两个手机就可以实现语音和视频通话了
-通话完成后在acc表会新增1条INVITE记录和一条BYE记录
opensips到此就搭建完成了
热门相关:超级英雄 剑道邪尊 超级英雄 功夫圣医 全民女神:重生腹黑千金