-
- - 1 配置檔案強化說明
- - 2 指定路徑編譯安裝Kamailio
- - 3 生成自定義的Kamailio資料庫
- - 4 配置kamailiocfg
Kamailio的基本配置方法在我之前的部落格中已經詳細叙述過了,但那種方法隻是可以實作在一台伺服器上運作一套Kamailio服務,但實際情況中有時需要在同一台伺服器上部署多套Kamailio服務,并且要求使用的配置檔案、動态庫和資料庫都互相獨立,那麼針對這種看似奇葩但又存在的需求該如何安裝和配置Kamailio呢?今天小編将針對該問題進行詳細的講解!
- 1. 配置檔案強化說明
在使用Kamailio的過程中,主要使用到的配置檔案有兩個:kamailio.cfg和kamctlrc。首先介紹一下kamctlrc,該檔案的作用是用來生成Kamailio的資料庫的,至于其中的基本配置已經在第4部分說過了,在此隻選擇其中部分内容做
SIP_DOMAIN,用于指定伺服器的IP;DBHOST,指定使用的資料庫的具體IP;DBNAME,指定生成的Kamailio的資料庫名稱;PID_FILE,指定生成的Kamailio的pid檔案的路徑以及名稱。
然後介紹一下kamailio.cfg檔案,該配置檔案包含的内容比較多,Kamailio所有功能的配置都在此檔案中設定,下面也是選擇部分内容進行講解。
Kamailio一共有201個子產品,Kamailio預設是到
/usr/local/lib64/kamailio/modules路徑下去加載子產品的動态庫,如果想讓Kamailio到自定義的路徑下加載,需要修改kamailio.cfg,打開kamailio.cfg,添加如下内容:
![]()
同一台伺服器運作多套kamailio服務 然後,将mpath後面的路徑改成自定義的路徑就可以了。
要想使用某個子產品,首先需要在kamailio.cfg的頂部添加“#!define WITH_***”,其中星号代表子產品的名稱。然後,使用loadmodule “*.so”加載子產品的動态庫,使用modparam配置子產品的具體參數。
上面已經說了可以通過kamctlrc中的DBHOST和DBNAME來生成不同的Kamailio資料庫,但生成之後該如何指定配置檔案讀取哪個資料庫呢?OK,在kamailio.cfg中有這麼一部分内容:
![]()
同一台伺服器運作多套kamailio服務 是以,Kamailio是通過設定DBURL來指定使用哪個資料庫。
下面分析一下“mysql://kamailio:[email protected]/kamailio”這句話,mysql表示使用的是MySQL資料庫,kamailio和kamailiorw是我們在kamctlrc中設定的kamailio資料庫中具有可讀可寫權限的使用者的名稱和密碼,localhost對應DBHOST,最後面那個kamailio就是你建立的Kamailio資料庫的名稱,對應kamctlrc中的DBNAME。
Kamailio預設使用的端口為5060,也可以自定義端口号,隻需要修改kamailio.cfg檔案中的port值即可,其實隻需要将kamailio.cfg中的“5060”全部替換成自定義的端口号即可。
對于伺服器,日志是不可缺少的,kamailio.cfg中同樣可以設定日志的輸出和存放路徑。打開kamailio.cfg,會看到如下内容:
![]()
同一台伺服器運作多套kamailio服務
可以指定輸出的日志的級别,也可以指定是否輸出日志,其中LOG_LOCAL0用于确定日志輸出的路徑,需要修改/etc/rsyslog.conf中的内容,方法為:
然後,在rsyslog.conf中添加如下内容:
即設定kamailio生成日志的路徑為/var/log,日志檔案名稱為kamailio_test.log,然後執行如下指令使修改的内容生效:
service rsyslog restart
為了便于解析網絡的IP,伺服器會使用域名來代替IP位址,Kamailio同樣支援域名的解析,打開kamailio.cfg,會看到如下内容:
kamailio.cfg預設是将域名的功能注釋掉的,此處隻需要将注釋去掉,然後将“sip.mydomain.com”改為我們自己的伺服器域名即可。要想使得域名生效,需要加載alias子產品,子產品加載的方法按照官方文檔照抄即可。
OK,有了上面内容做基礎,下面我們來進行具體的編譯、安裝和配置的操作。
- 2. 指定路徑編譯安裝Kamailio
Kamailio的預設安裝路徑是/usr/local/etc/和/usr/local/lib64,要想實作同一台伺服器運作多套Kamailio服務,首先需要做的就是指定不同的安裝路徑,執行如下指令:
make PREFIX="/usr/local/kamailio_test" include_modules="db_mysql" cfg
make all
make install
進而指定了Kamailio的安裝路徑,本文以/usr/local/kamailio_test為例進行說明,然後進入到/usr/local/kamailio_test路徑下,會看到 etc、lib64、sbin和share這四個目錄,說明安裝路徑正确。
- 3. 生成自定義的Kamailio資料庫
有了前面的内容做基礎,我們知道如何自定義kamctlrc檔案,而且需要特别注意的是,必須先配置kamctlrc檔案,然後再執行指令生成Kamailio資料庫。我們假設kamctlrc中的
DBHOST=127.0.0.1 ,DBNAME=kamailio_test,
PID_FILE=/var/run/kamailio_test/kamailio_test.pid,然後執行如下指令生成Kamailio的資料庫
注意,由于我們自定義的安裝路徑,導緻Kamailio的可執行檔案沒有被拷貝到系統路徑下,是以需要通過絕對路徑來指定使用哪套可執行檔案,接下來一路輸入“y”,按回車即可。進入到MySQL,看一下是否有kamailio_test資料庫生成,如果有,則說明kamctlrc生效了,操作成功。
- 4. 配置kamailio.cfg
- 4.1 指定使用的資料庫
按照11.1的介紹,首先修改DBURL,使Kamailio使用我們自定義的資料庫,具體的修改内容為:
#!ifndef DBURL
#!define DBURL "mysql://kamailio:[email protected]/kamailio_test"
#!endif
#!endif
然後,usrloc子產品的配置改成如下圖所示:
如果不修改usrloc子產品的話,建立的SIP賬号将無法登陸。
- 4.2 更改端口
Kamailio預設的端口為5060,為了運作多套Kamailio,需要自定義端口号,修改方法為:打開kamailio.cfg檔案,然後将其中的5060全部改為5061(假設自定義端口為5061),然後重新啟動Kamailio,啟動時同樣使用絕對路徑,然後執行
“ss -tlunp”檢視5061端口是否已經啟動,如果已啟動,說明配置生效。
OK,通過上面的操作,就可以實作同一台伺服器運作多套相對獨立的Kamailio服務了。