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計劃任務(安裝腳本無法自動添加,提示使用者需要手動添加 安Enter鍵繼續)
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...
//按Enter鍵推出安裝腳本
由于虛拟主機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