环境:RHEL5.3,DNS已经配置好为: www.station53.com
    对Apache全面做了说明,简单的web服务器的实现,虚拟主机的实现,个人主页的时间,主页加密验证的实现,都有详细介绍。
一、Apache服务总览:
 1、所需要的软件包:httpd   httpd-devel   httpd-manual
 2、端口:80(http)  443(https)
 3、主配置文件:/etc/httpd/*
 4、默认主页目录:/var/www/html
 5、与Apache服务相关的Selinux环境:
 1)system_u:object-r:httpd_config_t
  /etc/httpd/conf和/etc/httpd/conf.d 下的文件
 2)system_u:object_r:httpd_log_t
  /etc/httpd/logs中的日志文件。
 3)system_u:object_r:httpd_modules_t
  httpd服务使用的相关模块
 4)网页内容及网页目录的环境:
   System_u:object_r:httpd_sys_content_t:如果不是这个页面将无法访问。
  另:对于目录,Other组要有访问和可执行权限。
  设置Selinux环境:
  Chcon -R —reference=/var/www/html   /var/www/html/data
  Restorecon -R /var/www/html
  建议网站目录都放到/var/www/html防止因为Selinux造成问题。
二、Apache配置文件的简单实现:
1、 相关配置文件修改:/etc/httpd/conf/httpd.conf
1)、ServerRoot”/etc/httpd” 默认配置文件的存放目录;
 2)、Timeout 120 客户端访问超时时间120秒;
 3)、Listen 80  监听80端口;
 4)、ServerAdmin [email protected]  设置管理员邮箱;
 5)、ServerName www.station53.com服务器主机名,可以使DNS域名,也可以是IP地址;
 6)、DocumentRoot /var/www/html  网页默认存放目录;
 7)、DirectoryIndex index.html  index.htm  设置主页文件的名字;
 2、建立主页文件:
 在/var/www/html目录建立主页文件index.html并写上写内容。
 3、启动相关服务:
 chkconfig httpd on
 service httpd restart
 4、测试自己的服务器:
三、用户个人主页的实现:
 通过配置使我们每个用户都有一个主页可以通过 http://www.station53.com/~Username访问的主页。
主配置文件的修改:
-----------------------------------------------------

    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #UserDir disable //默认 是开启的,禁用掉就可以实现个人网站了
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    #
    UserDir public_html //个人网站存放目录/home/Username/public_html


    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
   
        Order allow,deny  //allow,deny规则,先判断allow,后判断deny,冲突时,后面的有效;
        Allow from all   //没有任何限制
#   Deny from 192.168.1 //上下冲突,这个时候deny起作用,除了192.168.1网段的外其他的都可以访问你
   

#   
#        Order deny,allow
#        Deny from all
#   


----------------------------------------------------------------------
备注:
1) 目录权限设置:
----------------------------------------------------------------------

    AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all


-------------------------------------------------------------------
AllowOverride:用于定义位于每个目录下的.htaccess(访问控制)文件中的指令类型。如果要禁用的话:AllowOverride None。
Options MultiViews:定义目录使用那些特性。
 Indexes:允许目录浏览,但没有指定访问目录下的那个文件,而其目录下不存在默认文档时Apache以超文本形式返回目录中的文件和子目录列表。
 MulitiViews:允许内容协商的多重试图。当访问 http://127.0.0.1/icons/a时,服务会查找目录下的所有a.*的文件,如果目录下有就会显示这个文件,而不是报错信息。
 All:包含了除MulitiViews之外的所有特性,如果没有Options语句默认为All。
 ExecCGI:允许执行CGI脚本。
 FollowSymLinks:在该目录中可以使用符号链接。
 Includes:允许服务端包含功能。
 IncludesNoExec:允许服务端包含功能但不允许执行CGI脚本。
 2)缺省访问权限和allow、deny顺序:
  allow,deny规则,先判断allow,后判断deny,冲突时,后面的有效;
例子如下:
---------------------------------------------------------------------
Order deny,allow
allow from all
deny from 192.168.0.250
#全部都可以通行
 
Order allow,deny
deny from hacker.com
deny from 192.168.0.250
#只hecker.com和192.168.0.250不能访问
 
Order deny,allow
allow from 192.168.0/24
#允许所有主机访问
 
Order allow,deny
allow from 192.168.0/24
#只有192.168.0/24网段可以访问
-------------------------------------------------------
2)个人网站主目录的设置及文件的建立:
 在个人目录/home/username目录下创建public_html目录。
 建立自己的主页,然后在浏览器输入“http://URL/~username”即可,
 备注:注意public_html目录和里面的文件的Selinux环境参数,如果有问题请按照上面讲的调整。
四、虚拟主机的设置:
 (默认已经设计好 www.station53.com  下面我们在开通 www.server53.com 和 www.client53.com
 1、配置DNS:
 1)编辑/var/namde/chroot/etc/named.conf,编辑好文件如下:
----------------------------------------------------------------------------------
……前面省略
zone "server53.com" IN {
        type master;
        file "server53.com.zone";
};
zone "client53.com" IN {
        type master;
        file "client53.com.zone";

后面省略……   //红色为新加内容,分别用于解释server53.com和client53.com两个域名。
------------------------------------------------------------------------------------
2)在/var/named/chroot/var/named生成:server53.com.zone和client53.com.zone两个文件:
------------------------------------------------------------------------------------
[root@station1 named]# cp station53.com.zone server53.com.zone
[root@station1 named]# cp station53.com.zone client53.com.zone
----------------------------------------------------------------------------------
3)修改权限及文件内容:
-----------------------------------------------------------------------------
[root@station1 named]# chgrp named server53.com.zone
[root@station1 named]# chgrp named client53.com.zone
[root@station1 named]# vim client53.com.zone
$TTL    86400
@               IN SOA  ns.client53.com.       root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           ns.client53.com.
                IN NS           www.client53.com.
                IN MX   5       mail.client53.com.
ns              IN A            192.168.0.253
www           IN A            192.168.0.253
mail            IN A            192.168.0.253
//我做的解析比较多大家可以只做个www就可以。
------------------------------------------------------------------------------------
4)在/var/named目录下建立server53.com.zone、client53.com.zone的连接文件,并调整好权限:
------------------------------------------------------------------------------------
[root@station1 named]# ln -s chroot/var/named/server53.com.zone .
[root@station1 named]# ln -s chroot/var/named/client53.com.zone .
[root@station1 named]# chgrp named server53.com.zone
[root@station1 named]# chgrp named client53.com.zone
--------------------------------------------------------------------------------------
5)重新启动DNS服务并测试新建立的域名。
 2、编辑/etc/httpd/conf/httpd.conf文件:
-----------------------------------------------------------------------
NameVirtualHost *:80

#    ServerAdmin [email protected]
     DocumentRoot /var/www/html/server53
    ServerName
www.server53.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common


    DocumentRoot /var/www/html/client53
    ServerName
www.client53.com

----------------------------------------------------------------------------
3、重新启动Apache服务,测试设置是否满足要求:
 1)在/var/www/html目录下分别建立server53 和 client53两个目录,并添加主页文件,处理其相关的Selinux环境设置。
 2)重新启动Apache服务测试:
 ??什么 www.station53.com 和 www.server53.com显示的一样?
 所以我们要继续修改/etc/httpd/conf/httpd.conf,添加如下段内容:
---------------------------------------------------------------------------------------

    DocumentRoot /var/www/html/station53
    ServerName
www.station53.com

---------------------------------------------------------------------------------------
在/var/www/html目录下建立station53目录,并建立主页文件处理selinux环境。
一旦打开虚拟主机功能,那么每个域名都要在虚拟主机项目相应的位置添加与之对应的项目,否则默认访问第一个虚拟主机的设置。
 通过了?OK!!!
五、主页的用户认证的设置:(以redhat的个人目录为例!)
 1、配置httpd.conf文件,使目标目录支持认证:
 目标目录在httpd.conf中要有 AllowOverride AuthConfig 项,默认开启用户个人主页后,用户个人目录支持这个设置。
---------------------------------------------------------------------------
  //用户家目录,也可以针对某个目录单独做个……说明项目。
    AllowOverride FileInfo AuthConfig Limit  //默认就有这个支持。
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
   
        Order allow,deny 
        Allow from all
   

#   
#        Order deny,allow
#        Deny from all
#   


-------------------------------------------------------------------------
2、建立.htaccess文件,建立在站点目录下,这里就是/home/redhat/public_html目录下。
-------------------------------------------------------------
[root@station1 ~]# vim /home/redhat/public_html/.htaccess
AuthType Basic               //密码测试方式;
AuthName "密码测试"   //弹出的密码检测框里的内容;
AuthUserFile /home/redhat/public_html/.passwords  //密码文件的存放位置;
Require user redhat   //可以允许密码文件中的所有用户使用正确的密码进行访问。
-----------------------------------------------------------------
3、建立.passwords文件:
--------------------------------------------------------------
[root@station1 ~]# htpasswd -c /home/redhat/public_html/.passwords redhat
New password:
Re-type new password:
Updating password for user redhat
--------------------------------------------------------------
4、测试效果:
 肯定OK,注意不要写错,我在配置.htaccess的时候密码文件放置位置的名字写错了,一直在验证密码,怎么都跳不过去,呵呵。注意这两个文件都是隐藏文件名字前面带点。
 如果DNS部分配置有问题,请查看Blog中关于DNS部分的心得。