某个人站点,需要实现以下的需求:(已根据实际案例进行操作) 
     1、要求搭建DNS服务器,维护一个 upl.com的域名的解析记录
        其中存在 www.upl.com的A记录,bbs.upl.com 别名到 www.upl.com,这些记录都指向本机IP,要求能够反向解析。       
    2、搭建apache服务器
        a、建立服务器用户的个人主页
        b、配置基于端口的apache网站服务
        c、配置基于IP的apache网站服务
        d、配置基于域名的apache网站服务
            要求建立两个虚拟主机,分别达到:
            虚拟主机1 绑定域名 www.upl.com ,网站的根目录为 /wwwroot/www如果没有首页,也不要显示welcome的页面。
            登入需要密码。
            用户:chen
            密码:123qwe
       
            虚拟主机2 绑定域名 bbs.upl.com ,网站的根目录为 /wwwroot/bbs
            允许列目录,允许链接。登入bbs.upl.com的首页要为index.html,不允许来自一个IP的访问。
            所有的虚拟主机要求使用DNS进行域名解析才能访问,不要使用本地的hosts作为解析。       
 
    3、搭建vsftp服务器,要就建立两个帐号,使用系统帐号验证,分别为 www 和 tom 。
        帐号的密码均为123,不允许登录系统,只能用于ftp登录
        要求 www登录之后,只能管理 /wwwroot/www目录下的内容,不能切换到外层的目录
        要求 bbs登录之后,只能管理 /wwwroot/bbs目录下的内容,不能切换到外层的目录
       
        要求建立虚拟账户,允许下载、写入;最大的写入空间为100M,下载速度为100KB/s
               
    4、要求建立一个raid5设备,并且支持磁盘配额,把该raid设备挂载到/wwwroot目录
        实现 www只能使用 200M空间 ,bbs只能使用 100M空间
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
分析:以上四个需求,可以按照我们的操作步骤来实现:
A、实现RAID5并开启Quota
B、DNS服务建立解析
C、apache
D、vsftpd
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
为了让实验成功,需要保证:1、静态IP,主机名可以正常解析
(本实例由某台实际服务的需求改编而来)
A、实现Raid5并开启quota.
备注:本例中,使用了3块8GB的SCSI硬盘(/dev/sdb,/dev/sdc,/dev/sdd)。存放web服务的数据!
以其中一块硬盘为例:
# fdisk /dev/sdd
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p  #直接分一个主分区
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044):
Using default value 1044
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd  
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@www ~]# partprobe
# mdadm --creat /dev/md5 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
mdadm: array /dev/md5 started.
# cat /proc/mdstat   #看看当前三块硬盘的状态同步情况
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd[2] sdc[1] sdb[0]
      16777088 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]  #3个U表示三个硬盘都是OK的,如果有其中一个挂了会显示[UU_],这个时候你就应该注意了。
