ubuntu12.04安装配置opensips,搭建voip服务器

通过部署opensips, opensips-cp, rtpproxy, mediaproxy实现voip通话。测试可以通过安卓原生客户端验证,CSipSimple客户端通话(拨打/接收)

1.安装opensips
opensips需要编译源码安装
官网:http://opensips.org
文件目录:http://opensips.org/pub/opensips/1.11.2/src/

wget http://opensips.org/pub/opensips/1.11.2/src/opensips-1.11.2_src.tar.gz
tar xcf opensips-1.11.2_src.tar.gz
cd opensips-1.11.2-tls/
make menuconfig

在menuconfig中选择—>Configure Compile Options—> Configure Excluded Modules
方向键向下滚动,按空格选中[*] db_mysql

按q键返回上一级,选择—> Configure Install Prefix,输入/回车表示安装在/目录下的配置目录而不是/usr/local目录下。

选择 —> Save Changes 保存修改。

按q返回,选择 —> Compile And Install OpenSIPS,回车安装。
安装完成后会将配置文件放在/etc/opensips目录下。运行文件在/sbin目录下。
如果出现依赖错误,先通过apt-get安装依赖。

2.配置opensips
进入/etc/opensips目录,运行osipsconfig命令

cd /etc/opensips
osipsconfig

依次选择—> Generate OpenSIPS Script —> Residential Script —> Configure Residential Script
选中如下几项
[*] ENABLE_TCP
[*] USE_ALIASES
[*] USE_AUTH
[*] USE_DBACC
[*] USE_DBUSRLOC
[*] USE_DIALOG
[*] USE_NAT
按q返回,选择 —> Generate Residential Script 回车,生成新的配置文件。按q(三次)退出命令
将新生成的opensips_residential_*.cfg文件重命名为opensips.cfg编辑

mv opensips_residential_2014-7-10_16:19:22.cfg opensips.cfg
vi opensips.cfg

修改为如下内容

debug=3
log_stderror=no
log_facility=LOG_LOCAL0

fork=yes
children=4

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

/* uncomment the next line to enable the auto temporary blacklisting of 
   not available destinations (default disabled) */
#disable_dns_blacklist=no

/* uncomment the next line to enable IPv6 lookup after IPv4 dns 
   lookup failures (default disabled) */
#dns_try_ipv6=yes

/* comment the next line to enable the auto discovery of local aliases
   based on revers DNS on IPs */
auto_aliases=no

alias=xdty.org # 增加alias,修改为你的域名

listen=udp:域名对应ip地址:6060   # CUSTOMIZE ME

disable_tcp=no
listen=tcp:域名对应ip地址:6060   # CUSTOMIZE ME

disable_tls=yes

####### Modules Section ########

#set module path
mpath="/lib64/opensips/modules/" # 增加一个斜杠

#### SIGNALING module
loadmodule "signaling.so"

#### StateLess module
loadmodule "sl.so"

#### Transaction Module
loadmodule "tm.so"
modparam("tm", "fr_timer", 5)
modparam("tm", "fr_inv_timer", 30)
modparam("tm", "restart_fr_on_each_reply", 0)
modparam("tm", "onreply_avp_mode", 1)

#### Record Route Module
loadmodule "rr.so"
/* do not append from tag to the RR (no need for this script) */
modparam("rr", "append_fromtag", 0)

#### MAX ForWarD module
loadmodule "maxfwd.so"

#### SIP MSG OPerationS module
loadmodule "sipmsgops.so"

#### FIFO Management Interface
loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
modparam("mi_fifo", "fifo_mode", 0666)

#### URI module
loadmodule "uri.so"
modparam("uri", "use_uri_table", 0)
#增加这一行,不然报错
modparam("uri", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")

#### MYSQL module
loadmodule "db_mysql.so"

#### 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

#### REGISTRAR module
loadmodule "registrar.so"
modparam("registrar", "tcp_persistent_flag", "TCP_PERSISTENT")
modparam("registrar", "received_avp", "$avp(received_nh)")
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)

#### 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", "")

