Apache服務器高級設置指南

  轉自《軟件世界》http://www.swm.com.cn 作了部分修改。
一、 安裝

     Red Hat默認的是/etc/httpd,配置文件在/etc/httpd/conf目錄下,頁面文件在/home/httpd目錄下。
     若是windows2000,請參見我的上篇原創文章http://www.xtong.com.cn/robornet/docs/Apache2_Tomcat4.txt。

二、 設置httpd.conf、srm.conf、access.conf文件

   Apache安裝成功後,在conf子目錄下有四個文件:httpd.conf、srm.conf、access.conf、magic。
     httpd.conf是Apache設置文件中的主文件,httpd程序啓動時會先讀取httpd.conf。
     srm.conf是數據配置文件,在這個文件中主要設置WWW Server讀取文件的目錄、目錄索引時的畫面、CGI執行時的目錄等等。
     access.conf是負責基本的讀取文件控制,限制目錄所能執行的功能及訪問目錄的權限設置。

     //說明:Apache2安裝成功後只有三個配置文件:httpd.conf、magic、mime.types

   下面將簡單對這三個數據設置文件進行說明。 

     httpd.conf文件:

      TransferLog: 如果你想知道你的網站上哪個頁面最受來訪者的歡迎,在一段時間內有多少人訪問你的站點,你當然可以設置
                      一個計數器,但每頁都設計數器,太繁瑣而且得到的結果不太可靠。最好的辦法是查看相應log文件,TransferLog
                      命令就是指定當瀏覽器要求服務器傳送文件時記錄到所設置的文件,可以根據此文件查看有哪些用戶看過哪些HTML
                      文件。可用一些程序分析這個文件的數據,得出監測各種有用的數據。默認的訪問log文件是logs/access_log。
      ErrorLog: 這個命令是指定當WWW Server運轉過程中發生問題時錯誤信息存放到哪個文件。默認是logs/error_log。
       VirtualHost:這個命令是用來設置虛擬主機,即用一臺主機執行多個域名的WWW Server。詳細命令使用將在第三部分詳細解釋。 
        *********:  其它命令附後。

     srm.conf 文件:

      DocumentRoot:指定WWW Server存放html文件的根目錄。WWW Server從硬盤中讀取html文件傳送給瀏覽器,並不是可從任一個目錄
                      中讀取文件,而是從一個特定目錄中開始讀取文件,這個特定的目錄就是由DocumentRoot命令來指定。red hat5.2
                      中默認的目錄是/home/httpd/html。如果用戶訪問http://www.swm.com.cn/netlife/index.html,此時WWW Server
                      並不是從系統的根目錄下的netlife目錄中讀取index.html,而是從/home/httpd/html/netlife目錄中讀取index.html文件。
        UserDir:如果要在WWW Server上給一些用戶開設空間,擱放個人主頁,最好不要把每個人的html文件都放到DocumentRoot目錄中,
                 用UserDir命令可讓每個人的頁面放置在自己的home目錄中。默認的目錄是public_html。如果UserDir設置的目錄是public_html,
                 而Username是yan,而該user的home目錄是/home/yan,那你訪問http://www.swm.com.cn/~yan/intr.html時所看到的intr.html
                 文件存放在/home/yan/public_html中,而不是/home/httpd/html。 

    access.conf 文件:
 
      如果你有些目錄只想讓某些人訪問,或者只允許在特定的目錄下允許CGI程序,這時就要對access.conf進行修改。Apache的存取控制方式
       有兩種:一是'整體存取控制',只通過access.conf來控制文件的設置,來限定目錄所能執行的功能及存取目錄的權限設置。
       二是'特定目錄存取控制',在特定目錄中建立存取設置文件,這個文件名在srm.conf中的AcessFileName來決定,默認是.htaccess。
       例如某些目錄中的文件只允許某些人訪問,那可在該目錄下建立.htaccess文件,當WWW Server讀取該目錄時便會自動讀取.htaccess
       來決定是否讀取執行或要求口令驗證。這兩種方式所使用的命令幾乎相同,而且設置的格式也相同。  

     Directory:說明要設置的目錄,然後再用命令來設置目錄的功能和權限。
     Options: 設置目錄可以執行哪些功能。有None、All、ExecCGI、Includes、Indexs、IncludesNoExec、FollowSymlink、SymlinksOwnerMatch
                 等選項。如果想讓某個目錄可以執行CGI程序,那麼應在Options命令中加上ExecCGI選項。
     Require: 設置可以對所指定目錄以指定方式來存取的Users和Group。該命令執行後,當讀取該目錄數據時,系統會要求輸入Username和Password。 

 
    忠告:修改完設置文件後,不要像在Windows工作那樣,重啓機器使其生效。要記住,你現在linux下,使用linux的好處之一就是不用再見到Windows 98
          那死機時的藍屏以及不必對配置文件做了一點點修改就無聊而又頻繁地重啓機器。你的WWW服務器任何時候都有很多人在訪問,頻繁地重啓機器將
          把你的客人趕跑。要學會不重啓機器,而是重新啓動一個正執行的程序(Process,嚴格一點應叫做進程、作業)。可以用kill命令來使程序重新
          啓動。具體kill的使用參見有關文檔。

        先用ps命令查看httpd的pid號,然後用kill命令殺死它,重新啓動httpd。具體命令如下:

       linux> ps -x
      linux> kill -HUP 13668 //13668是假設httpd的pid號,在實際使用中,不同的情況值也不同

        再將httpd重新啓動,使修改的配置文件生效。


