linux os :Fedora 10
software: kamailio-3.2.3_src.tar.gz
一、安装:
1. [zhang@localhost Code]# tar zxvf kamailio-3.2.3_src.tar.gz
[zhang@localhost Code]# cd kamailio-3.2.3
[zhang@localhost kamailio-3.2.3]#
修改编译配置文件,以使得包含MySQL module
[zhang@localhost kamailio-3.2.3]#vim Makefile.vars
添加下述内容:
MODS_MYSQL=on
执行kamailio的编译与安装
[root@localhost kamailio-3.2.3]# ./make_and_install install "standard mysql" ignore /usr/local
SER core and groups standard mysql will be compiled and installed to /usr/local. YOU WILL FIND THE OUTPUT IN make_and_install_output.txt IN THE CURRENT DIRECTORY ---------------------- Cleaning up the source tree... ---------------------- ---------------------- Making ser and all modules in the groups "standard mysql". This may take some time... ---------------------- COMPILING...... ---------------------- FOUND ERRORS! You may want to run the same ./make_and_install command again but use 'nccompile'. The output file will then be simpler to read. See make_and_install_output.txt for full output, search for 'error'. Error ignore switch was specified, moving on despite errors... ---------------------- Installing SER and all modules to /usr/local ---------------------- [root@localhost kamailio-3.2.3]#
检查编译安装过程是否有误,可用查看make_and_install_output.txt.
[zhang@localhost kamailio-3.2.3]# vim make_and_install_output.txt
命令模式下查找 error关键字,发现有相关的mysql头文件导致编译出错:
km_dbase.c:38:25: warning: mysql/mysql.h: No such file or directory 273 km_dbase.c:39:26: warning: mysql/errmsg.h: No such file or directory 274 km_dbase.c:40:33: warning: mysql/mysql_version.h: No such file or directory In file included from km_dbase.c:48: 276 km_my_con.h:47: error: expected specifier-qualifier-list before ‘MYSQL_RES’ 277 km_dbase.c: In function ‘db_mysql_submit_query’: 278 km_dbase.c:83: error: ‘struct my_con’ has no member named ‘timestamp’ 279 km_dbase.c:84: warning: implicit declaration of function ‘mysql_ping’ 280 km_dbase.c:84: error: ‘struct my_con’ has no member named ‘con’ 281 km_dbase.c:85: warning: implicit declaration of function ‘mysql_erro
按照博客 http://blog.csdn.net/xuyunzhang/article/details/7614686 安装配置Mysql-5.5.24.
注意编译时的相关option 应为:
-I/usr/local/mysql/include/ -L/usr/local/mysql/lib
还好 kamailio-3.2.3/modules/db_mysql/Makefile 中有了相关的设置:
DEFS +=-DSER_MOD_INTERFACE -I$(LOCALBASE)/include \ -I$(LOCALBASE)/include/mysql \ -I$(LOCALBASE)/mysql/include \ -I/usr/include/mysql LIBS=-L/usr/lib/mysql -L$(LOCALBASE)/lib -L$(LOCALBASE)/lib/mysql \ -L$(LOCALBASE)/mysql/lib/mysql/ \ -L$(LOCALBASE)/mysql/lib \ -L/usr/lib64/mysql \ -lmysqlclient -lz其中 LOCALBASE = /usr/local (定义在 ./config.mak:33:LOCALBASE= /usr/local)
只不过 kamailio-3.2.3/modules/db_mysql/下的.c 和.h #include <mysql/xxx.h> 还是有目录不兼容的情况:
[zhang@localhost kamailio-3.2.3]$ find . | xargs grep -n --color=auto '#include <mysql' ./modules/db_mysql/km_db_mysql.c:49:#include <mysql/mysql.h> Binary file ./modules/db_mysql/.km_dbase.c.swp matches ./modules/db_mysql/km_val.h:34:#include <mysql/mysql.h> ./modules/db_mysql/my_con.h:37:#include <mysql/mysql.h> ./modules/db_mysql/my_cmd.c:54:#include <mysql/errmsg.h> ./modules/db_mysql/my_cmd.c:55:#include <mysql/mysqld_error.h> ./modules/db_mysql/km_dbase.c:38:#include <mysql/mysql.h> ./modules/db_mysql/km_dbase.c:39:#include <mysql/errmsg.h> ./modules/db_mysql/km_dbase.c:40:#include <mysql/mysql_version.h> ./modules/db_mysql/my_fld.h:38:#include <mysql/mysql.h> ./modules/db_mysql/km_my_con.h:39:#include <mysql/mysql.h> ./modules/db_mysql/my_cmd.h:34:#include <mysql/mysql.h> ./modules/db_mysql/my_res.c:37:#include <mysql/mysql.h> ./modules/db_mysql/km_res.c:35:#include <mysql/mysql.h> ./modules/db_mysql/km_my_con.c:33:#include <mysql/mysql_version.h> [zhang@localhost kamailio-3.2.3]$
将以上的#include <mysql/xxx.h>改为#include <xxx.h>, 即去除mysql。
[zhang@localhost kamailio-3.2.3]$ make all
发现要有 pcre.h
CC (gcc) [M dialplan.so] dialplan.o In file included from dialplan.c:62: dialplan.h:39:18: warning: pcre.h: No such file or directory In file included from dialplan.c:63: dialplan.h:54: error: expected specifier-qualifier-list before ‘pcre’ make[1]: *** [dialplan.o] Error 1 make: *** [modules] Error 1 [root@localhost kamailio-3.2.3]#
[root@localhost-Code]#tar jxvf pcre-8.20.tar.bz2 [root@localhost-Code]#cd pcre-8.20/ [[email protected]]#./configure [[email protected]]#make && make install
kamailio-3.2.3 的源码 终于编译通过了!!!
二、配置
开启Mysql server:
[root@localhost sbin]# /etc/init.d/mysql.server restart
[root@localhost sbin]# /etc/init.d/mysql.server restart MySQL server PID file could not be found! [FAILED] Starting MySQL.. [ OK ] [root@localhost sbin]#
MySQL password for root: INFO: test server charset INFO: creating database openser ... INFO: Core Kamailio tables succesfully created. Install presence related tables? (y/n): y INFO: creating presence tables into openser ... INFO: Presence tables succesfully created. Install tables for imc cpl siptrace domainpolicy carrierroute userblacklist htable purple uac pipelimit? (y/n): y INFO: creating extra tables into openser ... INFO: Extra tables succesfully created. [root@localhost sbin]#
数据库信息如下:
database name :openser
user&password: openser openserrw (for read and write)
user&password: openserro openserro (for read only)
查看增加了openser和openserro用户
[root@localhost lib]# mysql -u root --password=myrootpasswd mysql
mysql> select host, user, password from user; +---------------------------+-----------+-------------------------------------------+ | host | user | password | +---------------------------+-----------+-------------------------------------------+ | localhost | root | *0E6A839B8FF3817A463ED960F7F8E56B1BDC8E4B | | localhost.localdomain | root | | | 127.0.0.1 | root | | | ::1 | root | | | localhost | | | | localhost.localdomain | | | | localhost | rick | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 | | 192.168.0.0/255.255.255.0 | rick | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 | | %.wiley.com | rick | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 | | % | openser | *6A673AEF9A79D8A0A4A11EE2FCDCA705FAEC1AE4 | | localhost | openser | *6A673AEF9A79D8A0A4A11EE2FCDCA705FAEC1AE4 | | % | openserro | *CCA2430489DD668498AC4D72D12D2F3DE09AAAAD | | localhost | openserro | *CCA2430489DD668498AC4D72D12D2F3DE09AAAAD | +---------------------------+-----------+-------------------------------------------+ 13 rows in set (0.00 sec) mysql> \q Bye
[zhang@localhost ~]$ mysql -u openser --password=openserrw openser
[zhang@localhost ~]$ mysql -u openserro --password=openserro openser
均显示如下信息:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 36 Server version: 5.5.24-log Source distribution Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show tables; +---------------------+ | Tables_in_openser | +---------------------+ | acc | | active_watchers | | address | | aliases | | carrier_name | | carrierfailureroute | | carrierroute | | cpl | | dbaliases | | dialog | | dialog_vars | | dialplan | | dispatcher | | domain | | domain_name | | domainpolicy | | globalblacklist | | grp | | htable | | imc_members | | imc_rooms | | lcr_gw | | lcr_rule | | lcr_rule_target | | location | | missed_calls | | pdt | | pl_pipes | | presentity | | pua | | purplemap | | re_grp | | rls_presentity | | rls_watchers | | silo | | sip_trace | | speed_dial | | subscriber | | trusted | | uacreg | | uri | | userblacklist | | usr_preferences | | version | | watchers | | xcap | +---------------------+ 46 rows in set (0.00 sec) mysql> mysql> \q Bye
[root@localhost kamailio-3.2.3]# cp pkg/kamailio/fedora/kamailio.init /etc/init.d/kamailio
[root@localhost kamailio-3.2.3]# pwd /home/zhang/Code/opensource/kamailio-3.2.3 [root@localhost kamailio-3.2.3]# ll /etc/init.d/kamailio -rw-r--r-- 1 root root 1428 2012-06-13 13:20 /etc/init.d/kamailio
根据可执行二进制文件kamailio的目录做相应修改:
[root@localhost kamailio-3.2.3]# which kamailio
/usr/local/sbin/kamailio[root@localhost kamailio-3.2.3]# vim /etc/init.d/kamailio
# modified by vinco at 2012-06-13 #oser=/usr/sbin/kamailio oser=/usr/local/sbin/kamailio prog=kamailio RETVAL=0
启动脚本是ok的:
[root@localhost kamailio-3.2.3]# /etc/init.d/kamailio
Usage: kamailio {start|stop|reload|restart|condrestart|status|help}[root@localhost kamailio-3.2.3]# /etc/init.d/kamailio start
Starting kamailio: [ OK ]
[root@localhost kamailio-3.2.3]# [root@localhost kamailio-3.2.3]# ps -aux | grep kamailio Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ zhang 6993 0.1 2.5 86592 25828 ? Sl 10:46 0:16 kwrite /home/zhang/Desktop/kamailio config.txt root 9087 0.0 0.4 58476 5072 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9092 0.0 0.1 58476 1816 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9094 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9096 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9098 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9100 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9102 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9104 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9106 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9108 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9110 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9112 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9114 0.0 0.1 58476 1756 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9116 0.0 0.1 58476 1776 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9118 0.0 0.1 58476 1796 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9120 0.0 0.1 58480 1656 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9123 0.0 0.1 58476 1908 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9125 0.0 0.1 58476 2008 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9127 0.0 0.1 58476 2008 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9129 0.0 0.1 58476 2008 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9131 0.0 0.1 58476 2012 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9133 0.0 0.1 58476 1844 ? S 13:32 0:00 /usr/local/sbin/kamailio root 9149 0.0 0.0 4216 716 pts/2 S+ 13:33 0:00 grep kamailio [root@localhost kamailio-3.2.3]#[root@localhost kamailio-3.2.3]# /etc/init.d/kamailio status
kamailio (pid 9133 9131 9129 9127 9125 9123 9120 9118 9116 9114 9112 9110 9108 9106 9104 9102 9100 9098 9096 9094 9092 9087) is running...[root@localhost kamailio-3.2.3]# /etc/init.d/kamailio stop
Stopping kamailio: [ OK ][root@localhost kamailio-3.2.3]# /etc/init.d/kamailio status
kamailio is stopped[root@localhost kamailio-3.2.3]#
default配置文件:
[root@localhost kamailio-3.2.3]# cp pkg/kamailio/deb/debian/kamailio.default /etc/default/kamailio
[root@localhost kamailio-3.2.3]# ls /etc/default/kamailio /etc/default/kamailio
为 kamailio 增加系统user 和/var/run/kamailio:
[root@localhost kamailio-3.2.3]# mkdir -p /var/run/kamailio
[root@localhost kamailio-3.2.3]# adduser --system --shell /bin/false --home /var/run/kamailio kamailio
[root@localhost kamailio-3.2.3]# cat /etc/passwd tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat5:/bin/sh zhang:x:500:500:xuyunzhang:/home/zhang:/bin/bash rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin kamailio:x:479:469::/var/run/kamailio:/bin/false [root@localhost kamailio-3.2.3]#
[root@localhost kamailio-3.2.3]# ls -l /var/run/ | grep kamailio drwxr-xr-x 2 root root 4096 2012-06-13 14:36 kamailio[root@localhost kamailio-3.2.3]# chown kamailio:kamailio /var/run/kamailio
[root@localhost kamailio-3.2.3]# [root@localhost kamailio-3.2.3]# ls -l /var/run/ | grep kamailio drwxr-xr-x 2 kamailio kamailio 4096 2012-06-13 14:36 kamailio [root@localhost kamailio-3.2.3]#
三、新建kamailio用户并测试通话:
新建用户1001密码 1001,用户1002密码 1002, 忽略voice mail:
[root@localhost kamailio-3.2.3]# kamctl add 1001 1001
MySQL password for user 'openser@localhost': new user '1001' added[root@localhost kamailio-3.2.3]# kamctl add 1002 1002
MySQL password for user 'openser@localhost': new user '1002' added
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 93 Server version: 5.5.24-log Source distribution Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show tables; +---------------------+ | Tables_in_openser | +---------------------+ | acc | | active_watchers | | address | | aliases | | carrier_name | | carrierfailureroute | | carrierroute | | cpl | | dbaliases | | dialog | | dialog_vars | | dialplan | | dispatcher | | domain | | domain_name | | domainpolicy | | globalblacklist | | grp | | htable | | imc_members | | imc_rooms | | lcr_gw | | lcr_rule | | lcr_rule_target | | location | | missed_calls | | pdt | | pl_pipes | | presentity | | pua | | purplemap | | re_grp | | rls_presentity | | rls_watchers | | silo | | sip_trace | | speed_dial | | subscriber | | trusted | | uacreg | | uri | | userblacklist | | usr_preferences | | version | | watchers | | xcap | +---------------------+ 46 rows in set (0.26 sec)
+----+----------+--------------+----------+---------------+----------------------------------+----------------------------------+------+ | id | username | domain | password | email_address | ha1 | ha1b | rpid | +----+----------+--------------+----------+---------------+----------------------------------+----------------------------------+------+ | 1 | 1001 | kamailio.org | 1001 | | 2895f5fe78dac2e653926f7b2d9a72f8 | 6f024289ef0e3d6c8b9c7bc01aca7e1b | NULL | | 2 | 1002 | kamailio.org | 1002 | | 23598b35f7c629a6790d79ae72934856 | 0c2f5c29ad6a39acf824bc9c9241b827 | NULL | +----+----------+--------------+----------+---------------+----------------------------------+----------------------------------+------+ 2 rows in set (0.01 sec) mysql> \q Bye [root@localhost kamailio-3.2.3]#
[root@localhost opensource]# netstat -ano | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State Timer tcp 0 0 192.168.122.1:5060 0.0.0.0:* LISTEN off (0.00/0/0) tcp 0 0 192.168.1.101:5060 0.0.0.0:* LISTEN off (0.00/0/0) tcp 0 0 127.0.0.1:5060 0.0.0.0:* LISTEN off (0.00/0/0)
用x-lite、jitsi 等免费软件测试通话,ok!!!
wireshark抓包便可以分析sip协议等等......
//TODO