SER SIP server 進階設定1 -- mysql
SER與MYSQL
當完成SER SIP server 快速安裝之後我們變得到一個可以使用的 SER 伺服器,指示這個伺服器是屬於簡單且陽春的,特別是它並不做使用者的身份認證而且在伺服器重開機之後便會失去使用者的位置資料等。
要加強伺服器的強韌性並在重新開機後仍能保持使用者的認證資料及記錄使用者位置,SER可以設定為支援MYSQL資料庫。
在進行以下設定程序前,你必須先確認你的機器上已經正確安裝好了MYSQL資料庫。
下載與安裝
1. RedHat:
RedHat 7.3:
下載:
ftp://ftp.berlios.de/pub/ser/0.8.12/packages/redhat/7.3/ser-mysql-0.8.12-0.i386.rpm
安裝:
rpm -ivh ser-mysql-0.8.12-0.i386.rpm
RedHat 8.0:
下載:
ftp://ftp.berlios.de/pub/ser/0.8.12/packages/redhat/8.0/ser-mysql-0.8.12-0.i386.rpm
安裝:
rpm -ivh ser-mysql-0.8.12-0.i386.rpm
RedHat 9:
下載:
ftp://ftp.berlios.de/pub/ser/0.8.12/packages/redhat/9/ser-mysql-0.8.12-0.i386.rpm
安裝:
rpm -ivh ser-mysql-0.8.12-0.i386.rpm
2. debian:
下載:
ftp://ftp.berlios.de/pub/ser/0.8.12/packages/debian/stable/ser-mysql-module_0.8.12_i386.deb
安裝:
dpkg -i ser-mysql-module_0.8.12_i386.deb
3. fedora core 1:
ftp://ftp.berlios.de/pub/ser/0.8.12/packages/fedora/1/ser-mysql-0.8.12-0.i386.rpm
rpm -ivh ser-mysql-0.8.12-0.i386.rpm
4. tar.gz:
ser-mysql的支援已放在tar.gz檔案中,執行檔路徑為 /usr/local/sbin/
建立資料庫表格
當上述套件正確安裝完畢之後,可以利用ser_mysql.sh指令來執行建立或是刪除資料庫等相關工作。
如果是全新安裝的SER:
/usr/sbin/ser_mysql.sh createl (rpm/deb安裝)
或
/usr/local/sbin/ser_mysql.sh create (tar.gz安裝)
以上指令會建立新的SER資料庫的相關表格。
如果是要升級舊版SER程式的話,請執行:
/usr/sbin/ser_mysql.sh reinstall (rpm/deb安裝)
或
/usr/local/sbin/ser_mysql.sh reinstall (tar.gz安裝)
ser_mysql.sh其他相關使用語法:
ser_mysql.sh create 新建立資料庫
ser_mysql.sh drop 完全刪除SER資料庫
ser_mysql.sh reinit 完全刪除並重新建立SER資料庫表格
ser_mysql.sh backup 傾印現行資料庫並輸出到stdout
ser_mysql.sh restore <file> 從指定的檔案中回存資料庫
ser_mysql.sh copy <new_db> 從已經存在的資料庫中產生一個新的資料庫
ser_mysql.sh reinstall 更新並產生新的資料庫
要確認資料庫是否被正確產生出來,可以登入mysql伺服器後連結ser資料庫:
mysql> connect ser;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Connection id: 278
Current database: ser
然後列出資料庫表格:
mysql> show tables;
+-----------------------+
| Tables_in_ser |
+-----------------------+
| acc |
| active_sessions |
| aliases |
| config |
| domain |
| event |
| grp |
| location |
| missed_calls |
| pending |
| phonebook |
| preferences |
| reserved |
| server_monitoring |
| server_monitoring_agg |
| silo |
| subscriber |
| uri |
| version |
+-----------------------+
19 rows in set (0.00 sec)
看到以上表格便表示資料庫已經正確建立好了。
修改SER相關組態設定
現在我們已經有一個可以用的mysql資料庫,我們需要去修改SER的組態設定來使用mysql資料庫,
SER的設定所放的位置在 /etc/ser/ser.cfg (redhat及rpm安裝),或是 /usr/local/etc/ser/ser.cfg(tar.gz安裝)
要啟動支援新的mysql資料庫功能,必須載入正確的模組。這功能可藉由反註解(拿掉行首的#號)以下這行來達成:
loadmodule "/usr/lib/ser/modules/mysql.so"
接下來我們要設定SER將變動的資料寫入資料庫中來取代僅存放在記憶體上的快取資料。先註解(在行首加入#號)
掉以下這行:
modparam("usrloc", "db_mode", 0)
然後反註解掉(拿掉行首的#號)以下這行:
modparam("usrloc", "db_mode", 2)
關於db_modes的說明:
* Mode 0 (模式0)
關閉寫入資料庫。聯絡資料等會在系統重開機後流失。
* Mode 1 (模式1)
立刻將所有變更寫入資料庫中,聯絡資料等會立刻寫入資料庫。會使用戶端連線時的反應速度變慢。
* Mode 2 (模式2)
週期性的將聯絡資料等從記體體快取區中寫入到資料庫。
要啟動身份認證功能要將以下兩行反註解掉:
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
我們可以選擇將儲存在資料庫中的密碼以未加密模式存放。這樣可以讓密碼的回復以及初始設定與測試工作更容易進行。
要啟動這項功能請反註解掉以下兩行:
modparam ("auth_db", "calculate_ha1", yes)
modparam ("auth_db", "password_column", "password")
這兩行是一起工作的。第一行告訴卅R產生使用者名稱、密碼、及relam的雜湊(hash)。
第二行則告訴SER在資料庫中的那個欄位是放置未加密密碼的位置。
最後,我們需要更新路尤以辨識我們的realm。
變更 (uri=="myself") 為 (uri=~"mydomain.com")
反註解掉以下數行並用mydomain.com代替iptel.org
if (!www_authorize("mydomain.com", "subscriber")) {
www_challenge("mydomain.com", "0");
break;
};
注意!
以上範例中的mydomain.com僅作為範利使用,正式使用時須填入正確的主機名稱。
下載支援mysql的ser.cfg設定檔
rpm安裝者:
http://bell.idv.tw/bell/doc/SER相關資料/cfg/ser.cfg.mysql.rpm_install(0.8.12)
tar安裝者:
http://bell.idv.tw/bell/doc/SER相關資料/cfg/ser.cfg.mysql.tar_install(0.8.12_0.8.14)
下載完之後記得修改檔名為 ser.cfg 然後複製或移至 /usr/local/etc/ser 目錄下,
並將檔案內主機網址 bell.idv.tw 修改為適當的主機名稱即可使用。
重新啟動SER伺服器
執行
/etc/rc.d/init.d/ser restart or /etc/init.d/ser restart (RPM/deb套件安裝者)
或
/usr/local/sbin/serctl restart (tar.gz安裝者)
現在我們已經擁有支援 mysql 資料庫功能的SER SIP proxy server了。