Kamailio (OpenSER) install and configure

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

那就安装 pcre-8.20.tar.bz2 吧
下载地址 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
[root@localhost-Code]#tar jxvf pcre-8.20.tar.bz2  
[root@localhost-Code]#cd pcre-8.20/  
[root@localhost-pcre-8.20]#./configure
[root@localhost-pcre-8.20]#make && make install 

[zhang@localhost kamailio-3.2.3]$ make all

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

根据/usr/local/etc/kamailio/kamctlrc 或 默认 创建Msql数据库:
[root@localhost sbin]# kamdbctl create
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

测试分别以 openseropenserro的用户名登录数据库 openser

[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

查看数据库openser验证增加的用户信息:
[root@localhost kamailio-3.2.3]# mysql -u openserro --password=openserro openser
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)

mysql> select * from subscriber;
+----+----------+--------------+----------+---------------+----------------------------------+----------------------------------+------+
| 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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值