用Linux搭建全自动的虚拟主机(上)
用Linux搭建全自动的虚拟主机
王光辉
作为一所高校,必须为各院系、各部门,以及老师、学生提供虚拟主机服务。一般要求有一个二级域名,能由用户自主管理,能支持PHP、JSP等动态网页技术,并且需要给用户一个空间限制,要求他们不能任意上传大量文件。 对于一些熟悉Web的系统管理员实现以上要求并不是太困难。二级域名可以通过在域名系统做一个CNAME记录,并在Apache的配置文件里为其做一个基于名称的虚拟主机即可实现;可以通过给每个用户一个FTP账号来实现自主管理;支持PHP和JSP则可以通过安装相应模块来实现。但是问题随之而来。每次做一个账号都必须手忙脚乱地忙碌好一阵子;每次修改完Apache的配置文件后都要重新启动Apache;在域名系统里添加记录后还要做一个ndc reload,更加让人头疼的是,随着用户的增加,系统的httpd.conf文件会变大,/etc/passwd文件里的用户会变多,这样一个大的系统对于管理、安全来说都是灾难性的。 怎么去有效、安全、方便地管理这样一个系统呢?笔者作为一名高校的网络管理员,在经过仔细地研究和实践后,成功地利用自由软件在Linux服务器上实现了该系统的自动管理,一切工作都可以由用户在一个Web页面上自助完成,目前该系统运行良好。当然,系统会要求一个身份验证,管理员通过Web页面核对该用户资料是否属实,确认后通过简单地选择“通过”按钮,就可方便地为用户开通服务。 准备工作 1.软件的选择 按照需求提供服务是最基本的原则。这里需要提供服务的实际环境为一台DNS服务器(HP E50)和一台Web服务器(IBM x232),如果条件不允许,也可以在一台服务器上实现。当然,对于固定IP的要求一般单位应该都能满足。 这里选择了Apache来提供虚拟Web服务。Apache由Apache软件基金会组织(Apache Software Foundation)负责开发,是一个可自由使用的、功能完备的Web服务器,因此被广泛地使用。许多商业Web服务软件都采用了Apache作为前端服务软件。Apache有各种各样的模块供用户选择,基本上能满足用户要求,这里会使用2个重要的非默认模块。 考虑到现在普及的方式和系统成本,采用FTP来管理文件实现用户的自我管理。FTP服务软件种类很多,选择的原则是:不能使用系统账号,安全性高,易用好强。经典的wu-ftpd在许多Unix平台是默认的FTP服务软件,但是其使用了系统账号,安全性较差;与Red Hat搭配的vsftpd安全性高,稳定性也很好,但是其易用性没有达到本系统的要求。所以最后确定选择了proftpd。这是一个非常流行的FTP服务软件,配置方便,并有MySQL模块和Quota模块可以选择,可以利用它们的完美结合实现非系统账号的管理,用户磁盘的限制。 用户域名服务选择Bind,几乎所有的Unix/Linux系统都在使用它,并且几乎所有大的DNS服务提供者都采用了它。可在Red Hat系统安装时选择Bind。 实现PHP动态网页服务当然少不了PHP。JSP则采用了Resin。没有采用常用的Tomcat,主要是考虑Apache和Resin的结合会更好。当然,也可以选择任何您认为好的服务软件。 最后还必须安装MySQL软件,可以在Red Hat系统安装时安装它,也可以选择安装完系统后再手工安装。这里选择了手工编译安装,尽管RPM包安装要方便很多,但手工编译带来的是更方便的选择。 除以上软件外,该系统还安装了Zend Optimizer,该软件不仅能提供加密代码的执行,更关键的是能够提高PHP代码的执行效率。Mod_security是一个为了防范某些SQL注入攻击行为的模块。更多信息请参考相关资料。 2.软件的下载 可将所有软件都下载到/root/vhosts/下。 (1)Apache1.3.28 #wget ftp://ftp.linuxaid.com.cn/pub/mirrors/apache/dist/httpd/apache_1.3.28.tar.gz(2)PHP4.3.3 #wget http://php.linuxaid.com.cn/get/php-4.3.3.tar.gz/from/cn.php.net/mirror(3)MySQL3.23.52 #wget http://mysql.linuxaid.com.cn/Downloads/MySQL-3.23/mysql-3.23.52.tar.gz(4)proftpd1.2.8 #wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.8.tar.gz(5)proftpd-mod-quotatab-1.2.7 #wget http://www.castaglia.org/proftpd/modules/proftpd-mod-quotatab-1.2.7.tar.gz(6)Resin2.1 #wget http://www.caucho.com/download/resin-2.1.11.tar.gz(7)Zend Optimizer #wget http://www.zend.com/store/getfreefile.php?pid=13&zbid=548这里要有一个accept的用户授权协议,然后才能下载。 (8)mod_security #wget http://www.modsecurity.org/download/mod_security-1.6.tar.gz下面就一起进入具体的实现步骤。具体实现前,请注意安装系统时要求选择开发包,即把GCC及关联软件包选择上。 系统安装和配置 1.DNS服务器的安装 安装Red Hat 9.0时选择服务器安装方式,除选择域名服务外,其它的所有软件均可不装。安装需要的安装系统是安全的一个基本原则。 2.域名服务器的配置 首先将申请域名的解析权利交给该台DNS服务器,具体办法是申请的时候要求把DNS解析权指向该服务器,然后就可在其上配置域了。 /etc/named.conf文件配置示例如下:
域名里面的yourdomain是配置的关键,将采用泛域名形式。 /var/named/yourdomain.hosts文件内容如下:
|