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
2、Kamailio源代碼編譯需要bison、flex包,故在編譯kamailio之前,www.linuxidc.com需要先安裝這些包:
#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)