yum install pkg-config
yum install nasm
yum install libgnomeui-devel
yum install openssl-devel
yum install libevent2-devel
yum install pcre-devel
yum install xmlrpc-c-devel
yum install iptables-devel
yum install epel-release.noarch
yum install json-glib-devel
yum install libpcap-devel
yum install flex
yum install bison
yum install libcurl-devel.x86_64
yum install libxml2-devel.x86_64
从网站https://pkgs.org/download/hiredis下载以下两个包并安装:
rpm -ivh hiredis-last-0.13.3-1.el7.remi.x86_64.rpm
rpm -ivh hiredis-last-devel-0.13.3-1.el7.remi.x86_64.rpm
sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
若无法安装,参考1.1.4手动下载rpm包安装
yum install mysql-community-server
yum install mysql-community-devel.x86_64
在/etc/my.cnf 末尾
default-storage-engine=MyISAM
sudo systemctl enable mysqld
sudo systemctl start mysqld
sudo grep 'temporary password' /var/log/mysqld.log
随后输入1.1.3.4步骤显示的密码,随后会要求重新输入新密码,必须按要求输入(大小写字母,特殊符号)
mysql -u root -p
方便后面调试登录mysql后,输入:
set global validate_password_policy=0;
use mysql;
update user set authentication_string=password(‘12345678’) where user='root';
flush privileges;
[root@centos-linux ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@centos-linux ~]# rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps
官网最新的mysql安装包是mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar下载地址
[root@centos-linux ~]# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
然后解压
[root@linux_node_1 src]# tar -xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
依次执行(几个包有依赖关系,所以执行有先后)下面命令安装
rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.16-1.el7.x86_64.rpm
余下步骤与从1.1.3.3一致。
mkdir -p /usr/local/src/kamailio-5.1
cd /usr/local/src/kamailio-5.1
git clone --depth 1 --no-single-branch https://github.com/kamailio/kamailio kamailio
cd kamailio
git checkout -b 5.1 origin/5.1
make cfg
修改vim src/modules.lst:
include_modules= db_mysql rtpproxy rtpengine
若需要修改生成目录,使用:make PREFIX="/usr/local/kamailio-5.1" cfg
• kamailio - Kamailio SIP server
• kamdbctl - script to create and manage the Databases
• kamctl - script to manage and control Kamailio SIP server
• kamcmd - CLI - command line tool to interface with Kamailio SIP server
添加环境变量:
PATH=$PATH:/usr/local/sbin
export PATH
步骤1.3.2 编译生成的模块会安装在:
/usr/local/lib/kamailio/modules/
vim -w /usr/local/etc/kamailio/kamctlrc:
我列出我修改的部分,对应意思参照配置文件,还有部分列在附录“Kamailio配置文件修改部分”:
DBENGINE=MYSQL
DBHOST=localhost
DBPORT=5060
DBNAME=kamailio
DBRWUSER=“kamailio”
DBRWPW=“12345678”
DBROUSER=“kamailioro”
DBROPW=“12345678”
DBACCESSHOST=10.10.200.77
DBROOTUSER=“root”
DBROOTPW=“12345678”
CHARSET=“latin1”
RPCFIFOPATH="/var/run/kamailio/kamailio_rpc_fifo"
PID_FILE=/var/run/kamailio/kamailio.pid
/usr/local/sbin/kamdbctl create
按提示输入密码等即可
可从配置文件夹直接拷贝
vi /usr/local/etc/kamailio/kamailio.cfg
若从配置文件夹直接拷贝kamailio.cfg,在配置文件查找“10.10.200.77”和“192.168.200.77”,修改成主机上的两个网段的地址.可以忽略一下两个步骤
若不拷贝文件,注意附录中“Kamailio配置文件修改部分”红色字体需要修改
#!define WITH_MYSQL
#!define WITH_USRLOCDB
#!define WITH_NAT
因为1.4.1步骤修改了配置文件kamctlrc中的密码(DBRWPW、 DBROPW、DBROOTPW),所以对应修改kamailio配置文件的:(红色字体)
#!ifndef DBURL
#!define DBURL "mysql://kamailio:12345678@localhost/kamailio"
#!endif
注释#loadmodule “rtpproxy.so” ,添加loadmodule “rtpengine.so”
注释modparam(“rtpproxy”, “rtpproxy_sock”, “udp:127.0.0.1:7722”)
添加modparam (“rtpengine”, “rtpengine_sock”, “udp:127.0.0.1:7722”)
注释rtpproxy_manage(“co”);
添加rtpengine_manage(“codec-strip-all codec-transcode-PCMA codec-transcode-PCMU codec-transcode-G729”);
注释rtpproxy_manage(“cor”);
添加rtpengine_manage(“codec-strip-all codec-transcode-PCMA codec-transcode-PCMU codec-transcode-G729”);
将kamailio.init复制到/etc/init.d/,并重命名kamailioc
p /usr/local/src/kamailio-5.1/kamailio/pkg/kamailio/centos/7/kamailio.init /etc/init.d/kamailio
chmod 755 /etc/init.d/kamailio
修改内容:
KAM=/usr/local/sbin/kamailio
KAMCFG=/usr/local/etc/kamailio/kamailio.cfg
PROG=kamailio
HOMEDIR=/var/run/$PROG
PID_FILE=/var/run/$PROG/kamailio.pid
LOCK_FILE=/var/lock/subsys/kamailio
DEFAULTS=/etc/default/kamailio
复制kamailio.sysconfig 复制到 /etc/default/
cp /usr/local/src/kamailio-5.1/kamailio/pkg/kamailio/centos/7/kamailio.sysconfig /etc/default/kamailio
修改RUN_KAMAILIO=yes,DUMP_CORE=yes
添加pid文件:mkdir -p /var/run/kamailio
添加用户kamailio和用户组kamailio
groupadd kamailio
adduser --system --gid kamailio --shell /bin/false --home-dir /var/run/kamailio kamailio
set ownership to /var/run/kamailio
chown kamailio:kamailio /var/run/kamailio
从https://www.ffmpeg.org获取源码
从官网或者git clone git://git.videolan.org/x264.git获取x264源码
从 http://www.tortall.net/projects/yasm/releases/ 获取yasm
./configure
make
make install
./configure --enable-shared --enable-pic
make
make install
从git clone https://github.com/BelledonneCommunications/bcg729.git 源码
cmake3 . -DCMAKE_INSTALL_PREFIX=/usr/local/
make && make install
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
从git clone https://github.com/TimothyGu/libilbc.git 获取源码
执行安装
cmake3 . -DCMAKE_INSTALL_PREFIX=/usr/local/
make && make install
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
http://sourceforge.net/projects/opencore-amr/下载源码:
opencore-amr-0.1.5.tar.gz,
vo-amrwbenc-0.1.3.tar.gz
http://www.quut.com/gsm/下载gsm源码
编译前需要修改makefile,在第47行加上- fPIC,然后执行编译即可
cp ../gsm-1.0-pl18/lib/libgsm.a /usr/local/lib64/
cp inc/* /usr/local/include/
./configure --enable-libx264 --disable-yasm --enable-shared --enable-gpl --enable-nonfree --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libvo-amrwbenc --enable-version3 --extra-libs=-ldl
Make
make install
修改文件:/etc/ld.so.conf,在文件尾添加一行:/usr/local/lib,执行ldconfig
修改环境变量:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
git clone https://github.com/sipwise/rtpengine.git
进入rtpengine/daemon目录,修改Makefile
在第47行添加:
have_bcg729 := yes
bcg729_inc := -I /usr/local/include/bcg729/
bcg729_lib := -L /usr/local/lib64/ -lbcg729
直接make 就可以生成可执行文件rtpengine
进入rtpengine/kernel-module目录,make编译.ko文件
进入rtpengine/ iptables-extension 目录,make编译libxt_RTPENGINE.so,拷贝到/usr/lib64/xtables/
在UDP 端口127.0.0.1:7722监听,执行ng协议,使用接口10.10.200.77,两个网卡的地址分别为10.10.28.131、192.168.28.131,线程数目为32个
在rtpengine/daemon目录下
./rtpengine -n 127.0.0.1:7722 --interface=pub/10.10.28.131 --interface=priv/192.168.28.131 --log-facility=local3 --num-threads=32 --tos=184
在UDP 端口127.0.0.1:7722监听,执行ng协议,使用接口10.10.200.77
在iptables/kernel-module加载模块:insmod xt_RTPENGINE.ko
使用iptables建立规则:(确保iptables下,表filter只有这两条)
service iptables stop
iptables -I INPUT -d 10.10.200.55 -p udp -j RTPENGINE --id 0
iptables -I INPUT -d 192.168.200.55 -p udp -j RTPENGINE --id 0
在rtpengine/daemon目录下运行rtpengine:
./rtpengine -n 127.0.0.1:7722 --interface=pub/10.10.200.55 --interface=priv/192.168.200.55 --num-threads=32 --no-fallback --table=0 --tos=184
没有错误信息,且查看端口5060有在监听,即使正常启动,若无启动,查看对应/var/log/messages的日志输出错误信息。
通过kamcmd使能rtpnegine模块:
Enables a RTPengine:
kamcmd rtpengine.enable all 1
Displays all the RTP proxies and their information:
kamcmd rtpengine.show all
添加用户测试:
现在就可以使用softphone注册用户,测试呼叫
安装kamailio http://kamailio.org/docs/tutorials/5.1.x/kamailio-install-guide-git/
Rtpengine模块指南https://www.kamailio.org/docs/modules/stable/modules/rtpengine.html#idm1020019220
https://github.com/sipwise/rtpengine github源码地址和相关介绍
手动安装mysql :https://www.cnblogs.com/pythonal/p/6141516.html
Opensips安装:https://www.jianshu.com/p/4f17429cfdcd
Kamailio配置文件修改部分:
RTPProxy control and signaling updates for NAT traversal
route[NATMANAGE] {
#!ifdef WITH_NAT
if (is_request()) {
if(has_totag()) {
if(check_route_param("nat=yes")) {
xinfo("setflag flb_natb");
setbflag(FLB_NATB);
}
}
}
if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;
if(nat_uac_test("8")) {
xinfo("nat_uac_test true");
rtpengine_manage("replace-origin replace-session-connection ICE=force");
if (is_method("INVITE")) {
xinfo("is_method INVITE");
if (has_body("application/sdp")) {
xinfo("has_body application/sdp");
if($fd=="10.10.200.77"){
if (rtpengine_offer("codec-strip-all codec-transcode-PCMA codec-transcode-PCMU codec-transcode-G729 replace-origin replace-session-connection direction=pub direction=priv ICE=force "))
t_on_reply("1");
}
else if($fd=="192.168.200.77"){
if (rtpengine_offer("codec-strip-all codec-transcode-PCMA codec-transcode-PCMU codec-transcode-G729 replace-origin replace-session-connection direction=priv direction=pub ICE=force "))
t_on_reply("1");
}
} else {
xinfo("doesn't has_body application/sdp");
t_on_reply("2");
}
}
if (is_method("ACK") && has_body("application/sdp")){
xinfo("is_method ACK");
rtpengine_answer();
}
} else {
xinfo("nat_uac_test false");
rtpengine_manage();
}
if (is_request()) {
if (!has_totag()) {
if(t_is_branch_route()) {
add_rr_param(";nat=yes");
}
}
}
if (is_reply()) {
if(isbflagset(FLB_NATB)) {
if(is_first_hop())
set_contact_alias();
}
}
#!endif
return;
}
onreply_route[1]
{
if (has_body("application/sdp"))
rtpengine_answer();
}
onreply_route[2]
{
if (has_body("application/sdp"))
rtpengine_offer("codec-strip-all codec-transcode-PCMA codec-transcode-PCMU codec-transcode-G729 replace-origin replace-session-connection direction=priv direction=pub ICE=force ");
}
总结: 这是本人工作时总结的,希望能帮到各位。
店铺地址:https://shop66907778.taobao.com/