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系统下的安装方式:
Centos系统下的安装方式:
3、执行编译和安装
执行该部分的前提是已经安装了MySQL,安装MySQL的过程此处不再叙述。
1、执行如下指令,解压源码
2、执行如下指令进入源码
3、执行如下指令,生成modules.lst文件
4、用自己熟悉的编辑工具打开"modules.lst"文件,找到"exclude_modules",将等号后面的db_mysql删除(这里可以根据自己的需要调整编译的模块)。然后执行如下指令编译
5、执行如下指令进行安装
在该过程中,如果MySQL的版本是5.7以后的,可能会出现无法找到MySQL头文件的错误,解决方法为:
然后修改环境变量,解决方法为:
然后,在mysql.sh中添加“export PATH=$PATH:/usr/includ”,执行如下指令使其生效,
执行完“echo $PATH”之后,查看显示的环境变量中是否有刚添加的路径,如果有,则表示已经生效,否则,没有生效。
缺省的情况下,Kamailio的可执行文件是安装在”/usr/local/sbin”路径下的,配置文件是安装在”/usr/local/etc/kamailio”路径下的。另外,需要将/usr/local/sbin路径加到环境变量下才能保证Kamailio的指令生效,添加环境变量的方法为:
然后在sbin.sh中输入“export PATH=$PATH:/usr/local/sbin”,保存之后,执行如下指令,如果输出内容中有/usr/local/sbin,则证明添加的环境变量已生效。
几个可执行文件功能如下:
kamdbctl:创建和管理数据库的脚本
kamctl: 管理和控制Kamailio服务器的脚本
4、配置
1、打开/usr/local/etc/kamailio/kamailio.cfg,添加下面几行(添加在最顶端即可):
选定db_mysql模块安装。
2、修改 /usr/local/etc/kamailio/kamctlrc
去掉SIP_DOMAIN前的注释,并且修改成自己的服务器地址192.168.1.111(根据自己服务器的实际情况来写),我的是SIP_DOMAIN=192.168.1.111。然后去掉DBENGINE=MYSQL前的注释语句,选定mysql数据库,其他的按照如下内容来修改:
5、生成Kamailio的MySQL数据库
执行如下指令生成Kamailio的数据库:
可能会遇到需要授权的问题,需执行如下指令进行解决:
执行“mysql -u用户名 -p密码”,进入数据库,然后执行下面的语句来为用户授权,
6、启动Kamailio服务
注意:启动Kamailio时必须切换到root模式,否则会启动失败,然后执行如下指令开启服务,
可能会出现“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账号
执行如下指令
使用上面的命令添加两个用户 user1和user2 密码都是123456,添加完毕后,配置你的SIP终端注册。
8、测试Kamailio服务
测试Kamailio服务的方式有很多,可以通过使用x-lite或者microsip,具体使用方法请自行百度,此处不再赘述。
OK,到此为止,Kamailio的安装和配置已经全部搞定!!!
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 |
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 |
执行该部分的前提是已经安装了MySQL,安装MySQL的过程此处不再叙述。
1、执行如下指令,解压源码
tar xvf kamailio-4.3.4_src.tar.gz |
cd kamailio-4.3.4 |
make FLAVOUR=kamailio cfg |
make all |
sudo make install |
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 |
source /etc/profile.d/mysql.sh echo $PATH |
缺省的情况下,Kamailio的可执行文件是安装在”/usr/local/sbin”路径下的,配置文件是安装在”/usr/local/etc/kamailio”路径下的。另外,需要将/usr/local/sbin路径加到环境变量下才能保证Kamailio的指令生效,添加环境变量的方法为:
sudo cd /etc/profile.d sudo vim sbin.sh |
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 |
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= |
执行如下指令生成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'; |
注意:启动Kamailio时必须切换到root模式,否则会启动失败,然后执行如下指令开启服务,
# /usr/local/sbin/kamctl start |
种错误出现的原因是/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 |
8、测试Kamailio服务
测试Kamailio服务的方式有很多,可以通过使用x-lite或者microsip,具体使用方法请自行百度,此处不再赘述。
OK,到此为止,Kamailio的安装和配置已经全部搞定!!!
相关文章推荐
- JetBrains注册码计算(IntelliJ IDEA 15.0注册码激活)
- 开发环境解决 kafka Failed to send messages after 3 tries
- lintcode:Trailing Zeros
- 加拿大信息竞赛 2015 junior problem 4 WAIT TIME
- 部署OpenStack问题汇总(三)--Failed to add image
- 1014. Waiting in Line (30)
- 解密Google Deepmind AlphaGo围棋算法:真人工智能来自于哪里?
- 【观点】语言交流将是人工智能拟人化的核心
- 人工智能-搜索算法
- failed to push some refs to git
- Error 42 error C2784: 'bool std::operator <(const std::_Tree<_Traits>
- Error 42 error C2784: 'bool std::operator <(const std::_Tree<_Traits>
- HDU——1789Doing Homework again(贪心)
- HashMap的resize和Fail-Fast机制
- putty登录,提示no supported authentication methods available解决方法
- cf#22-B-Bargaining Table-枚举+贪心+dp(最大连续区间和)
- [leetcode] 220. Contains Duplicate III 解题报告
- Linux -磁盘管理 ip http://blog.csdn.net/xh16319/article/details/17272455
- Email List
- UVa442 Matrix Chain Multiplication(栈)