一、概述
二、編譯安裝
三、httpd服務基礎
四、httpd.conf配置文件
五、httpd服務訪問控制
六、虛擬Web主機
一、概述
主要特點
Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。
開放源代碼、跨平臺應用
支持多種網頁編程語言
模塊化設計 、運行穩定、良好的安全性
二、編譯安裝
編譯安裝的優點
具有較大的自由度,功能可定制
可及時獲得最新的軟件版本
普遍適用于大多數Linux版本,便于移植使用
獲得Apache服務器的源碼包
參考地址:http://httpd.apache.org/download.cgi
安裝httpd服務器
1.準備工作
卸載httpd及相關依賴包
[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.確認安裝結果
[root@www ~]# ls /usr/local/httpd/
bin? ? cgi-bin? error? icons? ? lib? man? ? modules
build? conf? ? htdocs? include? logs? manual
4.優化執行路徑
[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系統服務
以便通過chkconfig進行管理
[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:關閉? 1:關閉? 2:關閉? 3:啟用? 4:關閉? 5:啟用? 6:關閉
三、httpd服務基礎
1、主要目錄和文件:
服務目錄:/usr/local/httpd/
主配置文件:/usr/local/httpd/conf/httpd.conf
網頁目錄:/usr/local/httpd/htdocs/
服務腳本:/usr/local/httpd/bin/apachectl
執行程序:/usr/local/httpd/bin/httpd
訪問日志: /usr/local/httpd/log/access_log
錯誤日志: /usr/local/httpd/log/error_log
Httpd的安裝目錄是由前面的—prefix指定的路徑,默認安裝在/usr/local/apache2目錄下
2、Web站點部署過程
1.確定網站名稱、IP地址
ifconfig、hostname
2.配置并啟動httpd服務
[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.部署網頁文檔
[root@www ~]# cat /usr/local/httpd/htdocs/index.html
It works!
4.在客戶機中訪問Web站點
5.查看Web站點的訪問情況
[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配置文件
常用的全局配置參數
ServerRoot:服務目錄
ServerAdmin:管理員郵箱
User:運行服務的用戶身份
Group:運行服務的組身份
ServerName:網站服務器的域名
DocumentRoot:網頁文檔的根目錄
Listen:監聽的IP地址、端口號
PidFile:保存httpd進程PID號的文件
DirectoryIndex:默認的索引頁文件
CustomLog:訪問日志文件的位置
LogLevel:記錄日志的級別,默認為warn
Timeout:網絡連接超時,默認為300秒
KeepAlive:是否保持連接,可選On或Off
MaxKeepAliveRequests:每次連接最多請求文件數
KeepAliveTimeout:保持連接狀態時的超時時間
Include:需要包含進來的其他配置文件
區域配置項
<Directory />
? ? OptionsFollowSymLinks? //控制選項,允許使用符號鏈接
? ? AllowOverrideNone? //不允許隱含控制文件中的覆蓋配置
? ? Orderdeny,allow? //訪問控制策略的應用順序
? ? Deny from all? //禁止任何人訪問此區域
</Directory>
五、httpd服務訪問控制
httpd服務的訪問控制
作用:
控制對網站資源的訪問
為特定的網站目錄添加訪問授權
常用訪問控制方式:
客戶機地址限制
用戶授權限制
Order配置項,定義控制順序
先允許后拒絕,默認拒絕所有:Order allow,deny
先拒絕后允許,默認允許所有:Order deny,allow
Allow、Deny配置項,設置允許或拒絕的地址
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>
用戶授權限制
1.創建用戶認證數據庫
[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? //確認用戶數據庫文件
webadmin:2tmD3LVFynBAE
2.添加用戶授權配置
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf…………
……
<Directory "/usr/local/awstats/wwwroot">
……
AuthName "AWStats Directory"? //受保護的領域名稱
AuthType Basic? //設置認證的類型
AuthUserFile /usr/local/httpd/conf/.awspwd ?//用戶認證賬號文件
require valid-user
</Directory>? //要求通過認證才能訪問
[root@www ~]# /usr/local/httpd/bin/apachectl restart
3.驗證用戶訪問授權
六、虛擬Web主機
在同一臺服務器中運行多個Web站點,其中每一個站點并不獨立占用一臺真正的計算機
httpd支持的虛擬主機類型
基于域名的虛擬主機
基于IP地址的虛擬主機
基于端口的虛擬主機
構建虛擬主機——基于域名
應用示例:
構建2個虛擬Web站點:
www.benet.com,IP地址為 173.17.17.11
www.accp.com,IP地址為 173.17.17.11
在瀏覽器中訪問這兩個域名時,分別顯示不同的內容
1.為虛擬主機提供域名解析
[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.為虛擬主機準備網頁文檔
[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.添加虛擬主機配置
root@www ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf //創建獨立的配置文件
<Directory "/var/www/html“>? //設置目錄訪問權限
? ?Order allow,deny
? ?Allow from all
</Directory>
NameVirtualHost 173.17.17.11
<VirtualHost 173.17.17.11>? //設置benet虛擬站點
? ?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> //設置accp虛擬站點
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 //加載獨立的配置文件
……
Include conf/extra/httpd-vhosts.conf
[root@www ~]# /usr/local/httpd/bin/apachectl restart
4.構建虛擬主機——基于IP
應用示例:
構建2個虛擬Web站點:
www.bdqn.cn,IP地址為 220.181.120.61
www.jbit.cn,IP地址為 122.115.32.133
在瀏覽器中訪問這兩個IP時,分別顯示不同的內容
<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、構建虛擬主機——基于端口
應用示例:
構建2個虛擬Web站點:
www.benet.com,IP地址、端口為 173.17.17.11:80
www.accp.com,IP地址、端口為 173.17.17.11:8353
在瀏覽器中訪問這兩個端口時,分別顯示不同的內容
<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