三、 虛擬主機(Virtual Host)的設置

    作爲系統管理員,若你只有一個IP地址,卻有好幾個域名,又要求訪問每個域名都要看到不同的內容,那怎麼辦?總不至於爲每個域名都配上一臺服務器吧。
     這就要採用虛擬主機(Virtual Host)技術,幸好Apache就支持這種功能。虛擬主機有兩種方式:IP-Based(基於IP式)、Name-based(基於域名式)。
     IP-Based指的是一個域名對應一個IP地址,而Name-based指的是多個域名對應一個IP地址。

   虛擬主機的設置並不複雜,只要在httpd.conf文件中加入相應的命令就行。

  下面是一個Name-based(基於域名式)虛擬主機的httpd.conf例子,假定IP爲:192.168.188.20,兩個域名分別是long.com.cn、short.com.cn。 

    httpd.conf: 
      .......
      <NameVirtualHost 192.168.188.20>
          ServerAdmin [email protected]
          ServerName www.long.com
          DocumentRoot /home/httpd/long/html  
          ErrorLog logs/error_log
          TransferLog logs/access_log

          ServerAdmin [email protected]
          ServerName www.short.com
          DocumentRoot /home/httpd/short/html
          ErrorLog logs/short.com-error_log
          TransferLog logs/short.com-access_log
      </NameVirtualHost>
      .......

      說明:NameVirtualHost命令指定在哪個IP上設置虛擬主機;ServerAdmin命令是設定當WWW Server執行有問題時,會將ServerAdmin所設置的E-mail
            傳送到瀏覽器,讓使用者用該E-mail與系統管理員聯繫;ServerName命令是設置WWW Server的域名;DocumentRoot命令設置本虛擬主機的本地目錄。 

