1 下载
依赖: git client: apt-get install git - it is recommended to have a recent version, if your Linux distro has an old version, you can download newer one from: http://git-scm.com/ gcc compiler: apt-get install gcc flex - apt-get install flex bison - apt-get install bison libmysqlclient-dev - apt-get install libmysqlclient-dev make - apt-get install make if you want to enable more modules, some of them require extra libraries: libssl - apt-get install libssl-dev libcurl - apt-get install libcurl4-openssl-dev libxml2 - apt-get install libxml2-dev libpcre3 - apt-get install libpcre3-dev
注:依赖关系摘抄于Install And Maintain Kamailio v4.3.x From GIT
2 安装
- 解压进入安装目录
- 执行
make cfg
生成modules.ls文件 - 打开modules.ls文件,去掉exclude_modules中的db_mysql,保存。
- make all
- make install
注:以上来自Unbuntu上编译安装搭建Kamailio sip服务端详细步骤
3 配置Mysql
3.1 编辑/usr/local/etc/kamailio/kamctlrc
将以下字段最前面的#去掉
SIP_DOMAIN=localhost //localhost可根据需要修改
DBENGINE=MYSQL
DBHOST=localhost
DBNAME="kamailio"
DBRWUSER="kamailio"
DBRWPW="123456" //密码可根据需要修改
DBROUSER="kamailioro"
DBROPW="123456"
DBROOTUSER="root"
ALIASES_TYPE="DB"
CTLENGINE="FIFO"
FIFOPATH="/var/run/kamailio_fifo"
VERBOSE=1
PID_FILE=/var/run/kamailio.pid
USERCOL="username"
3.2 编辑/usr/local/etc/kamailio/kamailio.cfg
将以下字段添加到####### Defined Values #########后面
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_ALIASDB
#!define WITH_USRLOCDB
修改DBURL和/usr/local/etc/kamailio/kamctlrc配置中一致
#!define DBURL "mysql://kamailio:123456@localhost/kamailio"
3.3 创建数据库
执行kamdbctl create
,根据提示进行操作。
3.4 添加数据
kamctl add name password
4 配置rtpProxy
- 编辑/usr/local/etc/kamailio/kamailio.cfg
将以下字段添加到####### Defined Values #########后面
#!define WITH_NAT
修改rtpproxy通信方式及地址端口
modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722")
5 启动kamailio
- 执行
kamailio
启动服务 - 使用
netstat -anp | grep 7722
(7722是rtpProxy端口)查看rtpProxy配置是否有问题
[root@localhost kamailio]# netstat -anp | grep 7722
udp 0 0 127.0.0.1:59678 127.0.0.1:7722 ESTABLISHED 14851/kamailio
udp 0 0 0.0.0.0:7722 0.0.0.0:* 109384/rtpproxy
udp 0 0 127.0.0.1:34230 127.0.0.1:7722 ESTABLISHED 14873/kamailio
udp 0 0 127.0.0.1:39606 127.0.0.1:7722 ESTABLISHED 14870/kamailio
udp 0 0 127.0.0.1:38843 127.0.0.1:7722 ESTABLISHED 14845/kamailio
udp 0 0 127.0.0.1:59836 127.0.0.1:7722 ESTABLISHED 14850/kamailio
udp 0 0 127.0.0.1:55617 127.0.0.1:7722 ESTABLISHED 14874/kamailio
udp 0 0 127.0.0.1:48102 127.0.0.1:7722 ESTABLISHED 14847/kamailio
udp 0 0 127.0.0.1:59240 127.0.0.1:7722 ESTABLISHED 14848/kamailio
udp 0 0 127.0.0.1:59756 127.0.0.1:7722 ESTABLISHED 14844/kamailio
udp 0 0 127.0.0.1:36978 127.0.0.1:7722 ESTABLISHED 14841/kamailio
udp 0 0 127.0.0.1:47860 127.0.0.1:7722 ESTABLISHED 14871/kamailio
udp 0 0 127.0.0.1:53751 127.0.0.1:7722 ESTABLISHED 14872/kamailio
udp 0 0 127.0.0.1:39417 127.0.0.1:7722 ESTABLISHED 14841/kamailio
udp 0 0 127.0.0.1:59262 127.0.0.1:7722 ESTABLISHED 14865/kamailio
udp 0 0 127.0.0.1:57984 127.0.0.1:7722 ESTABLISHED 14843/kamailio
udp 0 0 127.0.0.1:60165 127.0.0.1:7722 ESTABLISHED 14846/kamailio
udp 0 0 127.0.0.1:54673 127.0.0.1:7722 ESTABLISHED 14852/kamailio
udp 0 0 127.0.0.1:41362 127.0.0.1:7722 ESTABLISHED 14849/kamailio
udp 0 0 127.0.0.1:39450 127.0.0.1:7722 ESTABLISHED 14864/kamailio
6 FAQ
6.1 kamctl添加用户报权限错误
ERROR 1045 (28000): Access denied for user 'kamailioro'@'localhost' (using password: YES) INFO: user '100' already exists
解决:修改kamailio密码
UPDATE user SET password=PASSWORD('123456') WHERE user='kamailio';
FLUSH PRIVILEGES;
6.2 kamailio启动时mi_fifo报错
ERROR: mi_fifo [fifo_fnc.c:72]: mi_init_fifo_server(): Can't create FIFO: No such file or directory (mode=432)
解决:编辑/usr/local/etc/kamailio/kamailio.cfg,将fifo路径改为存在的文件中
modparam("mi_fifo", "fifo_name", "/var/run/kamailio_fifo")
6.3 kamailio启动时ctl报错
0(14675) INFO: <core> [tcp_main.c:4656]: init_tcp(): using epoll_lt as the io watch method (auto detected) 0(14677) INFO: rr [../outbound/api.h:54]: ob_load_api(): Failed to import bind_ob 0(14677) INFO: rr [rr_mod.c:174]: mod_init(): outbound module not available 0(14677) INFO: usrloc [hslot.c:51]: ul_init_locks(): locks array size 1024 0(14677) ERROR: ctl [init_socks.c:115]: init_unix_sock(): ERROR: init_unix_sock: bind: No such file or directory [2] 0(14677) ERROR: ctl [ctl.c:273]: mod_init(): ERROR: ctl: mod_init: init ctrl. sockets failed 0(14677) ERROR: <core> [sr_module.c:945]: init_mod(): Error while initializing module ctl (/usr/local/lib64/kamailio/modules/ctl.so) ERROR: error while initializing modules
解决:编辑/usr/local/etc/kamailio/kamailio.cfg,将binrpc路径改为存在的文件中
modparam("ctl", "binrpc", "unix:/var/run/kamailio_ctl")