在ubuntu 12.04 x64 搭建VOIP server

通过ubuntu 12.04 x64 部署opensips、rtpproxy、mediaproxy,实现了sip服务、媒体转发等服务。通过配置与测试,还支持ICE方式建立点对点的音视频会话。花了些时间折腾,大家如有问题请留言沟通。


软件版本:

opensips:  opensips_1_10 (下载编译再安装)
rtpproxy:  Basic version: 20040107 (直接安装)

mediaproxy:  mediaproxy-2.5.2 (下载编译再安装)

客户端: Microsip 测试


安装与配置的步骤:


一、opensips

  • 编译opensips 1.10

make menuconfig

如下配置参数:

1 Configure Compile Options -> Configure Excluded Modules : 

[*] db_mysql 

[*] dialplan

2 Configure Compile Options -> Configure Install Prefix :/usr/local/sbin/

3 Compile And Install OpenSIPS,直此安装完成。(如果少了些什么库,请apt-get install xxx)


  • 生成脚本

安装位置在/usr/local/sbin。其中,sbin为程序目录,etc为配置参数所在目录,还有lib64和share两个目录。

利用 /usr/local/sbin/sbin/osipsconfig 生成配置文件,具体操作

1 Generate OpenSIPS Script ->Residential Script  -> Configure Residential Script : 

[*] ENABLE_TCP

[*] USE_AUTH

[*] USE_DBACC

[*] USE_DBUSRLOC

[*] USE_NAT

 

2 Save Residential Script

3 Generate Residential Script:生成配置文件位于/usr/local/sbin//etc/opensips/opensips_residential_xxx.cfg


  • 编辑参数

进入/usr/local/sbin/etc/opensips,覆盖旧的配置文件: cp opensips_residential_xxx.cfg opensips.cfg 

编辑opensips.cf文件,修改如下(注意红色部分):

####### Global Parameters #########

#debug=3
#log_stderror=no
log_facility=LOG_LOCAL1

fork=yes
children=4

/* uncomment the following lines to enable debugging */
debug=6
#fork=no
log_stderror=yes

listen=udp:x.x.x.x:5060   # CUSTOMIZE ME

disable_tcp=yes
disable_tls=yes


#### URI module

