当前位置导航:炫浪网>>网络学院>>操作系统>>Linux教程

如何使用Linux搭建全自动的虚拟主机(上)


  一般,作为一所高校都会为各院系、部门,及老师、学生提供虚拟主机服务。一般要求有一个二级域名,能由用户自主管理,能支持PHP、JSP等动态网页技术,并且需要给用户一个空间限制,要求他们不能任意上传大量文件。
  
  对于熟悉Web的系统管理员实现以上要求并不困难:二级域名可以通过在域名系统做一个CNAME记录,并在Apache的配置文件里为其做一个基于名称的虚拟主机实现;自主管理可以通过给每个用户一个FTP账号实现;支持PHP和JSP则可以通过安装相应模块实现。但是问题随之而来,每次修改完Apache的配置文件后都要重新启动Apache;在域名系统里添加记录后还要做ndc reload(Red Hat 9.0下为mdc reload);随着用户的增加,系统的httpd.conf文件变大,/etc/passwd文件里的用户变多,这样一个大的系统对于管理、安全来说都是灾难性的。
  
  怎么能高效、安全、方便地管理这样一个系统呢?笔者作为一名高校的网络管理员,经过仔细地研究和实践,成功地利用自由软件在Linux服务器上实现了该系统的自动管理。一切工作都可以在Web页面上自助完成,系统会要求身份验证,管理员通过Web页面核对该用户资料是否属实,确认后可为用户开通服务。目前该系统运行良好。
  
  准备工作
  
  1.软件的选择
  
  按照需求提供服务是最基本的原则。这里提供服务的实际环境为一台DNS/Web服务器(IBM x232),要求有固定IP。
  
  这里选择Apache来提供虚拟Web服务。Apache是一个可自由使用、功能完备的Web服务器,被广泛地应用,许多商业Web服务软件都采用Apache作为前端服务软件。Apache有各种模块供用户选择,基本上能满足用户要求,这里使用两个重要的非默认模块。
  
  考虑现在普及的方式和系统成本,采用FTP来管理文件,实现用户的自我管理。FTP服务软件种类很多,选择的原则是:不能使用系统账号,安全性高,易用性强。经典的wu-ftpd在许多Unix平台是默认的FTP服务软件,但其使用了系统账号,安全性较差;与Red Hat搭配的vsftpd安全性高、稳定性好,但其易用性没有达到本系统要求。所以最后选择了proftpd。proftpd是一个非常流行的FTP服务软件,配置方便,并有MySQL和Quota模块可供选择,利用它们的完美结合可以实现非系统账号的管理和用户磁盘的限制。
  
  用户域名服务选择Bind。可在Red Hat系统安装时选择Bind。
  
  实现PHP动态网页服务当然少不了PHP。JSP则采用Resin,没有采用常见的Tomcat,主要是考虑Apache和Resin的结合会更好。当然,也可以选择其它服务软件。
  
  最后还必须安装MySQL软件。安装MySQL软件可以在Red Hat系统安装时进行,也可以安装完系统后再手工安装。这里选择手工编译安装,尽管RPM包安装要方便很多,但手工编译带来的是更方便的选择。
  
  除以上软件外,该系统还安装了Zend Optimizer和mod_security。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)MySQL4.0.16
  
  #wget http://www.mysql.com/get/Downloads/MySQL-4.0/mysql-4.0.16.tar.gz/from/http://mysql.linuxforum.net/
  
  (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
  
  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文件配置示例如下:
  
  options {
   directory "/var/named";
  };
  zone "." in {
   type hint;
   file "named.root";
  };
  zone "0.0.127.in-addr.arpa" in {
   type master;
   file "localhost.rev";
  };
  zone "yourdomain.com" in {
   type master;
   file "yourdomain.hosts";
  };
  zone "176.118.202.in-addr.arpa" in {
   type master;
   file "176.rev";
  };
  
  域名里面的yourdomain是配置的关键,将采用泛域名形式。
  
  /var/named/yourdomain.hosts文件内容如下:
  $TTL 3600
  @ IN SOA hrbeu.hrbeu.edu.cn. root.mail.hrbeu.edu.cn. (
   2003080812 ; serial
   360000 ; refresh every 100 hours
   3600 ; retry after 1 hour
   4w ; expire after 4 weeks
   3600 ; default ttl is 1 hours
   ) ; Define the nameservers and mail servers
   IN NS hrbeu.hrbeu.edu.cn.
   IN NS lion.hrbeu.edu.cn.
   IN MX 10 mail.yourdomain.com.
  ; Define localhost
  localhost IN A 127.0.0.1
  ; Define hosts in this zone
  *.yourdomain.com. IN A 218.7.43.21
  
  其中主要用的就是这个*.yourdomain.com. IN A 218.7.43.21。以后任何像abc.yourdomain.com、hello.yourdomain.com的域名都将解析到218.7.43.21。这样就不用每开一个虚拟主机都必须在域名系统上做一个CNAME记录,并reload域名配置文件。特别要注意的是,*.yourdomain.com.后面有一个“.”。
  
  3.MySQL的安装和配置
  
  (1)添加mysql用户和mysql组
  
  #cd /root/vhosts/
  #groupadd mysql
  #useradd -g mysql mysql
  
  (2)编译安装
  
  #tar -zxvf mysql-3.23.52.tar.gz
  #cd mysql-3.23.52
  #./configure --prefix=/usr/loca/mysql
  #make
  #make install
  
  (3)初始化数据库,修改目录权限并启动数据库
  
  #scripts/mysql_install_db
  #chown -R root /usr/local/mysql
  #chown -R mysql /usr/local/mysql/var
  #chgrp -R mysql /usr/local/mysql
  #cp support-files/my-medium.cnf /etc/my.cnf
  #/usr/local/mysql/bin/safe_mysqld --user=mysql &
  
  (4)设置MySQL自启动
  
  #cp support-files/mysql.server /etc/init.d/
  #ln -s /etc/init.d/mysql.server /etc/rc3.d/S99mysqld
  
  注意,修改mysql.server和S99mysqld为可执行。
  
  为了方便以后进入MySQL,最好把MySQL的客户端程序路径加入到/etc/profile中。在该文件末尾加入export PATH=/usr/local/mysql/bin:$PATH。
  
  到此MySQL的安装已经完成,可以使用MySQL命令进入。注意要先退出再进入,因为已经修改/etc/profile,重新进入后才能自动搜索MySQL路径。进入后,请注意修改MySQL的root密码。命令如下:
  
  #mysqladmin -u root password newpassword
  
  注意,还应删除自己的.bash_history文件,否则可能造成密码泄露。
  
  4.proftpd的安装
  
  (1)将proftpd的源码包解压缩到目录下
  
  #tar -zxvf proftpd-1.2.8.tar.gz
  
  解压缩mod_quotatab-1.2.7:
  
  #tar -zxvf proftpd-mod-quotatab-1.2.7.tar.gz
  
  进入mod_quotatab目录,把mod_quotatab中的文件拷贝到proftpd的modules目录中:
  
  #cd mod_quotatab
  #cp -Rpf * ../proftpd-1.2.8/modules
  
  (2)在开始运行configure之前,先修改mod_sql_mysql.c文件
  
  #cd ../proftpd-1.2.8/contrib
  #vi mod_sql_mysql.c
  
  把#include 改为实际路径,如MySQL安装在/usr/local/mysql下,将其修改为:
  
  #include </usr/local/mysql/include/mysql/mysql.h>
  
  (3)配置proftpd
  
  #cd ..
  #./configure--prefix=DIR
  --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql
  --with-includes=DIR
  --with-libraries=DIR
  
  需要修改的三个地方是:
  
  ◆--prefix=DIR,DIR为要安
相关内容
赞助商链接