Kamailio安装配置指南(绝对原创,亲测有效)

1、先决条件

l  读者熟悉Ubuntu/Centos、Linux各种基本操作。

l  读者熟悉apt-get软件包管理工具。

l  读者熟悉编译安装Linux程序的一般过程。

l  操作用户具有sudo权限

2、安装第三方依赖库

由于不同的Linux系统,同一个依赖库的名称也会不一样,在线安装方法也不一样,所以在此以Ubuntu和centos两种Linux系统为例进行讲解。

Ubuntu系统下的安装方式:

sudo apt-get install gcc flex bison libmysqlclient-dev make libcurl4-openssl-dev libxml2-dev libpcre3-dev libncurses5-dev libreadline6  libreadline-dev  e2fsprogs-dev  uuid-dev  libuuid-dev

Centos系统下的安装方式:

sudo  yum  install  gcc  gcc-c++  flex bison make  openssl  openssl-devel libxml2  libxml2-devel  zlib-devel  ncurses*  e2fsprogs-devel  uuid-devel  libuuid-devel  readline6  readline-devel curl-devel


3、执行编译和安装

执行该部分的前提是已经安装了MySQL,安装MySQL的过程此处不再叙述。

1、执行如下指令,解压源码

  

tar  xvf   kamailio-4.3.4_src.tar.gz

2、执行如下指令进入源码

  

cd   kamailio-4.3.4

3、执行如下指令,生成modules.lst文件

      

make  FLAVOUR=kamailio  cfg

4、用自己熟悉的编辑工具打开"modules.lst"文件,找到"exclude_modules",将等号后面的db_mysql删除(这里可以根据自己的需要调整编译的模块)。然后执行如下指令编译

      

make   all

 

5、执行如下指令进行安装

      

sudo  make   install

       在该过程中,如果MySQL的版本是5.7以后的,可能会出现无法找到MySQL头文件的错误,解决方法为:

mkdir  /usr/include/mysql

