您的位置:首页 > 大数据 > 人工智能

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

2016-01-31 10:38 399 查看
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的安装和配置已经全部搞定!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: