目前 Linux 操作系統十分火爆,所以很多朋友希望了解一下Linux下虛擬域名的實現過程。下面就基於目前比較流行的RedHat來討論一下。三、CGI程序的編制 要實現虛擬域名的在線申請,就必須編寫相應CGI程序動態修改獨立的配置文件(即上面的vhos td bm文件)和進
目前
Linux操作系統十分火爆,所以很多朋友希望了解一下Linux下虛擬域名的實現過程。下面就基於目前比較流行的RedHat來討論一下。三、CGI程序的編制
要實現虛擬域名的在線申請,就必須編寫相應CGI程序動態修改獨立的配置文件(即上面的vhos
tdbm文件)和進行用戶的管理(包括用戶申請,登錄,密碼修改等等)。在此只介紹對獨立的配置文件的操作,其他屬於如何用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);
注:以上已經假設傳過來的參數經過了驗證,不存在重復的記錄,否則會導致已有記錄的混亂。