Apache是目前世界上最經常使用的Web服務器.對於Linux用戶來說,也是最容易使用的 Web服務器,而且,它是免費的.實際上,如果你僅僅是想要用Apache提供基本的Web頁面服務, 那麼你可能根本不需要調整任何配置.但是,在另一方面, Apache是一個十分強大的程序, 能夠提供許多專業的功能,為了發揮它的功能, 你還是必須了解一點兒關於它的配置. 首先, 如果你在一個非Linux的網站上使用Apache,或者你的網站負擔很重(比如,1000 個以上的同時連接),那麼,通常你必須重新編譯Apache,這個問題我們不在此處介紹. (1)開始提供Web服務 Apache的服務有兩種方式,即通過inetd的方式或者獨立執行httpd的方式.在一般情況 下我們使用獨立執行方式. 首先你必須安裝Apache服務器.通常的Linux 發行版中都會包含apache的rpm包,可 以用rpm -i 安裝.然後你要測試一下它的正確.隨便取一個Html文件,命名為index.html, 拷貝到/home/httpd/html目錄下,然後以根用戶身份執行httpd,接下來,在另一台機器上 用Browser訪問你這台機器的IP地址,應該能顯示其內容.如果不對,檢查你的工作,重來 一次. Apache缺省的時候使用的頁面文件是index.html,錯誤輸出在/var/log/httpd/,如果 有不正常的問題,察看裡面的error_log文件. 許多時候,你需要改變web文件的存放位置,或是為web頁面引入一些cgi服務,為此,你必須 去修改/etc/httpd/conf/srm.conf文件. 首先,你會發現下面的段落: DocumentRoot /home/httpd/html 這個句子說明,Apache使用的頁面文件存放在/home/httpd/html,所以如果你要改變web 的存放路徑就應該修改這裡. 另一個相應的段落是 DirectoryIndex index.html index.shtml index.cgi 它說明如果有人訪問你的機器,首頁將是在上面定義的路徑下的index.html或者index. shtml,index.cgi.如果你的網站首頁是另外一個名字,修改這一句. 另一個常用的選項是 ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/ 它定義在使用CGI程序時,頁面引用的目錄是/cgi-bin/,而實際存放的路徑是 /home/httpd/cgi-bin/ (2)利用apache做Web Proxy Proxy就是代理.Apache的web 代理是指可以讓客戶端服務器通過Apache來訪問WWW, 這樣,Apache服務器將接收來自客戶機器的請求,然後首先去目標站點取得內容,並將內 容存儲在Apache服務器上,然後再提交給客戶.以後假如有另一個客戶機需要訪問同樣 的內容,Apache就會直接從服務器硬盤上取得內容並且提交給客戶. 要使用Apache Proxy,需要編輯/etc/httpd/conf/httpd.conf,假定你的Apache機器地址 為111.111.111.111,代理端口為8080(通常應選擇大於1024的值),需要更改的段落有 Listen 111.111.111.111 8080 #打開8080端口 ProxyRequest On #啟動Proxy服務 CacheRoot /var/cache/httpd #缺省的Proxy Cache 目錄,必須是可寫的目錄 CacheSize 2000 #Cache的大小,單位是KB,設大一點兒對你無害,對嗎? CacheGcInterval 48 #每隔多少小時自動清理cache,把超出cache空間的垃圾刪除 CacheMaxEXPire 24 #Cache的最大有效期,或者說Cache最多可以落後於時代多少小時 CacheDefaultExpire 4 #缺省的Cache有效期,單位是小時 ProxyRemote http://something.com http://otherproxy.com:8080/ #對於到http://something.com的訪問,自動去調用定義在otherproxy.com:8080 的另一個Web Proxy, #也可以用ProxyRemote FTP http://otherproxy.com:8080/ #定義一個專門對ftp的Proxy級聯. NoProxy .mydomain.com 111.111.111.0/24 #對於來自111.111.111.1-111.111.111.254的並且指向*.mydomain.com的請求不使用代理, #這可以使cache只對外部網有效. 接下來,你應該設定僅自己的內部用戶才能使用Proxy,這需要修改/etc/httpd/conf/Access.conf 加入以下段落: #Proxy 存取限制 order allow,deny #順序:缺省禁止 allow 111.111.111.0/24 #允許111.111.111.0-111.111.111.254使用, #/24是指網絡掩碼是24個1,即255.255.255.0 #段落結束 現在,重新啟動httpd,然後設置你的客戶機,將代理服務器設成111.111.111.111:8080 就行了. (3)虛擬主機 Apache的名字虛擬主機是一項不錯的功能,它可以用一台Apache機器,一個IP來提供多個 頁面,設定非常簡單,你需要編輯/etc/httpd/conf/httpd.conf,假定有兩個名字: a.domain.com和b.domain.com都指向111.111.111.111(注意,用CNAME產生的兩個重合 的名字只能作一個來算,要作虛擬主機,你必須在域名中定義兩個記錄),那麼你可以添 加下面的段落: Listen 111.111.111.111 80 NameVirtualHost 111.111.111.111:80 #說明111.111.111.111是一台虛擬主機 #第一個虛擬主機 ServerName a.domain.com #虛擬主機名 DocumentRoot /home/httpd/html/a.domain.com/ #a.domain.com的主頁文件的存放地址 Errorlog /var/log/a.log #錯誤信息記錄 ServerAdmin
[email protected] #管理員的郵件地址(可選) #段落結束 #第二個 ServerName b.domain.com DocumentRoot /home/httpd/html/b.domain.com/ Errlog /var/log/b.log ServerAdmin
[email protected] 同上 設定結束後,重新啟動httpd. 順便說一句,如果你要給每個虛擬用戶配置CGI腳本怎麼辦?簡單啦,就是在有關這個用戶的 〈VirtualHost〉段落中加入ScriptAlias 段落,例如,這樣: ScriptAlias /cgi-bin/ /home/httpd/html/a.domain.com/cgi-bin/ 這樣以後象http://a.domian.com/cgi-bin/的引用就自動轉向到/home/httpd/html/a.domain.com/cgi-bin/ 下了。當然象DirectoryIndex之類的也可以放進去,呵呵. (4)其他說明 現在有一個名叫commanche的程序,可以通過Web頁面對Apache進行管理,不過我還是喜歡直接修改配置文件,有問題比較好處理,呵呵. 另外一個重要的問題是,假如你允許別人使用你的服務器來發布web頁面,那麼你必須小心, /etc/httpd/conf/httpd.conf中有一個十分重要的段落是 User nobody Group nobody 它定義系統在httpd存取時使用nobody權限,這可以避免許多安全性問題,絕對不要將它設成root!