Linux kamailio Sip服务器的编译与安装(Ubuntu14.04)

Kamailio是一个开源Sip服务器,支持很多的功能并且有很好的扩展性。在ubuntu系统上,Kamailio有两种安装方式,一种是通过apt-get安装,另一种是源码安装。本文记录了笔者通过源码安装kamailio的过程,如有安装问题,欢迎留言交流。


0. 环境安装

$sudo apt-get install git

$sudo apt-get install flex

$sudo apt-get install bison

$sudo apt-get install  libcurl4-openssl-dev

$sudo apt-get install libxml2-dev

$sudo apt-get install libpcre3-dev

 注:还需安装Mysql,此处没有列出

1. 下载源码

 $ git clone git://git.sip-router.org/kamailio kamailio
 $ cd kamailio
 $ git checkout -b 4.2 origin/4.2 or 
git checkout -b 4.3 origin/4.3
注:刚下载的代码是主分支上的代码,可以通过上面的git checkout命令切换到4.2分支或者4.3分支

2. 编译配置

$ make include_modules="db_mysql " cfg

打开modules.lst文件,可以看到如下内容

include_modules= db_mysql

注:官网使用的是make cfg, 但是不会生成db_mysql.so


3. 编译

$make all

4. 安装

$sudo make install

安装完成后可看到下面这些文件:

/usr/local/sbin/kamctl

/usr/local/sbin/kamailio

/usr/local/etc/kamailio/kamailio.cfg

/usr/local/etc/kamailio/kamctlrc


5.修改 配置文件

/usr/local/etc/kamailio/kamailio.cfg:

文件头添加4行:

#!define WITH_MYSQL 
#!define WITH_AUTH 
#!define WITH_ALIASDB 
#!define WITH_USRLOCDB 

#!ifndef DBURL
#!define DBURL "mysql://root:hello@localhost/kamailio" //root是用户名,hello是密码
#!endif


启动时如果出现如下错误(此fifo在最新版本已经过时):

ERROR: Error opening Kamailio's FIFO /tmp/kamailio_fifo
ERROR: Make sure you have the line 'modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")' in your config
解决办法:

#modparam("mi_fifo", "fifo_name", "/var/run/kamailio/kamailio_fifo")改成下面这一行
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")


/usr/local/etc/kamailio/kamctlrc:

#SIP_DOMAIN=127.0.0.1
SIP_DOMAIN=192.168.40.132 //kamailio所在的域

# If you want to setup a database with kamdbctl, you must at least specify
# this parameter.
DBENGINE=MYSQL

## database host
DBHOST=localhost

## database name (for ORACLE this is TNS name)
DBNAME=kamailio

## database access host (from where is kamctl used)
DBACCESSHOST=127.0.0.1

## database read/write user
DBRWUSER="kamailio"


## database super user (for ORACLE this is 'scheme-creator' user)
DBROOTUSER="root"

## database access host (from where is kamctl used)
DBACCESSHOST=127.0.0.1

## database super user (for ORACLE this is 'scheme-creator' user)
DBROOTUSER="root"

6. 创建kamailio数据库

首先要保证系统已经安装Mysql数据库,通过运行如下命令创建kamailio数据库。

$kamdbctl create

密码设为hello,遇选项按回车设为默认

7. 增加用户

$kamctl add 5555 4444

其中5555是用户名,4444是密码

8.启动kamailio

$sudo kamctl start


9.其它命令

$kamctl stop

$kamctl restart

$kamctl ps //查看运行状态

$tail /var/log/syslog //查看运行日志,例如启动失败日志


10. 其它问题(tail -f /var/log/syslog)

10.1 mysql 连接不上

May 29 08:17:46 iZ2ze3uk97m2bfv681kyx4Z /usr/local/sbin/kamailio[11848]: ERROR: db_mysql [km_my_con.c:124]: db_mysql_new_connection(): driver error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

原因:mysql配置文件(/etc/my.cnf)中指定为socket = /tmp/mysql.sock,与kamailio不一致

解决:将my.cnf文件中的配置改成kamailio需要的配置



猜你喜欢

转载自blog.csdn.net/szkbsgy/article/details/50719023