一、概述
二、編譯安裝
三、httpd服務(wù)基礎(chǔ)
四、httpd.conf配置文件
五、httpd服務(wù)訪問(wèn)控制
六、虛擬Web主機(jī)
一、概述
主要特點(diǎn)
Apache是世界使用排名第一的Web服務(wù)器軟件。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上,由于其跨平臺(tái)和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。
開(kāi)放源代碼、跨平臺(tái)應(yīng)用
支持多種網(wǎng)頁(yè)編程語(yǔ)言
模塊化設(shè)計(jì) 、運(yùn)行穩(wěn)定、良好的安全性
二、編譯安裝
編譯安裝的優(yōu)點(diǎn)
具有較大的自由度,功能可定制
可及時(shí)獲得最新的軟件版本
普遍適用于大多數(shù)Linux版本,便于移植使用
獲得Apache服務(wù)器的源碼包
參考地址:http://httpd.apache.org/download.cgi
安裝httpd服務(wù)器
1.準(zhǔn)備工作
卸載httpd及相關(guān)依賴包
[root@www ~]# rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common mysql dovecot --nodeps? //忽略軟件包依賴性
2.源碼編譯及安裝
[root@www ~]# tar zxf httpd-2.2.17.tar.gz -C /usr/src/? ? ? //解包
[root@www ~]# cd /usr/src/httpd-2.2.17/
[root@www httpd-2.2.17]# ./configure? --prefix=/usr/local/httpd? --enable-so? --enable-rewrite? --enable-charset-lite? --enable-cgi? //配置
[root@www httpd-2.2.17]# make
[root@www httpd-2.2.17]# make install? ? //編譯及安裝
3.確認(rèn)安裝結(jié)果
[root@www ~]# ls /usr/local/httpd/
bin? ? cgi-bin? error? icons? ? lib? man? ? modules
build? conf? ? htdocs? include? logs? manual
4.優(yōu)化執(zhí)行路徑
[root@www ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@www ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
lrwxrwxrwx 1 root root 30 04-06 13:08 /usr/local/bin/apachectl ->? /usr/local/httpd/bin/apachectl
lrwxrwxrwx 1 root root 26 04-06 13:08 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd
5.添加httpd系統(tǒng)服務(wù)
以便通過(guò)chkconfig進(jìn)行管理
[root@www ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@www ~]# vi /etc/init.d/httpd
#!/bin/bash
# chkconfig: 35 85 15
# description: Startup script for the Apache HTTP Server
……
[root@www ~]# chkconfig --add httpd
[root@www ~]# chkconfig --list httpd
httpd? ? ? ? ? 0:關(guān)閉? 1:關(guān)閉? 2:關(guān)閉? 3:啟用? 4:關(guān)閉? 5:啟用? 6:關(guān)閉
三、httpd服務(wù)基礎(chǔ)
1、主要目錄和文件:
服務(wù)目錄:/usr/local/httpd/
主配置文件:/usr/local/httpd/conf/httpd.conf
網(wǎng)頁(yè)目錄:/usr/local/httpd/htdocs/
服務(wù)腳本:/usr/local/httpd/bin/apachectl
執(zhí)行程序:/usr/local/httpd/bin/httpd
訪問(wèn)日志: /usr/local/httpd/log/access_log
錯(cuò)誤日志: /usr/local/httpd/log/error_log
Httpd的安裝目錄是由前面的—prefix指定的路徑,默認(rèn)安裝在/usr/local/apache2目錄下
2、Web站點(diǎn)部署過(guò)程
1.確定網(wǎng)站名稱、IP地址
ifconfig、hostname
2.配置并啟動(dòng)httpd服務(wù)
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf
……
ServerName www.benet.com
……
[root@www ~]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@www ~]# /etc/init.d/httpd start
3.部署網(wǎng)頁(yè)文檔
[root@www ~]# cat /usr/local/httpd/htdocs/index.html
It works!
4.在客戶機(jī)中訪問(wèn)Web站點(diǎn)
5.查看Web站點(diǎn)的訪問(wèn)情況
[root@www ~]# tail /usr/local/httpd/logs/access_log
192.168.4.110 - - [06/Apr/2011:14:24:06 +0800] "GET / HTTP/1.1" 200 44
192.168.4.110 - - [06/Apr/2011:14:24:06 +0800] "GET /favicon.ico HTTP/1.1" 404 209
四、httpd.conf配置文件
常用的全局配置參數(shù)
ServerRoot:服務(wù)目錄
ServerAdmin:管理員郵箱
User:運(yùn)行服務(wù)的用戶身份
Group:運(yùn)行服務(wù)的組身份
ServerName:網(wǎng)站服務(wù)器的域名
DocumentRoot:網(wǎng)頁(yè)文檔的根目錄
Listen:監(jiān)聽(tīng)的IP地址、端口號(hào)
PidFile:保存httpd進(jìn)程PID號(hào)的文件
DirectoryIndex:默認(rèn)的索引頁(yè)文件
CustomLog:訪問(wèn)日志文件的位置
LogLevel:記錄日志的級(jí)別,默認(rèn)為warn
Timeout:網(wǎng)絡(luò)連接超時(shí),默認(rèn)為300秒
KeepAlive:是否保持連接,可選On或Off
MaxKeepAliveRequests:每次連接最多請(qǐng)求文件數(shù)
KeepAliveTimeout:保持連接狀態(tài)時(shí)的超時(shí)時(shí)間
Include:需要包含進(jìn)來(lái)的其他配置文件
區(qū)域配置項(xiàng)
<Directory />
? ? OptionsFollowSymLinks? //控制選項(xiàng),允許使用符號(hào)鏈接
? ? AllowOverrideNone? //不允許隱含控制文件中的覆蓋配置
? ? Orderdeny,allow? //訪問(wèn)控制策略的應(yīng)用順序
? ? Deny from all? //禁止任何人訪問(wèn)此區(qū)域
</Directory>
五、httpd服務(wù)訪問(wèn)控制
httpd服務(wù)的訪問(wèn)控制
作用:
控制對(duì)網(wǎng)站資源的訪問(wèn)
為特定的網(wǎng)站目錄添加訪問(wèn)授權(quán)
常用訪問(wèn)控制方式:
客戶機(jī)地址限制
用戶授權(quán)限制
Order配置項(xiàng),定義控制順序
先允許后拒絕,默認(rèn)拒絕所有:Order allow,deny
先拒絕后允許,默認(rèn)允許所有:Order deny,allow
Allow、Deny配置項(xiàng),設(shè)置允許或拒絕的地址
Deny from address1 address2 …
Allow from address1 address2 …
<Directory "/usr/local/awstats/wwwroot">
……
Order deny,allow
deny from 192.168.0.0/24 192.168.1.0/24
</Directory>
用戶授權(quán)限制
1.創(chuàng)建用戶認(rèn)證數(shù)據(jù)庫(kù)
[root@www ~]# cd /usr/local/httpd/
[root@www httpd]# bin/htpasswd -c/usr/local/httpd/conf/.awspwd webadmin //新建密碼文件
New password:
Re-type new password:
Adding password for user webadmin
[root@www httpd]# cat /usr/local/httpd/conf/.awspwd? //確認(rèn)用戶數(shù)據(jù)庫(kù)文件
webadmin:2tmD3LVFynBAE
2.添加用戶授權(quán)配置
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf…………
……
<Directory "/usr/local/awstats/wwwroot">
……
AuthName "AWStats Directory"? //受保護(hù)的領(lǐng)域名稱
AuthType Basic? //設(shè)置認(rèn)證的類型
AuthUserFile /usr/local/httpd/conf/.awspwd ?//用戶認(rèn)證賬號(hào)文件
require valid-user
</Directory>? //要求通過(guò)認(rèn)證才能訪問(wèn)
[root@www ~]# /usr/local/httpd/bin/apachectl restart
3.驗(yàn)證用戶訪問(wèn)授權(quán)
六、虛擬Web主機(jī)
在同一臺(tái)服務(wù)器中運(yùn)行多個(gè)Web站點(diǎn),其中每一個(gè)站點(diǎn)并不獨(dú)立占用一臺(tái)真正的計(jì)算機(jī)
httpd支持的虛擬主機(jī)類型
基于域名的虛擬主機(jī)
基于IP地址的虛擬主機(jī)
基于端口的虛擬主機(jī)
構(gòu)建虛擬主機(jī)——基于域名
應(yīng)用示例:
構(gòu)建2個(gè)虛擬Web站點(diǎn):
www.benet.com,IP地址為 173.17.17.11
www.accp.com,IP地址為 173.17.17.11
在瀏覽器中訪問(wèn)這兩個(gè)域名時(shí),分別顯示不同的內(nèi)容
1.為虛擬主機(jī)提供域名解析
[root@dnssvr ~]# vi /var/named/chroot/var/named/benet.com.zone
……
@? ? ? IN? ? ? NS? ? ? dnssvr.benet.com.
dnssvr? IN? ? ? A? ? ? 173.17.17.2
www? ? IN? ? ? A? ? ? 173.17.17.11
[root@dnssvr ~]# vi /var/named/chroot/var/named/accp.com.zone
……
@? ? ? IN? ? ? NS? ? ? dnssvr.benet.com.
www? ? IN? ? ? A? ? ? 173.17.17.11
2.為虛擬主機(jī)準(zhǔn)備網(wǎng)頁(yè)文檔
[root@www ~]# mkdir /var/www/html/benetcom[root@www ~]# mkdir /var/www/html/accpcom[root@www ~]# echo "
www.benet.com
" > /var/www/html/benetcom/index.html[root@www ~]# echo "
www.accp.com
" > /var/www/html/accpcom/index.html
3.添加虛擬主機(jī)配置
root@www ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf //創(chuàng)建獨(dú)立的配置文件
<Directory "/var/www/html“>? //設(shè)置目錄訪問(wèn)權(quán)限
? ?Order allow,deny
? ?Allow from all
</Directory>
NameVirtualHost 173.17.17.11
<VirtualHost 173.17.17.11>? //設(shè)置benet虛擬站點(diǎn)
? ?DocumentRoot/var/www/html/benetcom
? ?ServerName www.benet.com?
? ?ErrorLog? logs/www.benet.com.error_log
? ?CustomLog logs/www.benet.com.access_log common
</VirtualHost>
<VirtualHost 173.17.17.11> //設(shè)置accp虛擬站點(diǎn)
DocumentRoot /var/www/html/accpcom
ServerName www.accp.com
ErrorLog? logs/www.accp.com.error_log
CustomLog logs/www.accp.com.access_log common
</VirtualHost>
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf //加載獨(dú)立的配置文件
……
Include conf/extra/httpd-vhosts.conf
[root@www ~]# /usr/local/httpd/bin/apachectl restart
4.構(gòu)建虛擬主機(jī)——基于IP
應(yīng)用示例:
構(gòu)建2個(gè)虛擬Web站點(diǎn):
www.bdqn.cn,IP地址為 220.181.120.61
www.jbit.cn,IP地址為 122.115.32.133
在瀏覽器中訪問(wèn)這兩個(gè)IP時(shí),分別顯示不同的內(nèi)容
<VirtualHost 220.181.120.61>
DocumentRoot /var/www/html/bdqncn
ServerName www.bdqn.cn
……
</VirtualHost>
<VirtualHost 122.115.32.133>
DocumentRoot /var/www/html/jbitcn
ServerName www.jbit.cn
……
</VirtualHost>
5、構(gòu)建虛擬主機(jī)——基于端口
應(yīng)用示例:
構(gòu)建2個(gè)虛擬Web站點(diǎn):
www.benet.com,IP地址、端口為 173.17.17.11:80
www.accp.com,IP地址、端口為 173.17.17.11:8353
在瀏覽器中訪問(wèn)這兩個(gè)端口時(shí),分別顯示不同的內(nèi)容
<VirtualHost 173.17.17.11:80>
DocumentRoot /var/www/html/accpcom
ServerName www.accp.com
……
</VirtualHost>
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf
……
Include conf/extra/httpd-vhosts.conf
Listen 173.17.17.11:80
Listen 173.17.17.11:8353