loadmodule "uri.so"
modparam("uri", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
modparam("uri", "use_uri_table", 0)

#### USeR LOCation module
loadmodule "usrloc.so"
modparam("usrloc", "nat_bflag", "NAT")
modparam("usrloc", "db_mode",   2)
modparam("usrloc", "db_url",  "mysql://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME


#### ACCounting module
loadmodule "acc.so"
/* what special events should be accounted ? */
modparam("acc", "early_media", 0)
modparam("acc", "report_cancels", 0)
/* by default we do not adjust the direct of the sequential requests.
   if you enable this parameter, be sure the enable "append_fromtag"
   in "rr" module */
modparam("acc", "detect_direction", 0)
modparam("acc", "failed_transaction_flag", "ACC_FAILED")
/* account triggers (flags) */
modparam("acc", "db_flag", "ACC_DO")
modparam("acc", "db_missed_flag", "ACC_MISSED")
modparam("acc", "db_url",
        "mysql://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME


#### AUTHentication modules
loadmodule "auth.so"
loadmodule "auth_db.so"
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url",
        "mysql://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME

modparam("auth_db", "load_credentials", "")

####  NAT modules
loadmodule "nathelper.so"
modparam("nathelper", "natping_interval", 10)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "received_avp", "$avp(received_nh)")


loadmodule "rtpproxy.so"
modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:7722") # CUSTOMIZE ME

#### MediaProxy module
loadmodule "mediaproxy.so"
modparam("mediaproxy", "disable", 0)
modparam("mediaproxy", "mediaproxy_socket", "/var/run/mediaproxy/dispatcher.sock")
modparam("mediaproxy", "mediaproxy_timeout", 1000)
modparam("mediaproxy", "signaling_ip_avp", "$avp(nat_ip)")
modparam("mediaproxy", "media_relay_avp", "$avp(media_relay)")
modparam("mediaproxy", "ice_candidate", "low-priority")


配置opensipsctlrc,修改内容如下(注意红色部分):

## your SIP domain
SIP_DOMAIN=x.x.x.x

## chrooted directory
# $CHROOT_DIR="/path/to/chrooted/directory"

## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT,
## by default none is loaded
# If you want to setup a database with opensipsdbctl, you must at least specify
# this parameter.
DBENGINE=MYSQL

## database host
DBHOST=localhost

## database name (for ORACLE this is TNS name)
DBNAME=opensips

# database path used by dbtext or db_berkeley
# DB_PATH="/usr/local/etc/opensips/dbtext"

## database read/write user
DBRWUSER=opensips

## password for database read/write user
DBRWPW="opensipsrw"

## database super user (for ORACLE this is 'scheme-creator' user)
DBROOTUSER="root"

# user name column
USERCOL="username"


  • 建立数据库

进入/usr/local/sbin/sbin ,

./opensipsdbctl create

  • 建立sip帐户

./opensipsctl add test test

  • 开启sip服务(注:一般在开启rtpproxy, mediaproxy服务后,最后再开启sip服务)

./opensipsctl start


二、安装并配置rtpproxy

参考http://blog.csdn.net/zhaozhencn/article/details/18269107


三、编译并安装mediaproxy: (注:需要安装python库)

./setup.py build
./setup.py setup

我遇到的问题: 运行media-relay --no-fork, 出现media-relay  Segmentation fault, 导致程序崩溃。

需要下载一个libgcrypt11_1.5.0-3ubuntu0.1+agp_amd64.deb 安装一下,问题解决。


开启服务:

service mediaproxy-relay start

service mediaproxy-dispatcher start





相关推荐
<p> <span style="font-size:14px;color:#E53333;">限时福利1:</span><span style="font-size:14px;">购课进答疑群专享柳峰(刘运强)老师答疑服务</span> </p> <p> <br /> </p> <p> <br /> </p> <p> <span style="font-size:14px;"></span> </p> <p> <span style="font-size:14px;color:#337FE5;"><strong>为什么需要掌握高性能的MySQL实战?</strong></span> </p> <p> <span><span style="font-size:14px;"><br /> </span></span> <span style="font-size:14px;">由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一个程序员能力和薪资的标准之一。</span> </p> <p> <br /> </p> <p> <span style="font-size:14px;">为了让大家快速系统了解高性能MySQL核心知识全貌,我为你总结了</span><span style="font-size:14px;">「高性能 MySQL 知识框架图」</span><span style="font-size:14px;">,帮你梳理学习重点,建议收藏!</span> </p> <p> <br /> </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202006031401338860.png" /> </p> <p> <br /> </p> <p> <span style="font-size:14px;color:#337FE5;"><strong>【课程设计】</strong></span> </p> <p> <span style="font-size:14px;"><br /> </span> </p> <p> <span style="font-size:14px;">课程分为四大篇章,将为你建立完整的 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库的性能调优、高并发、海量业务处理、面试解析等。</span> </p> <p> <span style="font-size:14px;"><br /> </span> </p> <p> <span style="font-size:14px;"></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;"><strong>一、性能优化篇:</strong></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;">主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 的索引结构 B+Tree ,学员能够从根本上弄懂为什么有些 SQL 走索引、有些不走索引,从而彻底掌握索引的使用和优化技巧,能够避开很多实战中遇到的“坑”。</span> </p> <p style="text-align:justify;"> <br /> </p> <p style="text-align:justify;"> <span style="font-size:14px;"><strong>二、MySQL 8.0新特性篇:</strong></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;">主要包括窗口函数和通用表表达式。企业中的许多报表统计需求,如果不采用窗口函数,用普通的 SQL 语句是很难实现的。</span> </p> <p style="text-align:justify;"> <br /> </p> <p style="text-align:justify;"> <span style="font-size:14px;"><strong>三、高性能架构篇:</strong></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;">主要包括主从复制和读写分离。企业的生产环境中,很少采用单台MySQL节点的情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可用架构的实现是非常有必要的。</span> </p> <p style="text-align:justify;"> <br /> </p> <p style="text-align:justify;"> <span style="font-size:14px;"><strong>四、面试篇:</strong></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;">程序员获得工作的第一步,就是高效的准备面试,面试篇主要从知识点回顾总结的角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪的工作机会。</span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页