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)

然后结合上面博主的文章,也是一次过,无错误。⚠️这篇文章主要讲源码安装。

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

opensips其它可下载版本

编译源码

  1. mark编译包
make menuconfig
  • mark过程应该不报错,这样为正常
  1. 进入菜单,操作提示:空格/回车选择,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:123456@192.168.1.15: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到此就搭建完成了

posted @ 2024-04-13 12:07  face小鱼  阅读(37)  评论(0编辑  收藏  举报