cxlabc 2012-02-12
Kamailio是一个开源的SIP服务器,原名OpenSER ,运行在Linux/Unix平台上的C程序。具有较好的性能,灵活性和安全性。
Web links
· Home page with new project name: http://www.kamailio.org
· Home page with old project name: http://www.openser-project.org
· SourceForge.net Project page: http://sourceforge.net/projects/openser/
本文从网站http://www.kamailio.org下载源程序以及二进制安装程序做的安装,其原因在于二进制安装包缺少db_mysql.so库,而使用源程序安装的不清楚如何编译出kamdbctl命令。
下载安装包kamailio-3.2.2_src.tar.gz,并上传到服务器/opt目录下,解压安装包:
#gunzip kamailio-3.2.2_src.tar.gz
#tar -xvf kamailio-3.2.2_src.tar
1、在使用源码的方式安装,必须确认系统中编译器gcc和一些依赖包可用,如果不可用,需要先安装gcc编译器。如果gcc可用,直接跳到下一步。这里给出gcc安装过程。
#rpm -ivh cpp-4.1.2-48.el5.i386.rpm
#rpm -ivh kernel-headers-2.6.18-194.el5.i386.rpm
#rpm -ivh glibc-headers-2.5-49.i386.rpm
#rpm -ivh glibc-devel-2.5-49.i386.rpm
#rpm -ivh libgomp-4.4.0-6.el5.i386.rpm
#rpm -ivh gcc-4.1.2-48.el5.i386.rpm
#rpm -ivh /home/Server/bison-2.3-2.1.i386.rpm
#rpm -ivh /home/Server/bison-devel-2.3-2.1.i386.rpm
#rpm -ivh /home/Server/flex-2.5.4a-41.fc6.i386.rpm
3、修改编译配置文件,以使得包含MySQL module
#vi Makefile.vars
添加下述内容:
MODS_MYSQL=on
4、执行kamailio的编译与安装
# ./make_and_install install "standard mysql" ignore /usr/local
关于make_and_install命令的详细用法,使用不带参数的命令即可:
# ./make_and_install
Usage:
./make_and_install [clean|compile|install|nccompile|ncinstall] "standard|standard-dep|mysql|radius|presence|stable|experimental" [ignore|stop] [installpath]
检查编译安装过程是否有误,可用查看make_and_install_output.txt.
由于源码安装不清楚使用什么选项可用生成kamdbctl工具,故直接使用二进制安装方式生成该工具。
将kamailio-3.2.2_linux_i386.tar.gz包上传到服务器根目录下,解压安装包:
#gunzip kamailio-3.2.2_linux_i386.tar.gz
#tar -xvf kamailio-3.2.2_linux_i386.tar
1、修改/usr/local/etc/kamailio/kamctlrc文件
DBENGINE=MYSQL
SIP_DOMAIN=pryko.com
2、使用kamctl启动服务
# kamctl start
WARNING: database engine not found - tried 'MYSQL'
INFO: Starting Kamailio :
ERROR: PID file /var/run/kamailio.pid does not exist -- Kamailio start failed
[root@eomcr modules]# kamdbctl create
ERROR: could not load the script in /usr/local/lib/kamailio//kamctl/kamdbctl.mysql for database engine MYSQL
ERROR: database engine not loaded - tried 'MYSQL'
这是由于未修改配置文件kamailio.cfg导致,所以修改/usr/local/etc/kamailio/kamailio.cfg
在文件头部添加:
#!define WITH_MYSQL
3、重新启动:
# kamctl start
若仍然出错,请检查是否db_mysql.so文件在/usr/local/lib/kamailio/modules下。
若存在,仍然出错,可能是mysql安装存在问题,需检查系统是否存在下述mysql安装程序:
#rpm -qa rpm -qa MySQL-shared
MySQL-shared-5.1.61-1.glibc23
# rpm -qa MySQL-devel
MySQL-devel-5.1.61-1.glibc23
并检查/usr/lib下是否有libmysqlclient.so.16库
#ll /usr/lib|grep libmysqlclient
lrwxrwxrwx 1 root root 26 02-08 17:46 libmysqlclient_r.so -> libmysqlclient_r.so.16.0.0
lrwxrwxrwx 1 root root 26 02-08 17:46 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
-rwxr-xr-x 1 root root 1969708 12-20 04:21 libmysqlclient_r.so.16.0.0
lrwxrwxrwx 1 root root 24 02-08 17:46 libmysqlclient.so -> libmysqlclient.so.16.0.0
lrwxrwxrwx 1 root root 24 02-08 17:46 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
-rwxr-xr-x 1 root root 1960456 12-20 04:21 libmysqlclient.so.16.0.0
没有的话,就需要安装前面提到的两个库。
若没有问题,则kamailio可以正常启动,输出如下:
# kamctl start
INFO: Starting Kamailio :
INFO: started (pid: 5937)