httpd.conf 設定內容﹕
作者: 日京三子


-------------------

StartServers 8

# 系統預設服務機器人數量,如果沒必要別修改

MaxClients 150

# 系統提供最大服務數量,如果遇到「砍站程式」通常會破百...

MaxRequestsPerChild 100

# 最大系統同時回應服務數,越大CPU_LOADING會越恐怖...

LoadModule cgi_module         modules/mod_cgi.so

# 想跑Perl或CGI的話,請啟始上面這一行吧(最基本系統要求!)

#LoadModule put_module	       modules/mod_put.so

# 有些程式需要特別的PUT函式呼叫,如果您遇到這種特別的CASE,請啟始這行!


LoadModule perl_module        modules/libperl.so


LoadModule php_module         modules/mod_php.so


LoadModule php3_module        modules/libphp3.so


LoadModule php4_module        modules/libphp4.so


LoadModule dav_module         modules/libdav.so


LoadModule roaming_module     modules/mod_roaming.so


LoadModule ssl_module         modules/libssl.so



AddModule mod_perl.c


AddModule mod_php.c


AddModule mod_php3.c


AddModule mod_php4.c


AddModule mod_dav.c


AddModule mod_roaming.c


AddModule mod_ssl.c



# 上面這幾行是系統預設會執行的,因為族繁不及備載,就不一一說明了,反正檢查一下就好!

DocumentRoot "/var/www/html"

# 系統預設目錄



# 這是定義,系統主目錄的位置,如果要修改請連帶的修改上面那行!


UserDir public_html

# 使用者個人目錄位置,就像是/home/test/public_html這樣,喜歡的話就修改成別的吧!


#
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    
#        Order allow,deny
#        Allow from all
#    
#    
#        Order deny,allow
#        Deny from all
#    
#

# 這是限制在個人目錄裡面能做的事情,如果對系統有要求的話,加上對系統的安全性會比較高!
# 但是,如果連系統運作都不正常的話,請先不要加上限制,確定能運作之後再來!

ErrorLog /var/log/httpd/error_log

#發生不明錯誤時,紀錄檔的所在位置

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

# 系統定義,在http://www.domain.com/cgi-bin/xxx.pl所執行的位置
# 唯一特別的是,這是採用ScriptAlias的方式讓APACHE知道目標位置
# 但是,為甚麼這地方能夠執行CGI呢?請看下面這行


    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all


# 原來,這地方定義了說,「只要在這目錄底下的檔案,一律視為CGI來執行
# (因為Options ExecCGI)」所以在後面「開放使用者執行權限」的地方,我
# 也將會像這地方一樣宣告。

#########################################

AddHandler cgi-script .cgi
AddHandler cgi-script .pl

# 讓APACHE能夠辨識檔案種類,我在這邊自己加入了「.pl」這種形式。

########################################

# If the perl module is installed, this will be enabled.

  Alias /perl/ /var/www/perl/
  
    SetHandler perl-script
    PerlHandler Apache::Registry
    Options +ExecCGI
  


# 如果在上面有執行mod_perl.c的話,這邊的函式才會執行。
# 當然,在等會兒的地方,我們一樣要照抄不誤...



#########################

Include conf/mod_perl.conf
ScriptAliasMatch ~(.*)/(cgi-bin/.*) "/home/$1/public_html/$2/"

# 我在這上面分別告訴apache說,我還要特別載入mod_perl.conf這個設定檔
# 因為我喜歡將這個部分獨立出來處理。
# 順便在後面定義了,使用者的cgi-bin的目錄。請特別注意,我是使用ScriptAliasMatch
# 的函式,基本上這只是說明,如果您想要換地方的話,請自行動手... 但是要跟我在
# mod_perl.conf裡面所定義相符合才行...


#########################


# 以下就是我的mod_perl.conf內容

#########################

LoadModule perl_module	/usr/lib/apache/libperl.so
AddModule mod_perl.c



    SetHandler perl-script
    AddHandler cgi-script .cgi
    AddHandler cgi-script .pl
    AllowOverride None
    
    PerlHandler Apache::Registry
    PerlSendHeader On
    Options +ExecCGI


#########################

# 說實在的,我也搞不懂為甚麼在cgi-bin的地方是宣告Options ExecCGI,但是在perl的部分
# 卻又是宣告成Options +ExecCGI,這個「+」到底有甚麼玄機就請四方大德告知啦...


--
附 1﹕

----- Original Message ----- 
From: dwight 
To: 
Sent: Sunday, June 24, 2001 1:37 AM
Subject: apache那篇文章


原文最後一段:
# 說實在的,我也搞不懂為甚麼在cgi-bin的地方是宣告Options ExecCGI,但是在perl的部分
# 卻又是宣告成Options+ExecCGI,這個「+」到底有甚麼玄機就請四方大德告知啦...

那個+ 是指加入前一層目錄的設定之意
比方說前一層的 Options 有FollowSymLinks
如果沒有加號,這一層設定會是ExecCGI
如果有,就是FollowSymLinks 跟 ExecCGI