目前Linux作業系統十分火爆,所以很多朋友希望瞭解一下Linux下虛擬網域名稱的實現過程。下面就基於目前比較流行的RedHat來討論一下。
三、CGI程式的編製
要實現虛擬網域名稱的線上申請,就必須編寫相應CGI程式動態修改獨立的設定檔(即上面的vhostdbm檔案)和進行使用者的管理(包括使用者申請,登入,密碼修改等等)。在此只介紹對獨立的設定檔的操作,其他屬於如何用Perl語言來編寫CGI程式,請參考有關資料。
vhostdbm檔案使用dbm格式來記錄資料,與用普通文字檔相比可加快尋找速度,而且易於修改。許多UNIX系統都具有叫做dbm(database management)的標準庫。該庫將鍵-值對的集合存貯到一對磁碟檔案中,提供簡單的資料庫管理工具,可以方便的更改、新增或刪除資料內容。
Perl訪問dbm的方式:通過一個類似於開啟檔案的進程將關聯陣列與dbm資料庫聯絡起來。在數組中建立新元素時立即就更改了dbm資料庫。刪除一個元素的同時也刪除了dbm資料庫中的數值。可使用:
1、欲將dbm資料庫與dbm數組相關聯起來:
dbmopen(%arrayname,"dbmfilename",$mode);
如果dbmfilename不存在的話就建立該庫。%arrayname參數是Perl的關聯陣列(如果這個數組已經有值,那麼這些值就被刪除)。該關聯陣列串連到叫做dbmfilename的dbm資料庫中。$mode 參數是當需要建立庫時控制庫檔案許可權的數字,該數字被指定為8制,經常被用到的是0644,給除了機主之外的新使用者以唯讀許可權,機主可有全部許可權。
2、關閉dbm庫:
dbmclose(%arrayname);
%arrayname 是已經與dbm庫關聯了的數組名。
例6、VHOST開啟vhostdbm,或建立一個dbm庫:
dbmopen(%VHOST,"vhostdbm",0644);
例7、建立記錄或更改已有記錄(設從html檔案form中傳過來的參數名為vhost、rhost):
$VHOST{$FORM{'vhost'}}=$FORM{'rhost'};
例8、刪除已有記錄(設從html檔案form中傳過來的參數名為vhost):
delete $VHOST{$FORM{'vhost'}};
例9、關閉vhostdbm:
dbmclose(%VHOST);
註:以上已經假設傳過來的參數經過了驗證,不存在重複的記錄,否則會導致已有記錄的混亂。(出處:PConline)