sudo  cp  /usr/local/mysql/include/*  /usr/include/mysql

sudo  mv  /usr/include/mysql/mysql/*  /usr/include/mysql

然后修改环境变量,解决方法为:

sudo  vim  /etc/profile.d/mysql.sh

 

然后,在mysql.sh中添加“export  PATH=$PATH:/usr/includ”,执行如下指令使其生效,

             

source  /etc/profile.d/mysql.sh

echo  $PATH

执行完“echo  $PATH”之后,查看显示的环境变量中是否有刚添加的路径,如果有,则表示已经生效,否则,没有生效。

缺省的情况下,Kamailio的可执行文件是安装在”/usr/local/sbin”路径下的,配置文件是安装在”/usr/local/etc/kamailio”路径下的。另外,需要将/usr/local/sbin路径加到环境变量下才能保证Kamailio的指令生效,添加环境变量的方法为:

sudo  cd   /etc/profile.d

sudo  vim  sbin.sh

然后在sbin.sh中输入“export PATH=$PATH:/usr/local/sbin”,保存之后,执行如下指令,如果输出内容中有/usr/local/sbin,则证明添加的环境变量已生效。

source  sbin.sh

echo   $PATH

几个可执行文件功能如下:

kamdbctl:创建和管理数据库的脚本

kamctl: 管理和控制Kamailio服务器的脚本


4、配置

1、打开/usr/local/etc/kamailio/kamailio.cfg,添加下面几行(添加在最顶端即可):

       

 #!define WITH_MYSQL

  #!define WITH_AUTH

  #!define WITH_USRLOCDB

  #!define WITH_NAT

    #!define WITH_DEBUG

   选定db_mysql模块安装。

2、修改 /usr/local/etc/kamailio/kamctlrc

   去掉SIP_DOMAIN前的注释,并且修改成自己的服务器地址192.168.1.111(根据自己服务器的实际情况来写),我的是SIP_DOMAIN=192.168.1.111。然后去掉DBENGINE=MYSQL前的注释语句,选定mysql数据库,其他的按照如下内容来修改:

# cat /usr/local/etc/Kamailio/kamctlrc
# $Id$
# The Kamailio configuration file for the control tools.
# Here you can set variables used in the kamctl and kamdbctl setup
# scripts. Per default all variables here are commented out, the control tools
# will use their internal default values.

## your SIP domain
SIP_DOMAIN=192.168.1.111

## chrooted directory
# $CHROOT_DIR="/path/to/chrooted/directory"

## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, by default none is loaded

# 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 path used by dbtext or db_berkeley
# DB_PATH="/usr/local/etc/kamailio/dbtext"

## database read/write user
DBRWUSER=kamailio

## password for database read/write user
DBRWPW="kamailiorw"

   

## database read only user
# DBROUSER=kamailioro
DBROUSER=kamailioro

## password for database read only user
DBROPW=kamailioro

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

# user name column
USERCOL="username"

# SQL definitions
# If you change this definitions here, then you must change them
# in db/schema/entities.xml too.
# FIXME

# FOREVER="2020-05-28 21:32:15"
# DEFAULT_ALIASES_EXPIRES=$FOREVER
# DEFAULT_Q="1.0"
# DEFAULT_CALLID="Default-Call-ID"
# DEFAULT_CSEQ="13"

# DEFAULT_LOCATION_EXPIRES=$FOREVER

# Program to calculate a message-digest fingerprint
# MD5="md5sum"

# awk tool
# AWK="awk"

# If you use a system with a grep and egrep that is not 100% gnu grep compatible,
# e.g. solaris, install the gnu grep (ggrep) and specify this below.
#

# grep tool
# GREP="grep"

# egrep tool
# EGREP="egrep"

# sed tool
# SED="sed"

# tail tool
# LAST_LINE="tail -n 1"

# expr tool

# EXPR="expr"

# Describe what additional tables to install. Valid values for the variables
# below are yes/no/ask. With ask (default) it will interactively ask the user
# for an answer, while yes/no allow for automated, unassisted installs.
#

# If to install tables for the modules in the EXTRA_MODULES variable.
# INSTALL_EXTRA_TABLES=ask

# If to install presence related tables.

 

# INSTALL_PRESENCE_TABLES=ask

# Define what module tables should be installed.
# If you use the postgres database and want to change the installed tables, then you
# must also adjust the STANDARD_TABLES or EXTRA_TABLES variable accordingly in the
# kamdbctl.base script.

# kamailio standard modules
# STANDARD_MODULES="standard acc lcr domain group permissions registrar usrloc msilo
# alias_db uri_db speeddial avpops auth_db pdt dialog dispatcher
# dialplan"

# Kamailio extra modules
# EXTRA_MODULES="imc cpl siptrace domainpolicy carrierroute userblacklist htable purple"

## type of aliases used: DB - database aliases; UL - usrloc aliases
## - default: none
# ALIASES_TYPE="DB"

## control engine: FIFO or UNIXSOCK
## - default FIFO
# CTLENGINE="FIFO"

## path to FIFO file
# OSER_FIFO="FIFO"

## check ACL names; default on (1); off (0)
# VERIFY_ACL=1

## ACL names - if VERIFY_ACL is set, only the ACL names from below list
## are accepted
# ACL_GROUPS="local ld int voicemail free-pstn"

## verbose - debug purposes - default '0'
VERBOSE=1

## do (1) or don't (0) store plaintext passwords
## in the subscriber table - default '1'

# STORE_PLAINTEXT_PW=0

## OPENSER START Options
## PID file path - default is: /var/run/Kamailio.pid
# PID_FILE=/var/run/kamailio/kamailio.pid
PID_FILE=/var/run/kamailio/kamailio.pid

## Extra start options - default is: not set
# example: start kamailio with 64MB share memory: STARTOPTIONS="-m 64"
# STARTOPTIONS=

 


5、生成Kamailio的MySQL数据库

执行如下指令生成Kamailio的数据库:

# /usr/local/sbin/kamdbctl  create

可能会遇到需要授权的问题,需执行如下指令进行解决:

执行“mysql  -u用户名 -p密码”,进入数据库,然后执行下面的语句来为用户授权,  

grant all on *.* to 'root'@'%' identified by 'yourpassword';  (此指令也可以用来修改密码)

grant all on *.* to 'root'@'localhost' identified by 'yourpassword';


6、启动Kamailio服务

注意:启动Kamailio时必须切换到root模式,否则会启动失败,然后执行如下指令开启服务,

# /usr/local/sbin/kamctl  start

可能会出现“ERROR:PID file /var/run/kamailio/kamaillio.pid does not exist---Kamailio  start failed"

种错误出现的原因是/var/run/路径下没有kamailio目录,手动创建一个即可,但不要生成kamailio.pid文件。

然后再开启服务试一下能否成功,如果还是不行,请按顺序检查如下内容:

(1)kamdbctlrc这个配置文件中的DBHOST处是否是127.0.0.1或者localhost,如果不是请将其修改成127.0.0.1或者localhost试试。

(2)执行“kamailio  -c”来检测配置文件是否有错误,如果有报错,请根据具体报错信息解决问题。如果出现“config file ok,exiting......”,说明配置文件没有问题了。

(3)执行“kamailio  -dddd”,看是否有ERROR输出,若有,请依据错误提示进行修改。

7、注册SIP账号

执行如下指令

#kamctl  add  user1  123456
#kamctl  add  user2  123456

使用上面的命令添加两个用户 user1和user2 密码都是123456,添加完毕后,配置你的SIP终端注册。

8、测试Kamailio服务

测试Kamailio服务的方式有很多,可以通过使用x-lite或者microsip,具体使用方法请自行百度,此处不再赘述。

OK,到此为止,Kamailio的安装和配置已经全部搞定!!!



你可能感兴趣的:(Kamailio安装配置指南(绝对原创,亲测有效))