天天看点

Apache

apache

编译安装httpd软件包

[root@redhat ~]# ll

总计 6316

-rw------- 1 root root    1510 2011-01-08 anaconda-ks.cfg

drwxr-xr-x 2 root root    4096 2011-01-08 desktop

-rwxrw-rw- 1 root root 6396996 2009-11-25 httpd-2.2.9.tar.gz

-rw-r--r-- 1 root root   30057 2011-01-08 install.log

-rw-r--r-- 1 root root    3995 2011-01-08 install.log.syslog

[root@redhat ~]# tar zxvf httpd-2.2.9.tar.gz -c /usr/src/

[root@redhat ~]# cd /usr/src/httpd-2.2.9/

[root@redhat httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite

--prefix:用于指定httpd服务程序将要安装到的系统目录,这里设置的是缺省目录“/usr/local/apache2”

--enable-so:使httpd服务能够动态加载模块功能

--enable-rewrite:使httpd服务具有rewrite网页地址重写功能

“./configure”命令的执行过程需要一定的时间,屏幕上将详细的显示配置过程信息

………………

………………………..

……………………………….略过的显示信息

creating test/makefile

config.status: creating docs/conf/httpd.conf

config.status: creating docs/conf/extra/httpd-autoindex.conf

config.status: creating docs/conf/extra/httpd-dav.conf

config.status: creating docs/conf/extra/httpd-default.conf

config.status: creating docs/conf/extra/httpd-info.conf

config.status: creating docs/conf/extra/httpd-languages.conf

config.status: creating docs/conf/extra/httpd-manual.conf

config.status: creating docs/conf/extra/httpd-mpm.conf

config.status: creating docs/conf/extra/httpd-multilang-errordoc.conf

config.status: creating docs/conf/extra/httpd-ssl.conf

config.status: creating docs/conf/extra/httpd-userdir.conf

config.status: creating docs/conf/extra/httpd-vhosts.conf

config.status: creating include/ap_config_layout.h

config.status: creating support/apxs

config.status: creating support/apachectl

config.status: creating support/dbmmanage

config.status: creating support/envvars-std

config.status: creating support/log_server_status

config.status: creating support/logresolve.pl

config.status: creating support/phf_abuse_log.cgi

config.status: creating support/split-logfile

config.status: creating build/rules.mk

config.status: creating build/pkg/pkginfo

config.status: creating build/config_vars.sh

config.status: creating include/ap_config_auto.h

config.status: executing default commands

[root@redhat httpd-2.2.9]# make  //配置完成以后,执行“make”命令进行编译将源代码转换为可执行的程序,同样会在屏幕上显示编译过程信息。

make[1]: leaving directory `/usr/src/httpd-2.2.9'

[root@redhat httpd-2.2.9]# make install //执行“make install”命令完成最后的安装过程,将已经编译完的httpd程序及相关目录,文件复制到预设的安装目录(由配置时的“--prefix”选项指定)中。

[root@redhat httpd-2.2.9]# /usr/local/apache2/bin/apachectl start  //启动httpd服务

 httpd服务的目录结构

在httpd软件的安装目录“/usr/local/apache2/”中,包括了运行web服务器所需要的执行程序,配置文件,日志文件,帮助手册等所有内容,该目录被称为apache服务器的根目录

[root@redhat ~]# cd /usr/local/apache2/

[root@redhat apache2]# ls

bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules

[root@redhat apache2]# ls bin/  //bin目录中包括了运行和管理web服务所需要的执行程序,其中httpd是服务器的执行程序,apachectl是服务器包含的执行程序

ab         apr-1-config  apxs      dbmmanage  envvars-std   htdbm     htpasswd  httxt2dbm   rotatelogs

apachectl  apu-1-config  checkgid  envvars    htcacheclean  htdigest  httpd     logresolve

[root@redhat apache2]# ls conf/  conf目录用于保存apache服务器的配置文件,其中httpd.conf是apche服务器的主配置文件

extra  httpd.conf  magic  mime.types  original

[root@redhat apache2]# ls htdocs/  //htdoc目录是apache服务器的文档根目录,该目录将作为web站点网页文件存放的根目录。

apache_pb22_ani.gif  apache_pb22.gif  apache_pb22.png  apache_pb.gif  apache_pb.png  index.html

 其他一些相关目录的作用分别如下

manual目录中保存了apache服务的完整配置指南文档,以html文件格式提供

man目录用于保存httpd,apachectl等程序的man帮助文档

lib目录中保存了运行apahce服务器所需的库文件

modules目录中保存了提供给apache服务器动态加载的模块文件

logs目录用于保存apache服务器的日志文件

 修改主配置文件httpd.conf

是用servername设置的主机域名,应在该域的授权dns服务器中设置有对应的a记录,以便所有主机都可以通过该域名访问到这台web服务器

[root@redhat ~]# vim /usr/local/apache2/conf/httpd.conf

servername www.benet.com

 检查httpd.conf文件的语法设置

在对httpd.conf文件进行修改后,是用带“-t”选项的apachectl命令对配置内容进行语法检查(也可以使用“httpd -t”)

[root@redhat ~]# /usr/local/apache2/bin/apachectl -t

syntax ok

[root@redhat ~]# /usr/local/apache2/bin/httpd -t

[root@redhat ~]# /usr/local/apache2/bin/apachectl start

//使用apachectl脚本程序启动httpd服务,并观察httpd服务的监听状态

[root@redhat ~]# netstat -anpt | grep :80

tcp        0      0 :::80                       :::*                        listen      5464/httpd 

 上述apachectl脚本命令“start”为启动“stop”为关闭“restart”为重启

当httpd服务程序启动后,可以在网页浏览器中访问apache服务器的域名或ip地址页面会显示“lt works !”的字样。表示httpd服务已经成功运行

 排除httpd服务的个别启动故障

当httpd服务识别的主机名与服务器实际的主机名不一致时,肯导致启动httpd服务器启动时候反应非常缓慢,且出现以下命令提示信息

[root@redhat httpd-2.2.9]# /usr/local/apache2/bin/apachectl start

httpd: could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for servername

编辑httpd.conf主配置文件,添加配置行“servername www.benet.com”知道完整的主机名,若缺少“servername”配置行,httpd服务可能会将“127.0.0.1”作为主机名

编辑“/etc/sysconfig/network”文件,修改主机名,例如“hostname=www.benet.com”

编辑“/etc/hosts”文件添加服务器的主机名,ip地址映射记录,如192.168.1.1    www.benet.com  www

 若希望在服务器开机后自动运行httpd服务,可以将对应的启动命令写入到“/etc/rc.d/rc.local”文件

[root@redhat ~]# vim /etc/rc.d/rc.local

/usr/local/apache2/bin/apachectl start

[root@redhat ~]# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd

[root@redhat ~]# service httpd stop  //修改为“service”的启动或关闭方式

[root@redhat ~]#

[root@redhat ~]# chkconfig --add httpd //默认不支持chkconfig工具

httpd 服务不支持 chkconfig

[root@redhat ~]# vim /etc/init.d/httpd //在第二行插入chkconfig参数设置

#!/bin/sh

#chkconfig:35 85 15

#description:new http server daemon

[root@redhat ~]# chkconfig --add httpd

[root@redhat ~]# chkconfig --list httpd

httpd           0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭

httpd.conf配置文件的结构

serverroot "/usr/local/apache2"

listen 80

user daemon

group daemon

serveradmin [email protected]

documentroot "/usr/local/apache2/htdocs"

directoryindex index.html

errorlog "logs/error_log"

loglevel warn

customlog "logs/access_log" common

pidfile logs/httpd.pid

timeout 300

keepalive on

maxkeepaliverequests 100

keepalivetimeout 15

include conf/extra/httpd-vhosts.conf

serverroot:用于设置hhtpd服务器的根目录,该目录中包括了运行web站点必须得目录和文件。默认的根目录为“/usr/local/apache2”, 与httpd的安装目录相同。在httpd.conf配置文件中,如果设置的目录或文件不使用绝对路径,都认为是在服务器跟目录下面。

 listen:用于设置apache服务器监听的网络端口,默认为80

 user:用于设置httpd进程时的用户身份

 group:用于设置运行httpd进程的组身份

 serveradmin:用于设置apache服务器管理的e-mail地址,可以通过此e-mail地址及联系apache服务器管理员

servername:用于设置apache服务器的完整主机名(fqdn)

 documentroot:用于设置网页文档根目录在系统中的实际路径。documentroot配置项比较容易和serverroot混淆,需要格外注意

 directorylndex:用于设置网站的默认索引页(首页),可以设置多个文件,以空格分开,默认的首页文件名为index.html

 errorlog:用于设置错误日志文件的路径和文件名,默认设置为“/logs/error_log”

 loglevel:用于设置记录日志的级别,默认为warn(警告)

 customlog:用于设置apache服务器中访问日志文件的路径和格式类型

 pidfile:用于设置保存httpd服务器进程号(pid)的文件,默认设置为“logs/httpd.pid”,“logs”目录位于apache的服务器根目录中

timeout:用于设置web服务器与浏览器之间网络连接的超时秒,默认设置为300秒

 keepalive:用于设置是否使用保存连接功能。设置为off时表示不使用,客户机的每次连接只能从服务器上请求返回一个文件。传输的效率比较低;当设置为on时,客户机与服务器建立一次连接后可以请求传输多个文件,将提高服务器传输文件的效率

 maxkeepaliverequests:用于设置客户端每次连接允许请求响应的最大文件数,默认为100个。当keepalive设置为on时才生效

 keepalivetimeout:用于设置保持连接的超时秒数,当客户机的两次相邻请求超过该设置值时需要重新进行连接请求,默认设置值为15秒

 lnclude:用于包含另一个配置文件的内容,可以将实现一些特殊功能的配置单独放到一个文件里,在使用lnclude配置项包含到httpd.conf主配置文件中来,便于独立维护。

 以上配置项是httpd.conf文件的最主要的全局配置项,还有很多其他的配置项,在此不一一列举,如果需要使用可以查看apache服务器中的相关手册文档

 httpd.conf中的区域设置

除了全局配置项外,httpd.conf文件中的大多数配置都是包括在区域中的。 区域设置使用一对组合标记,限定了配置项的作用范围。如 配置文件中常用的目录域的形式

<directory />

    options followsymlinks

    allowoverride none

    order deny,allow

    deny from all

</directory>

 以上的区域定义中,使用<directory />定义区域的开始,使用</directory>定义该区域的结束,期间的设置内容只作用于区域内部,而不会在全局或其他区域中生效。目录区域设置主要用于特定的目录(如系统根目录/)设置访问控制权限。

 除了目录区域外,经常会设置的还有虚拟机区域“<virtualhost>……</virtualhost>”。

访问日志文件

该文件用于记录客户端访问web服务器的事件,文件中每一行对应一条访问记录,将会记录客户机的机主机的ip地址,访问服务器的日期和时间,请求的网页对象等信息。

[root@redhat ~]# tail -2 /usr/local/apache2/logs/access_log

192.168.1.1 - - [07/jan/2011:17:14:36 +0800] "get /favicon.ico http/1.1" 404 209

192.168.1.1 - - [07/jan/2011:17:14:39 +0800] "get /favicon.ico http/1.1" 404 209

web站点的典型应用

 测试httpd服务器的性能

httpd服务自带了一个压力测试工具ab(apache benchmark apahce基准测试工具),用于检测web站点的性能表现,例如 并发平均时间,速度以及并发连接处理能力等。

ab命令工具为于安装目录“bin/”文件下,使用格式如下。

ab [-q] -c 并发请求数 -n 总请求数 [http://}域名[:端口]/路径

 在rhel5系统中默认允许打开的最大文件数为1024,由于使用ab测试工具时可能需要同时打开更多的文件,因此需要使用ulimit命令突破这个限制。ulimit是一个bash内部命令,可以用于对shell进程使用的系统资源进行限制。-a选项用于显示所有设置值。

[root@redhat ~]# ulimit -a | grep "open files"

open files                      (-n) 1024

[root@redhat ~]# ulimit -n 10000

open files                      (-n) 10000

[root@redhat ~]# /usr/local/apache2/bin/ab -q -c 2000 -n 4000 http://www.benet.com/

this is apachebench, version 2.3 <$revision: 655654 $>

copyright 1996 adam twiss, zeus technology ltd, http://www.zeustech.net/

licensed to the apache software foundation, http://www.apache.org/

benchmarking www.benet.com (be patient).....done

server software:        apache/2.2.9

server hostname:        www.benet.com

server port:            80

document path:          /

document length:        44 bytes

concurrency level:      2000   //用于并发连接测试的请求数

time taken for tests:   9.696 seconds  //测试过程消耗的时间

complete requests:      4000   //测试过程中总完成的请求数

failed requests:        0    //失败的请求数量

write errors:           0

total transferred:      1180116 bytes  //测试过程中的网络传输量

html transferred:       176616 bytes //测试过程中的html内容传输量

requests per second:    412.54 [#/sec] (mean) //服务器平均每秒响应的请求数

time per request:       4847.975 [ms] (mean) //服务器平均每请求的响应时间

time per request:       2.424 [ms] (mean, across all concurrent requests)

transfer rate:          118.86 [kbytes/sec] received

connection times (ms)      //连接时间统计信息

              min  mean[+/-sd] median   max

connect:        0  258 883.8      0    3474

processing:    13  725 1731.8     24    7219

waiting:       10  725 1731.7     23    7217

total:         13  984 2176.8     24    9648

percentage of the requests served within a certain time (ms)

  50%     24

  66%     38

  75%    761

  80%   1223

  90%   3563

  95%   7280

  98%   9054

  99%   9622

 100%   9648 (longest request)

构建基于域名的虚拟主机

[root@redhat httpd-2.2.9]# make

[root@redhat httpd-2.2.9]# make install

[root@redhat httpd-2.2.9]# cd

[root@redhat ~]# cd /usr/local/apache2/htdocs/

[root@redhat htdocs]# mkdir benet accp

[root@redhat htdocs]# echo "www.benet.com" > benet/index.html

[root@redhat htdocs]# echo "www.accp.com" > accp/index.html

[root@redhat htdocs]# vim /usr/local/apache2/conf/httpd.conf

….//省略部分的内容

namevirtualhost 192.168.1.1

<virtualhost 192.168.1.1>

        documentroot    /usr/local/apache2/htdocs/benet

        servername       www.benet.com

        errorlog        logs/www.benet.com.error.log

        customlog       logs/www.benet.com.access.log common

</virtualhost>

        documentroot    /usr/local/apache2/htdocs/accp

        servername      www.accp.com

        errorlog        logs/www.accp.com.error.log

        customlog       logs/www.accp.com.access.log common

httpd: could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for servername   //启动时的个别错误

在客户机浏览器中访问 虚拟站点

[root@linux ~]# vim /etc/hosts

192.168.1.1             www.benet.com           www

192.168.1.1             www.accp.com            www

构建基于ip地址的虚拟主机

<virtualhost 192.168.1.10>

 构建基于ip地址的虚拟主机服务器时,与构建基于域名虚拟主机的过程基本类似,只不过在httpd.conf文件中的配置稍有区别,不再需要指明“namevirtualhost”配置行。<virtualhost 虚拟主机ip地址>…………</virtualhost>区域设置中,也要改为各自域对应的ip地址

构建基于端口的虚拟主机

listen 192.168.1.1 :80

listen 192.168.1.1 :8080

<virtualhost 192.168.1.1 :80>

<virtualhost 192.168.1.1 :8080>

构建基于端口的虚拟及服务器时,httpd服务监听的ip地址,端口号需要与各虚拟主机使用的ip地址,端口号相对应,一般也无需指定namevirtualhost配置行

建立系统用户的个人主页

httpd服务自带的个人主页功能,可以非常方便的为linux系统用户提供web站点服务,服务器中启用该功能以后,每个系统用户只需要在宿主目录相应位置(默认为public_html子目录)建立网页文件,就可以在浏览器中访问自己的个人主页。

 添加“userdir public_html”配置行,并添加“<directory “/home/*public_html”>”………<directory>目录区域设置,以便允许客户机访问系统用户的个人网页目录

userdir public_html

<directory "/home/*/public_html">

        allowoverride none

        options none

        order allow,deny

        allow from all

[root@redhat ~]# /usr/local/apache2/bin/apachectl restart

 切换为目标用户qiao在宿主目录建立public_html文件,并添加测试网页文件

[root@redhat ~]# useradd qiao

[root@redhat ~]# passwd qiao

changing password for user qiao.

new unix password:

bad password: it is way too short

retype new unix password:

passwd: all authentication tokens updated successfully.

[root@redhat ~]# su - qiao

[qiao@redhat ~]$ whoami

qiao

[qiao@redhat ~]$ mkdir public_html

[qiao@redhat ~]$ echo "qiao.com" > public_html/index.html

[qiao@redhat ~]$ exit

logout

由于linux系统对用户的宿主目录默认设置了较为严格的访问权限,应此还需要为其他用户增加执行权限,以便运行web服务的程序用户有权限访问用户宿主目录中的public_html子目录

[root@redhat ~]# whoami

root

[root@redhat ~]# ls -ld /home/qiao/

drwx------ 4 qiao qiao 4096 01-07 18:01 /home/qiao/

[root@redhat ~]# chmod o+x /home/qiao/

drwx-----x 4 qiao qiao 4096 01-07 18:01 /home/qiao/

使用awstats分析日志

[root@redhat ~]# tar zxvf awstats-6.9.tar.gz -c /usr/local/

[root@redhat ~]# mv /usr/local/awstats-6.9/ /usr/local/awstats

[root@redhat ~]# cd /usr/local/awstats/tools/

----- awstats awstats_configure 1.0 (build 1.8) (c) laurent destailleur -----

this tool will help you to configure awstats to analyze statistics for

one web server. you can try to use it to let it do all that is possible

in awstats setup, however following the step by step manual setup

documentation (docs/index.html) is often a better idea. above all if:

- you are not an administrator user,

- you want to analyze downloaded log files without web server,

- you want to analyze mail or ftp log files instead of web log files,

- you need to analyze load balanced servers log files,

- you want to 'understand' all possible ways to use awstats...

read the awstats documentation (docs/index.html).

-----> running os detected: linux, bsd or unix

warning: awstats standard directory on linux os is '/usr/local/awstats'.

if you want to use standard directory, you should first move all content

of awstats distribution from current directory:

/usr/src/awstats-6.9

to standard directory:

/usr/local/awstats

and then, run configure.pl from this location.

do you want to continue setup from this non standard directory [yn] ? y

-----> check for web server install

  found web server apache config file '/usr/local/apache2/conf/httpd.conf'

-----> check and complete web server config file '/usr/local/apache2/conf/httpd.conf'

warning: you apache config file contains directives to write 'common' log files

this means that some features can't work (os, browsers and keywords detection).

do you want me to setup apache to write 'combined' log files [y/n] ? y //选择y将httpd服务的日志记录格式改为“combined”以便记录更多地详细信息

  add 'alias /awstatsclasses "/usr/src/awstats-6.9/wwwroot/classes/"'

  add 'alias /awstatscss "/usr/src/awstats-6.9/wwwroot/css/"'

  add 'alias /awstatsicons "/usr/src/awstats-6.9/wwwroot/icon/"'

  add 'scriptalias /awstats/ "/usr/src/awstats-6.9/wwwroot/cgi-bin/"'

  add '<directory>' directive

  awstats directives added to apache config file.

-----> update model config file '/usr/src/awstats-6.9/wwwroot/cgi-bin/awstats.model.conf'

  file awstats.model.conf updated.

-----> need to create a new config file ?

do you want me to build a new awstats config/profile

file (required if first install) [y/n] ? y //创建新的配置文件

-----> define config file name to create

what is the name of your web site or profile analysis ?

example: www.mysite.com

example: demo

your web site, virtual server or profile name:

> www.benet.com   //定义日志分析的目标网站名称

-----> define config file path

in which directory do you plan to store your config file(s) ?

default: /etc/awstats

directory path to store config file(s) (enter for default):

>       //定义awstats配置文件的存放目录(默认为“/etc/awstats”)

-----> create config file '/etc/awstats/awstats.www.benet.com.conf'

 config file /etc/awstats/awstats.www.benet.com.conf created.

-----> restart web server with '/sbin/service httpd restart'

httpd: syntax error on line 410 of /usr/local/apache2/conf/httpd.conf: /usr/local/apache2/conf/httpd.conf:415: <virtualhost> was not closed.\n/usr/local/apache2/conf/httpd.conf:410: <virtualhost> was not closed.

-----> add update process inside a scheduler

sorry, configure.pl does not support automatic add to cron yet.

you can do it manually by adding the following command to your cron:

/usr/src/awstats-6.9/wwwroot/cgi-bin/awstats.pl -update -config=www.benet.com

or if you have several config files and prefer having only one command:

/usr/src/awstats-6.9/tools/awstats_updateall.pl now

press enter to continue...   //添加cron计划任务(安装脚本无法自动添加,提示用户需要手动添加 安回车键继续)

a simple config file has been created: /etc/awstats/awstats.www.benet.com.conf

you should have a look inside to check and change manually main parameters.

you can then manually update your statistics for 'www.benet.com' with command:

> perl awstats.pl -update -config=www.benet.com

you can also read your statistics for 'www.benet.com' with url:

> http://localhost/awstats/awstats.pl?config=www.benet.com

press enter to finish...

 //按回车键推出安装脚本

 由于虚拟主机www.benet.com的访问日志做了单独设置,因此需要在awstats的配置文件中修改所要统计的日志文件的路径。查找“logfile”配置行并修改正确位置

[root@redhat tools]# vim /etc/awstats/awstats.www.benet.com.conf

logfile="/usr/local/apache2/logs/www.benet.com.access.log"

 awsats通过脚本对日志进行分析,每次运行会自动将日志信息中新增加的内容添加到统计数据库中

[root@redhat tools]# mkdir /var/lib/awstats

[root@redhat tools]# perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update-config=www.benet.com

create/update database for config "/etc/awstats/awstats.www.benet.com.conf" by awstats version 6.9 (build 1.925)

from data in log file "/usr/local/apache2/logs/www.benet.com.access.log"...

phase 1 : first bypass old records, searching new record...

searching new records from beginning of log file...

jumped lines in file: 0

parsed lines in file: 1

 found 0 dropped records,

 found 1 corrupted records,

 found 0 old records,

 found 0 new qualified records.

 设置cron计划任务。以便定时运行日志分析程序

[root@redhat tools]# [root@redhat tools]# crontab –e

* */5 * * * perl        /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update-config=www.benet.com

[root@redhat tools]# service crond start

[root@redhat tools]# chkconfig --level 35 crond on

[root@redhat tools]# chkconfig --list crond

crond           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@redhat tools]#

 使用http://www.benet.com/awstats/awstats.pl?config=www.benet.com,即可访问进入awstats的日志分析报告界面

 上述访问awstats页面,需要出入的url信息较长,不便于记忆。可以建立一个自动跳转的html网页。如下

[root@redhat ~]# vim /usr/local/apache2/htdocs/benet/aw.html

<html>

<head>

<meta http-equiv=refresh content="0;url=http://www.benet.com/awstats/awstats.pl?config=www.benet.com">

</head>

<body></body>

</html>

~            

httpd服务的访问控制

 当访问awstats页面时并不需要提供账号和密码,只要知道对应的网址即可查看web站点的日志分析结果, 这给服务器带来了隐患,为了更好滴控制客户端对web资源的访问,apache提供了两种基本的访问控制方式,基于用户和客户端地址(主机名或ip)。

 基于用户的访问控制包含认证和授权两个过程,认证(authentication)是指识别用户身份的过程,授权(authorzation)是允许特定用户访问特定区域信息的过程。对服务器中特定的目录区域设定了认证之后,将只有通过认证的用户才被允许访问资源。

 apahce可以使用基本认证(basic)和摘要认证(digest)两种方式。使用摘要认证需要在编译httpd的过程中预先配置“—enable-auth-digest”项,但并不是所有的浏览器都支持摘要认证,而基本认证是apache的基本功能,不需要预先配置特别的选项。下面将以基本认证方式为例,对awstats日志分析页面添加用户认证。

 编辑httpd.conf配置文件,查找关于awstats的目录区域设置,添加认证授权设置

…..//省略配置

<directory "/usr/local/apache2/htdocs/benet">

        authname "benet"

        authtype basic

        authuserfile /usr/local/awstats/wwwroot/.htpasswd

        require valid-user

上述配置内容中,相关配置项的含义如下

authname:定义受保护的领域名称,将在弹出的认证登录对话框中显示

authtypr:设置认证的类型,basic为基本认证

 authuserfile:设置用于保存用户账号,秘密认证文件路径。

 require valid-user:授权给认证文件中的所有有效用户

使用htpasswd命令创建用户账号“awuser”,并保存为.htpasswd文件。其中“-c”选项表示新建(create)认证文件,当向已有的认证文件中添加账号时可以省略“-c”选项

[root@redhat ~]# cd /usr/local/apache2/bin/

[root@redhat bin]# ./htpasswd -c /usr/local/awstats/wwwroot/.htpasswd awuser

new password:

re-type new password:

adding password for user awuser

[root@redhat ~]# /usr/local/apache2/bin/apachectl restart  //重启httpd服务

客户端验证

基于客户端地址的访问控制

 基于客户端地址的访问控制主要用于目录区域“<directory>……..</directory>”使用配相“order”“deny from”“allow from”根据客户机的主机名或ip地址决定是否允许访问

配置项“order”用于定义“允许”“拒绝”策略的处理顺序,包括两种形式。

 order allow,deny:先允许后拒绝,默认拒绝所有没有被明确允许的客户端地址

 order deny,allow:先拒绝后允许,默认允许所有没有被明确拒绝的客户端地址

配置“allow”和“deny”用于设置允许或拒绝的客户机地址,使用形式

 deny  from address1 address2

 allow deny address1 address2

客户机地址的形式可以使ip地址,网络地址,主机名,域名,使用“all”时表示任意地址。如下,允许来自任意的客户端访问本目录区域

 order allow,deny

 allow from all

除了ip地址为10.1.1.1及来自jv-accp.com域的客户机以外,其他任意客户机均被允许访问本目录区域

 order deny,allow

 deny from jv-accp.com

 deny from 10.1.1.1

案例允许来自网络192.168.1.0/24的客户机(192.168.1.10除外)访问本目录区域

<directory "/usr/local/apache2/htdocs/accp">

        allow from 192.168.1.0/24

        deny from 192.168.1.10

客户机可以更换ip地址来尝试,当ip是192.168.1.10的时候会出现以下错误

[root@linux ~]# tar zxvf httpd-2.2.9.tar.gz -c /usr/src/

[root@linux ~]# cd /usr/src/httpd-2.2.9/

[root@linux httpd-2.2.9]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib --enable-auth-digest --enable-cgi --enable-suexec --with-suexec-caller=daenon --with-suexec-docroot=/usr/local/apache2/htdocs

--enable-ssl:开启ssl

--enable-auth-digest:apache有两种认证:基本和摘要,这里了选项摘要认证

--enable-suexec:启用suexec,postfix要用到

[root@linux httpd-2.2.9]# make

[root@linux httpd-2.2.9]# make install

…….//省略信息

make[1]: leaving directory `/usr/src/httpd-2.2.9/support'

make[1]: entering directory `/usr/src/httpd-2.2.9'

cd support && make suexec

make[2]: entering directory `/usr/src/httpd-2.2.9/support'

make[2]: “suexec”是最新的。

make[2]: leaving directory `/usr/src/httpd-2.2.9/support'

installing configuration files

mkdir /usr/local/apache2/conf

mkdir /usr/local/apache2/conf/extra

mkdir /usr/local/apache2/conf/original

mkdir /usr/local/apache2/conf/original/extra

installing html documents

mkdir /usr/local/apache2/htdocs

installing error documents

mkdir /usr/local/apache2/error

installing icons

mkdir /usr/local/apache2/icons

mkdir /usr/local/apache2/logs

installing cgis

mkdir /usr/local/apache2/cgi-bin

installing header files

installing build system files

installing man pages and online manual

mkdir /usr/local/apache2/man

mkdir /usr/local/apache2/man/man1

mkdir /usr/local/apache2/man/man8

mkdir /usr/local/apache2/manual

[root@linux httpd-2.2.9]# cd

[root@linux ~]# /usr/local/apache2/bin/apachectl start