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 |
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 |
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 ## your SIP domain ## 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 ## database host ## database name (for ORACLE this is TNS name) DBNAME=kamailio # database path used by dbtext or db_berkeley ## database read/write user ## password for database read/write user |
## database read only user ## password for database read only user ## database super user (for ORACLE this is 'scheme-creator' user) # user name column # SQL definitions # FOREVER="2020-05-28 21:32:15" # DEFAULT_LOCATION_EXPIRES=$FOREVER # Program to calculate a message-digest fingerprint # awk tool # If you use a system with a grep and egrep that is not 100% gnu grep compatible, # grep tool # egrep tool # sed tool # tail tool # expr tool # EXPR="expr" # Describe what additional tables to install. Valid values for the variables # If to install tables for the modules in the EXTRA_MODULES variable. # If to install presence related tables. |
# INSTALL_PRESENCE_TABLES=ask # Define what module tables should be installed. # kamailio standard modules # Kamailio extra modules ## type of aliases used: DB - database aliases; UL - usrloc aliases ## control engine: FIFO or UNIXSOCK ## path to FIFO file ## check ACL names; default on (1); off (0) ## ACL names - if VERIFY_ACL is set, only the ACL names from below list ## verbose - debug purposes - default '0' ## do (1) or don't (0) store plaintext passwords # STORE_PLAINTEXT_PW=0 ## OPENSER START Options ## Extra start options - default is: not set
|
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 |
种错误出现的原因是/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 |
使用上面的命令添加两个用户 user1和user2 密码都是123456,添加完毕后,配置你的SIP终端注册。
8、测试Kamailio服务
测试Kamailio服务的方式有很多,可以通过使用x-lite或者microsip,具体使用方法请自行百度,此处不再赘述。
OK,到此为止,Kamailio的安装和配置已经全部搞定!!!