Web網站服務
- 【技能展示】
-
- 【Apache簡介】
-
- 【安裝httpd伺服器——編譯安裝】
-
- 【 httpd伺服器的基本配置】
-
- 【全局配置項】
-
- 【區域配置項】
【技能展示】
【技能展示】
1.學會編譯安裝httpd伺服器
2.熟悉httpd服務的部署過程及常見配置
3.學會建構AWStats日志分析系統
【Apache簡介】
【Apache簡介】
【Apache起源】
1.源于 A Patchy Server,著名的開源Web服務軟體
2.1995年時,釋出Apache服務程式的1.0版本
3.由Apache軟體基金會(ASF)負責維護
4.最新的名稱為 “Apache HTTP Server”
5.官方站點:http://httpd.apache.org/
【主要特點】
1.開放源代碼、跨平台應用
2.支援多種網頁程式設計語言
3.子產品化設計 、運作穩定、良好的安全性
【軟體版本】
1.1.X
*目前最高版本是1.3,運作穩定
- 向下相容性較好,但缺乏一些較新的功能
2.2.X
-
目前主要包括2.0和2.2兩個版本
*具有更多的功能特性
*與1.X相比,配置管理風格存在較大差異
【編譯安裝的優點】
1.具有較大的自由度,功能可定制
2.可及時獲得最新的軟體版本
3.普遍适用于大多數Linux版本,便于移植使用
【獲得Apache伺服器的源碼包 】
1.參考位址:http://httpd.apache.org/download.cgi
【安裝httpd伺服器——編譯安裝】
【安裝httpd伺服器——編譯安裝】
1.準備工作
解除安裝httpd及相關依賴包
[[email protected] ~]# rpm -e httpd --nodeps
[[email protected] ~]# yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre
2.源碼編譯及安裝
解包
[[email protected] ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/httpd-2.4.25/
配置
[[email protected] httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
–prefix:指定将httpd服務程式安裝到哪個目錄,如/usr/local/httpd。
–enable-so:啟用動态加載子產品支援,使httpd具備進一步擴充功能的能力。
–enable-rewrite:啟用網頁位址重寫功能,用于網站優化及目錄遷移維護。
–enable-charset-lite:啟動字元集支援,以便支援使用各種字元集編碼的網頁。
–enable-cgi:啟用CGI腳本程式支援,便于擴充網站的應用通路能力。
Httpd的安裝目錄是由前面的—prefix指定的路徑,
預設安裝在/usr/local/apache2目錄下
編譯及安裝
[[email protected] httpd-2.4.25]# make
[[email protected] httpd-2.4.25]# make install
3.确認安裝結果
[[email protected] ~]# ls /usr/local/httpd/
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
主要目錄和檔案:
服務目錄:/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
子產品目錄:/usr/local/httpd/modules
4.優化執行路徑
[[email protected] ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[[email protected] ~]# 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
[[email protected] ~]# httpd -v
5.添加httpd系統服務
*以便通過chkconfig進行管理
[[email protected] ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[[email protected] ~]# vi /etc/init.d/httpd
編輯和添加
#!/bin/bash
#chkconfig: 35 85 15
description: Startup script for the Apache HTTP Server
注釋:chkconfig識别配置
chkconfig— 服務識别參數,在運作級别3,5中啟動。服務啟動和關閉順序分别為85、15.
description----服務描述資訊
[[email protected] ~]# chkconfig --add httpd
[[email protected] ~]# chkconfig --list httpd
httpd 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉
[[email protected] ~]# ll /etc/rc.d/rc3.d
【 httpd伺服器的基本配置】
(一)Web站點部署過程
1.确定網站名稱、IP位址
若要向internet中釋出一個web站點,需要申請一個合法的網際網路公網ip位址,并向dns服務提供商注冊一個完整的網站名稱。
[[email protected] ~]# cat /etc/sysconfig/network
#Created by anaconda
NETWORKING=yes
HOSTNAME=www.bdqn.com
[[email protected] ~]# cat /etc/hostname
www.bdqn.com
[[email protected] ~]# reboot
2.配置并啟動httpd服務
[[email protected] ~]# vi /usr/local/httpd/conf/httpd.conf
200 #ServerName www.example.com:80
201 ServerName www.bdqn.com
[[email protected] ~]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[[email protected] ~]# /etc/init.d/httpd start
[[email protected] ~]# netstat -anput | grep httpd
3.部署網頁文檔
[[email protected] ~]# cat /usr/local/httpd/htdocs/index.html
< html >< body >< h1 > It works! < /h1 > < /body > < /html >
4.在客戶機中通路Web站點
5.檢視Web站點的通路情況
檢視通路日志
[[email protected] ~]# 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
記錄客戶機的ip位址、通路伺服器的日期和時間、請求的網頁對象等
檢視錯誤日志(排查伺服器運作故障)
[[email protected] ~]# tail /usr/local/httpd/logs/error_log
記錄了發生錯誤的日期和時間、錯誤事件類型、錯誤事件的内容描述
若要對web站點進行更加具體、更加強大的配置,需要做進一步配置。
[[email protected] ~]# vim /usr/local/httpd/conf/httpd.conf
【全局配置項】
ServerRoot “/usr/local/httpd”
Listen 80
User daemon
Group daemon
ServerAdmin [email protected]
ServerName www.benet.com
DocumentRoot “/usr/local/httpd/htdocs”
DirectoryIndex index.html index.php
ErrorLog logs/error_log
LogLevel warn
CustomLog logs/access_log common
PidFile logs/httpd.pid
CharsetDefault UTF-8
Include conf/extra/httpd-default.conf
常用的全局配置參數
如果配置檔案中指定目錄或檔案位置不使用絕對路徑,則認為在伺服器根目錄下(apache安裝目錄/usr/local/httpd)
ServerRoot:伺服器根目錄。要與DocumentRoot區分開
ServerAdmin:管理者郵箱
User:運作服務的使用者身份
Group:運作服務的組身份
ServerName:網站伺服器的FQDN(主機名+域名)
DocumentRoot:網頁文檔的根目錄
Listen:監聽的IP位址、端口号
PidFile:儲存httpd程序PID号的檔案
DirectoryIndex:預設的索引頁檔案
ErrorLog:錯誤日志檔案的位置
CustomLog:通路日志檔案的位置
LogLevel:記錄日志的級别,預設為warn以上級别
AddDefaultCharset:設定站點中的網頁預設使用的字元集編碼
Timeout:網絡連接配接逾時,預設為300秒
KeepAlive:是否保持連接配接,可選On或Off
MaxKeepAliveRequests:每次連接配接最多請求檔案數
KeepAliveTimeout:保持連接配接狀态時的逾時時間
Include:需要包含進來的其他配置檔案
【區域配置項】
使用一對組合标記,限定了配置項的作用範圍
定義‘/’目錄區域的開始
Options FollowSymLinks 控制選項,允許使用符号連接配接
AllowOverride none 不允許隐含控制檔案中的覆寫位置
Require all denied 禁止任何人通路此區域
定義/’目錄區域的結束
Options FollowSymLinks 控制選項,允許使用符号連接配接
就是允許你的網頁檔案夾下的連結檔案連結到首頁目錄以外的檔案。舉例來說,如果你把首頁目錄設定為/var/www/html,那麼你的網頁程式最多隻能通路到/var/www/html目錄,上層目錄是不可見的。但是你可以通過連結把檔案連結到/var/www/html目錄以外的檔案以通路該檔案,如果FollowSymLinks被設定的話
從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override
Apache Options Indexes FollowSymLinks詳解
禁止顯示Apache目錄清單-Indexes FollowSymLinks
如何修改目錄的配置以禁止顯示 Apache 目錄清單。
預設情況下如果你在浏覽器輸入位址:
http://localhost:8080/
如果你的檔案根目錄裡有 index.html,浏覽器就會顯示 index.html的内容,如果沒有 index.html,浏覽器就會顯示檔案根目錄的目錄清單,目錄清單包括檔案根目錄下的檔案和子目錄。
同樣你輸入一個虛拟目錄的位址:
http://localhost:8080/b/
如果該虛拟目錄下沒有 index.html,浏覽器也會顯示該虛拟目錄的目錄結構,列出該虛拟目錄下的檔案和子目錄。
如何禁止 Apache 顯示目錄清單呢?
要禁止 Apache 顯示目錄結構清單,隻需将 Option 中的 Indexes 去掉即可。
比如我們看看一個目錄的目錄配置:
<Directory “D:/Apa/blabla”>
Options Indexes FollowSymLinks #---------->Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
你隻需要将上面代碼中的 Indexes 去掉,就可以禁止 Apache 顯示該目錄結構。使用者就不會看到該目錄下的檔案和子目錄清單了。
Indexes 的作用就是當該目錄下沒有 index.html 檔案時,就顯示目錄結構,去掉 Indexes,Apache 就不會顯示該目錄的清單了。
第二種方法
解決辦法:
1、編輯httpd.conf檔案
vi ./conf/httpd.conf
找到如下内容:
?BR> <Directory “C:/Program Files/Apache2.2/htdocs”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named explicitly — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
……
在Options Indexes FollowSymLinks在Indexes前面加上 – 符号。
即: Options -Indexes FollowSymLinks
【備注:在Indexes前,加 + 代表允許目錄浏覽;加 – 代表禁止目錄浏覽。】
這樣的話就屬于整個Apache禁止目錄浏覽了。
如果是在虛拟主機中,隻要增加如下資訊就行:
<Directory “D:test”>
Options -Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
這樣的話就禁止在test工程下進行目錄浏覽。
備注: 切記莫把“Allow from all”改成 “Deny from all”,否則,整個網站都不能被打開。
還有一種方法:
可以在根目錄的 .htaccess 檔案中輸入
<Files *>
Options -Indexes
就可以阻止Apache 将目錄結構清單出來。
AllowOverride從字面上解釋是允許覆寫的意思,即Apache允許另一配置檔案覆寫現有配置檔案。
我們通常利用Apache的rewrite子產品對URL進行重寫,rewrite規則會寫在 .htaccess 檔案裡。但要使 apache 能夠正常的讀取.htaccess 檔案的内容,就必須對.htaccess 所在目錄進行配置。
從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override,即:
< Directory />
AllowOverride None
< /Directory>
在 AllowOverride 設定為 None 時, .htaccess 檔案将被完全忽略。當此指令設定為 All 時,所有具有 “.htaccess” 作用域的指令都允許出現在 .htaccess 檔案中。
而對于 URL rewrite 來說,至少需要把目錄設定為:
< Directory /myblogroot/>
AllowOverride FileInfo
< /Directory>
以下是AllowOverride的詳細參數:
AuthConfig
允許使用與認證授權相關的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
FileInfo
允許使用控制文檔類型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文檔中繼資料的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。
Indexes
允許使用控制目錄索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。
Limit
允許使用控制主機通路的指令(Allow, Deny, Order)。
Options[=Option,…]
允許使用控制指定目錄功能的指令(Options和XBitHack)。可以在等号後面附加一個逗号分隔的(無空格的)Options選項清單,用來控制允許Options指令使用哪些選項。