目前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);
注:以上已经假设传过来的参数经过了验证,不存在重复的记录,否则会导致已有记录的混乱。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器