#### ALIAS module
loadmodule "alias_db.so"
modparam("alias_db", "db_url",
    "mysql://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME
    
#### DIALOG module
loadmodule "dialog.so"
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "default_timeout", 21600)  # 6 hours timeout
modparam("dialog", "db_mode", 2)
modparam("dialog", "db_url",
    "mysql://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME

####  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:22222") # 修改端口

#增加下边这一段
#### 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文件

vi opensipsctlrc

去掉所有DB相关的注释。

SIP_DOMAIN=xdty.org
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=opensips
DB_PATH="/usr/local/etc/opensips/dbtext"
DBRWUSER=opensips
DBRWPW="opensipsrw"
DBROOTUSER="root"
USERCOL="username"

为opensips新建数据库,增加域名及用户

opensipsdbctl create
opensipsctl domain add xdty.org
opensipsctl add 10000 123456
opensipsctl add 10001 123456

3.安装rtpproxy并配置

apt-get install rtpproxy
vi /etc/default/rtpproxy

修改为如下内容

CONTROL_SOCK=udp:127.0.0.1:22222

# Additional options that are passed to the daemon.
EXTRA_OPTS=""
LISTEN_ADDR=你的域名对应ip地址
EXTRA_OPTS="-l ${LISTEN_ADDR}"

启动rtpproxy

killall rtpproxy
/etc/init.d/rtpproxy start

如果rtpproxy启动失败,请检查/etc/init.d/rtpproxy脚本DAEMON路径是否正确,默认为DAEMON=/usr/sbin/$NAME,可能要改为DAEMON=/usr/bin/$NAME

4.安装并配置mediaproxy
导入源密钥,增加mediaproxy的源到/etc/apt/sources.list

wget http://download.ag-projects.com/agp-debian-gpg.key 
apt-key add agp-debian-gpg.key
vi /etc/apt/sources.list

最后位置添加

deb    http://ag-projects.com/ubuntu precise main 
deb-src http://ag-projects.com/ubuntu precise main

安装mediaproxy

apt-get update
apt-get install mediaproxy-dispatcher mediaproxy-relay mediaproxy-web-sessions

进入/etc/mediaproxy/tls目录,拷本密钥文件,修改配置文件

cd /etc/mediaproxy/tls/
cp /usr/share/doc/mediaproxy-common/tls/* .
cd ..
vi config.ini

修改为类似如下内容

[Relay]
dispatchers = 106.186.23.149
passport = None
relay_ip = 106.186.23.149
port_range = 50000:60000
log_level = DEBUG
stream_timeout = 90
on_hold_timeout = 7200
reconnect_delay = 10
traffic_sampling_period = 15
[Dispatcher]
socket_path = dispatcher.sock
listen = 106.186.23.149
listen_management = 106.186.23.149
management_use_tls = yes
passport = None

management_passport = None
log_level = DEBUG
relay_timeout = 5
[TLS]
certs_path = tls
verify_interval = 300
[Database]
[Radius]
[OpenSIPS]
socket_path = /var/run/opensips/socket
max_connections = 10

启动mediaproxy服务

media-dispatcher restart
media-relay restart

5.启动服务并检验
修改日志文件配置,是opensips的日志保存在/var/log/opensips.log

touch /var/log/opensips.log
chmod 777 /var/log/opensips.log
vi /etc/rsyslog.d/opensips.conf

增加如下内容

local0.*             /var/log/opensips.log

为opensips.log文件增加vim的颜色自动化

vi ~/.vim/filetype.vim

增加如下内容

au BufNewfile,BufRead /var/log/* set filetype=messages

重启syslog服务,启动opensips

service rsyslog restart
opensipsctl start

如果启动失败,查看/var/log/opensips.log文件查找错误。

服务启动后,防火墙开启tcp及udp的端口

iptables -I INPUT -p tcp --dport 6060 -j ACCEPT
iptables -I INPUT -p udp --dport 6060 -j ACCEPT
iptables-save

然后在http://www.yougetsignal.com/tools/open-ports/查看端口是否打开

手机测试端安装CSipSimple或其他sip客户端测试。注意CSipSimple服务器输入为类似xdty.org:6060 域名:端口的形式,拨打对方电话时直接输入帐号名10001而不需要输入域名。如果可以通话就表示配置成功了。

或者使用原生的系统拨号盘,在设置->通话设置->互联网电话设置|账户->接听来电(勾选)|添加账户->保存。当显示为”主账户。接听电话”时即配置成功。拨打电话时需要加入类似邮箱地址的后缀即10001@xdty.org,如果不能输入非数字字符可以粘贴或者添加一个新的联系人,在“增加其他字段”中添加“互联网电话”,输入10001@xdty.org,之后点击此联系人拨打互联网电话即可。

下文增加网页管理功能。

6.安装配置opensips-cp
下载最新版本的opensips-cp,位置在http://sourceforge.net/projects/opensips-cp/
可以根据INSTALL文件安装,主要配置一些数据库的操作。
将文件解压,复制到/var/www/目录下重命名为opensips
安装一些依赖关系

pear install MDB2#mysql
pear install log

更改权限

chown www-data:www-data web -R

进入config/tools/admin/add_admin/目录,导入数据表

mysql -Dopensips -p<ocp_admin_privileges.mysql
mysql -uroot opensips
INSERT INTO ocp_admin_privileges (username,password,ha1,available_tools,permissions) values ('admin','admin',md5('admin:admin'),'all','all');

进入config/tools/system/cdrviewer/目录

mysql -Dopensips -p < cdrs.mysql
mysql -Dopensips -p<opensips_cdrs.mysql

进入cron_job目录,修改文件配置数据库信息

vi generate-cdrs_mysql.sh

注意,generate-cdrs_mysql.sh这个文件里的“call opensips_cdrs_1_6()”可能要改为“call opensips_cdrs()”,必须要与opensips_cdrs.mysql里定义的名称一致。
进入config/tools/system/smonitor/目录,导入数据库并添加定时任务。

mysql -Dopensips -p < tables.mysql
vi /etc/crontab
*/3 * * * * root /var/www/opensips/cron_job/generate-cdrs_mysql.sh
* * * * * root php /var/www/opensips-cp/cron_job/get_opensips_stats.php > /dev/null

打开浏览器访问http://网址/opensips,使用admin/admin登录,登录后可以修改用户名和密码。

参考资料:
http://www.cnblogs.com/bjzhanghao/archive/2013/02/13/2910903.html
http://www.docin.com/p-163183480.html
http://www.linuxidc.com/Linux/2014-01/95847.htm

Tags: mediaproxy opensips opensips web opensips-cp rtpproxy voip

@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

posted on 2016-11-08 10:42 聂文龙 阅读(6) 评论(0)  编辑 收藏 引用

ubuntu12.04安装配置opensips,搭建voip服务器相关推荐

  1. Ubuntu12.04安装配置Theano

    上次写了一个关于DL的开篇内容,本来说是要继续跟进的,后来教研室里面出了一些事情,加上写论文.和隔壁教研室做实验,就一直拖到现在.早就让小K配置环境研究研究Theano,这货和我一样也发拖延症了,理由 ...

  2. 【数据库】Ubuntu12.04安装配置Redis3.0

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  3. ubuntu12.04 安装配置jdk1.7

    第一步:下载jdk-7-linux-i586.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586 ...

  4. Ubuntu12.04安装配置Nginx Tomcat环境

    2019独角兽企业重金招聘Python工程师标准>>> 1.安装Nginx apt-get install nginx 然后访问http://localhost 显示 2.安装Tom ...

  5. ubuntu12.04嵌入式开发环境搭建(各种问题、各种配置)

    ubuntu-12.04嵌入式开发环境搭建 先安装ubuntu-16.04  *** 想使用root用户登陆的,操作如下 给root用户设定一个密码 supreme@supreme:~# sudo p ...

  6. 【转】ubuntu16.04安装配置tftp服务

    转自:ubuntu16.04安装配置tftp服务_carspiriter的博客-CSDN博客_ubuntu安装tftp 首先声明:tftp是client客户端,tftpd是server服务器端,d应该 ...

  7. ndnsim r语言 ubuntu_Ubuntu14.04安装配置ndnSIM

    Ubuntu14.04安装配置ndnSIM 预环境 Ubuntu14.04官方系统 请先使用sudo apt-get update更新一下源列表 安装步骤 安装boost-lib sudo apt-g ...

  8. Ubuntu12.04下配置Eclipse+PyDev

    开发平台:Ubuntu12.04 IDE:Eclipse3.7.2 python版本:python3.4.4 搭建Eclipse+PyDev的开发环境,在网上找了一些教程,有一些错误,尝试了许久,也走 ...

  9. Ubuntu 20.04 安装配置 GitLab

    Ubuntu 20.04 安装配置 GitLab GitLab GitLab 官网:https://about.gitlab.com/ GitLab CE 或 Community Edition 是一 ...

  10. RHEL下安装配置基于2台服务器的MYSQL集群

    一.介绍 ======== 这篇文档旨在介绍如何在RHEL下安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽然这是基于2台服务器的 ...

最新文章

  1. 给GridView增加求和行
  2. CocoaPod出现“target overrides the `OTHER_LDFLAGS`……的解决方案
  3. 为什么docker比VM快?
  4. 文件上传之传统方式上传代码回顾
  5. C#黔驴技巧之实现统计结果排名
  6. 海洋CMS仿RiPro主题风格自适应模板
  7. UI设计灵感|精美的登录页让你对这些网站好感倍生!
  8. 40万亿“新基建”来了!程序员的新翻身机会终于也来了!
  9. C语言中的逗号操作符
  10. 《数学之美》—闪光的不一定是金子
  11. 【codeforces】【01字符串匹配】Equalize【Manthan, Codefest 18 (rated, Div. 1 + Div. 2)】
  12. 计算机算法分析与设计心得体会,算法设计与分析课程的心得体会
  13. wps软件打不开共享超链接_wps excel的超链接打不开怎么办?
  14. 【小万出生记——第3篇】小万升级为家用服务机器人
  15. 用html制作一个网站的步骤,新手怎么做网页 新手如何制作一个网页
  16. 迅雷下载VS2015地址,快、狠,准
  17. 如何自学Java 经典
  18. 网易2018校园招聘:重排数列 [python]
  19. excel批量文件改名批量加后缀
  20. 几个优质的涵盖了各种语言的项目,快来看看吧

热门文章

  1. 2021年啤酒酿造行业发展研究报告
  2. windows性能监视器基本指标
  3. sca60c使用程序_第3部分:SCA应用程序的工作负载平衡的WebSphere MQ客户端连接
  4. neovim内置lsp实现Java语言补全
  5. ILSpy反编译exe文件,ResourceNet4修改properties,生成新的exe文件
  6. SPSS因子分析案例
  7. 乌班图系统设置系统语言,以及中文输入法
  8. SpringBoot启动后启动内嵌浏览器
  9. 基于Springboot实现仓库管理系统
  10. apk一键脱壳工具_海量破解、修改、无广告软件一键获取!一个工具就能轻松搞定!...