unused devices: <none>
# mkfs.ext3 /dev/md5   #格式化这个硬盘,结果就不输出了。
# mkdir /wwwroot   
# vi /etc/fstab
/dev/md5                /wwwroot                ext3    defaults,usrquota 0 0
# mount -a && mount
........省略无关内容
/dev/md5 on /wwwroot type ext3 (rw,usrquota)
配置quota吧
# quotacheck -cau  && ll /wwwroot/
总计 28
-rw------- 1 root root  6144 11-08 05:48 aquota.user  #出现该文件表时usrquota已经OK,可以配置了。
drwx------ 2 root root 16384 11-08 05:42 lost+found
# useradd -s /sbin/nologin -d /wwwroot/www www
# useradd -s /sbin/nologin -d /wwwroot/bbs bbs
# passwd www 
# passwd bbs
-------------------------
备注:以上两条命令会让/wwwroot/bbs /wwwroot/www目录的权限为700。
为了让后面的apache实验能够不出问题,我们把权限改一下:
chmod 755 /wwwroot/{bbs,www}
笔者,在测试apache实验时曾出现不能访问,最终发生是这个目录的权限问题。
-------------------------
# edquota -u www
Disk quotas for user www (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/md5                          0      180000    200000       0        0        0
# edquota -u bbs
Disk quotas for user bbs (uid 501):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/md5                          0       90000   100000          0        0        0
# quotaon /wwwroot/
#这个时候可以试着写入一定大小的文件,然后进行测试。使用dd if=/dev/zero of=/wwwroot/www.file.90M bs=1M count=90
#关于最后的结果可以使用repquota -a 来看,对于用户-u,对于组-g
======================================================================
B、DNS 服务器的建立
安装包:bind,bind-chroot,bind-devel,bind-unitl包
安装方式:自己选吧
安装过程:略过
配置DNS服务器:
# cat /var/named/chroot/etc/named.conf
options {
        directory "/var/named";
};
zone "upl.com." {
        type master;
        file "data/master.upl.com.zone";
};
zone "10.168.192.in-addr.arpa." {
        type master;
        file "data/10.168.192.arpa.zone";
};

# cat /var/named/chroot/var/named/data/master.upl.com.zone
$TTL 86400
@       IN      SOA     www.upl.com.    postmaster.postfixlinux.3322.org. (
                0000001
                1400
                2500
                36000
                86400   )
@       IN              NS      www.upl.com.
www     IN              A       192.168.10.22
bbs     IN              CNAME   www
# cat /var/named/chroot/var/named/data/10.168.192.arpa.zone
$TTL 86400
@       IN      SOA     www.upl.com.    postmaster.postfixlinux.3322.org. (
                0000001
                1400
                2500
                36000
                86400   )
@       IN              NS      www.upl.com.
22      IN              PTR     www.upl.com.
# vi /etc/resolv.conf
nameserver 192.168.10.22
# vi /etc/resolv.conf
# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]
# nslookup www.upl.com
Server:         192.168.10.22
Address:        192.168.10.22#53
Name:   www.upl.com
Address: 192.168.10.22
# nslookup 192.168.10.22
Server:         192.168.10.22
Address:        192.168.10.22#53
22.10.168.192.in-addr.arpa      name = www.upl.com.
========================================================================
C、配置Apache服务
安装包:httpd.i386包
安装方式:RPM安装
安装过程:略过
配置:
    C.1、建立服务器用户的个人主页(其他内容保持默认值)
# vi /etc/httpd/conf/httpd.conf
---------------------------------------
<IfModule mod_userdir.c>
     #UserDir disable
    UserDir public_html
</IfModule>
<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>
---------------------------------------
要成功配置用户的个人主页,还要完成以下内容:
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
---------------------------------------
# useradd chen
# su - chen
$ mkdir public_html
$ chmod 755 public_html/
$ chmod 711 /home/chen/
$ echo "I am chen" >> /home/chen/public_html/index.html
# service httpd restart
停止 httpd:                                               [失败]
启动 httpd:                                               [确定]
经过本人测试OK。http://www.upl.com/~chen
    C.2配置基于端口的apache网站服务(以侦听80,81两个端口为例)
# vi /etc/httpd/conf/httpd.conf
-----------------------------------
Listen 80
Listen 81
DocumentRoot "/wwwroot/"
<Directory "/wwwroot">
<VirtualHost *:80>
    ServerAdmin postmaster@postfixlinux.3322.org
    DocumentRoot /wwwroot/web1
    ServerName www.upl.com
    ErrorLog logs/www.upl.com-error_log80
    CustomLog logs/www.upl.comm.com-access_log80 common
</VirtualHost>

<VirtualHost *:81>
    ServerAdmin postmaster@postfixlinux.3322.org
    DocumentRoot /wwwroot/web2
    ServerName www.upl.com
    ErrorLog logs/www.upl.com-error_log81
    CustomLog logs/www.upl.com-access_log81 common
</VirtualHost>
----------------------------------
# mkdir /wwwroot/web{1,2}
# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.confbk #这样就不会出现RHEL的测试首页了
# touch /wwwroot/web1/web1
# touch /wwwroot/web2/web2
# service httpd restart
停止 httpd:                                               [确定]
启动 httpd:                                               [确定]
经过测试OK。
    C.3配置基于IP的apache网站服务
# ifconfig eth0:0 192.168.10.23 netmask 255.255.255.0   (要‎永久生效,请修改./etc/sysconfig/network-scripts/ifcfg-eth0:0)
# vi /etc/httpd/conf/httpd.conf
-----------------------------------
DocumentRoot "/wwwroot/"
<Directory "/wwwroot">
<VirtualHost 192.168.10.22:80>
    ServerAdmin postmaster@postfixlinux.3322.org
    DocumentRoot /wwwroot/web1
    ServerName www.upl.com
    ErrorLog logs/www.upl.com-error_log80
    CustomLog logs/www.upl.comm.com-access_log80 common
</VirtualHost>

<VirtualHost 192.168.10.23:80>
    ServerAdmin postmaster@postfixlinux.3322.org
    DocumentRoot /wwwroot/web2
    ServerName www.upl.com
    ErrorLog logs/www.upl.com-error_log81
    CustomLog logs/www.upl.com-access_log81 common
</VirtualHost>
------------------------------------
# service httpd restart
停止 httpd:                                               [确定]
启动 httpd:                                               [确定]
经过测试OK。
    C.4配置基于域名的apaceh网站服务
# cat /etc/resolv.conf
nameserver 192.168.10.22
# vi /etc/httpd/conf/httpd.conf
-------------------------------------
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin postmaster@postfixlinux.3322.org
    DocumentRoot /wwwroot/www
    ServerName www.upl.com
    ErrorLog logs/www.upl.com-error_log80
    CustomLog logs/www.upl.comm.com-access_log80 common
        <Directory /wwwroot/www>
            Options -Indexes -FollowSymLinks
              AllowOverride all
            Order allow,deny
         Allow from all
        </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin postmaster@postfixlinux.3322.org
    DocumentRoot /wwwroot/bbs
    ServerName bbs.upl.com
    ErrorLog logs/www.upl.com-error_log81
    CustomLog logs/www.upl.com-access_log81 common
        <Directory /wwwroot/www>
            Options -Indexes -FollowSymLinks
              AllowOverride none
            Order allow,deny
         Allow from all
            deny from 192.168.10.59
        </Directory>
</VirtualHost>
----------------------------------------
# vim /wwwroot/www/.htaccess  #建立apache的权限文件
authname "www.upl.com"
authtype basic
authuserfile    /etc/httpd/passwd
require valid-user
------------------------------------------------
# htpasswd -c /etc/httpd/passwd chen
New password:
Re-type new password:
Adding password for user chen
------------------------------------------------
# service httpd restart
停止 httpd:                                               [确定]
启动 httpd:                                               [确定]
经过测试OK。
 
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
这里是我新增加的一段,因为看到一个博友说可以看到服务器的状态。
我先不说安全性了:http://ip/server-staus
<Location /server-status>
        sethandler server-status
        order deny,allow
         deny from all
         allow from all
</Location>   
另外就是一个server-info的模块,这个可危险了,可以看到apache所有开放的模块,都有很详细的信息。这要是被人给黑了,都不知道是怎么回事。。。。
所以我没有开放!
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
------------------------------------------------
实现FTP方面比较简单:
1、安装vsftpd(详见我之前的博文 )
2、开启功能chroot_local选项
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
3、将www,bbs两个用户加入到chroot_list目录里
#echo www >> /etc/vsftpd/chroot_list
#echo bbs >> /etc/vsftpd/chroot_list
完成用户的需求。