四、 提供個人主頁空間、用戶homepage的設定

   給用戶開放個人主頁空間,一是要確定用戶主頁的存放目錄,二是開放用戶主頁目錄的讀取權限。 

   方法一:
         你以root的身份給用戶chen開個帳號,系統自動會給chen分配一空間/home/user,而後在/home/chen的目錄下建一public_html的子目錄,
           子目錄的屬性要設成other可讀和可執行的。接着修改access.conf。在文件的最後加上以下一段:
               AllowOverride None
               order allow,deny
                 allow from all
      而後,重新運行httpd,用戶就可以通過http://www.swm.com.cn/~chen/訪問chen的個人主頁。
           這種方法的優點是方便,缺點是安全性太差。 

   方法二:
         在/home/httpd目錄下爲用戶chen建個目錄chen。修改srm.conf中的UserDir爲/home/httpd/*/html,接着重新運行httpd便可以了。


附1:apache的httpd.conf文件設置常用命令詳解

    ServerType standalone 
  #設置服務器的形式是單獨啓動(standalone),還是藉由互聯網絡伺服程序inetd來啓動。一般使用前者。 

  ServerRoot '/usr/local/apache' 
  #設置服務器的Home目錄,用來存放服務器的設置文件、錯誤文件、記錄文件。 

  PidFile logs/httpd.pid 
  #程序啓動時,把父進程httpd的進程號(process id)存在這個文件中。這個文件名可以配合PidFile指令加以改變。 

  ScoreBoardFile logs/apache_status 
  #設置網絡上WWW服務器一些執行程序的記錄文件。 

  #ResourceConfig conf/srm.conf 
  #AccessConfig conf/access.conf 
  #這兩個文件的內容已經包含在httpd.conf文件中了。 

  Timeout 300 
  #如果客戶端300秒還沒有連上,或者服務器300秒還沒有傳送數據到客戶端,就會自動斷線。 

  KeepAlive On 
  #設置是否支持續傳功能。 

  MaxKeepAliveRequests 100 
  #設置支持續傳功能的數目。數目越多則浪費的硬盤空間越多。設置爲0則不止持續傳。 

  KeepAliveTimeout 15 
  #如果該爲使用者在15秒後還沒有向服務器發出要求,則他在不能續傳。 

  MaxRequestsPerChild 0 
  #設置同時間內child process數目。 

  ThreadsPerChild 50 
  #設置服務器使用進程的數目。 

  #Listen 3000 
  #Listen 12.34.56.78:80 
  #允許使用其它的Port或IP訪問服務器。此例中Port爲3000,IP爲12.34.56.78:80。 

  #BindAddress * 
  #設置Apache監聽所有的IP,也可以具體的指定。 

  #LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll 
  …… 
  #打開當前未激活預定以的模塊。 

  #ExtendedStatus On 
  #設置服務器產生的狀態信息。 

  Port 80 
  #設置服務器使用的Port。 

  ServerAdmin [email protected] 
  #設置服務器管理者的E-Mail地址。 

  #ServerName new.host.name 
  #服務器的主機名。如果你有固定的IP地址,則不需要設置。 

  DocumentRoot '/usr/local/apache/htdocs' 
  #設置存放站點html文件的目錄。 

   
  Options FollowSymLinks 
  AllowOverride None 
   
  #設置/目錄的指令。具體地說明: 
  Option:定義在目錄內所能執行的操作。 
  None:表示只能瀏覽, 
  FollowSymLinks:允許頁面連接到別處, 
  ExecCGI:允許執行CGI, 
  MultiViews:允許看動畫或是聽音樂之類的操作, 
  Indexes:允許服務器返回目錄的格式化列表, 
  Includes:允許使用SSI。這些設置可以複選。 
  All:則可以做任何事,但不包括MultiViews。 
  AllowOverride:加None參數表示任何人都可以瀏覽該目錄下的文件。 
  另外的參數有:FileInfo、AuthConfig、Limit。 

  UserDir public_html 
  #定義使用者存放html文件的目錄。 

  DirectoryIndex index.html 
  #定義首先顯示的文件。 

  AccessFileName .htaccess 
  #定義每個目錄訪問控制文件的名稱。 

  #CacheNegotiatedDocs 
  定義代理服務器不要Cache你的頁面。不建議使用。 

  UseCanonicalName On 
  #服務器使用ServerName指定的服務器名和Port指定的端口地址。


附2:  常用Apache模塊及其功能:
    
    模塊是Apache的組成部分,它爲Apache內核增加新功能。模塊配置行如下所示: AddModule modules/standard/mod_env.o
    

    模塊名           功能                         缺省 
    mod_access          提供基於主機的訪問控制命令 y
    mod_actions         能夠運行基於MIME類型的CGI腳本或HTTP請求方法 y
    mod_alias           能執行URL重定向服務 y
    mod_asis            使文檔能在沒有HTTP頭標的情況下被髮送到客戶端 y
    mod_auth            支持使用存儲在文本文件中的用戶名、口令實現認證 y
    mod_auth_dbm        支持使用DBM文件存儲基本HTTP認證 n
    mod_auth_mysql      支持使用MySQL數據庫實現基本HTTP認證 n
    mod_auth_anon       允許以匿名方式訪問需要認證的區域 y
    mod_auth_external   支持使用第三方認證 n
    mod_autoindex       當缺少索引文件時,自動生成動態目錄列表 y
    mod_cern_meta       提供對元信息的支持 n
    mod_cgi             支持CGI y
    mod_dir             能夠重定向任何對不包括尾部斜槓字符命令的請求 y
    mod_env             使你能夠將環境變量傳遞給CGI或SSI腳本 n
    mod_expires         讓你確定Apache在服務器響應請求時如何處理Expires y
    mod_headers         能夠操作HTTP應答頭標 y
    mod_imap            提供圖形映射支持 n
    mod_include         使支持SSI n
    mod_info            對服務器配置提供了全面的描述 y
    mod_log_agent       允許在單獨的日誌文件中存儲用戶代理的信息 n
    mod_log_config      支持記錄日誌 y
    mod_log_referer     提供了將請求中的Referer頭標寫入日誌的功能 n
    mod_mime            用來向客戶端提供有關文檔的元信息 y
    mod_negotiation     提供了對內容協商的支持 y
    mod_setenvif        使你能夠創建定製環境變量 y
    mod_speling         使你能夠處理含有拼寫錯誤或大小寫錯誤的URL請求 n
    mod_status          允許管理員通過WEB管理Apache y
    mod_unique_id       爲每個請求提供在非常特殊的條件下保證是唯一的標識 n 
發佈了0 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章