Linux 版 (精华区)
发信人: don (逍遥物外·造极登峰), 信区: Linux
标 题: Linux下的Apache服務器設置
发信站: 哈工大紫丁香 (2000年10月23日20:40:26 星期一), 站内信件
Linux下的Apache服務器設置
大家也許已經接触過很多Web服務器了,比如WinNT下的IIS4、Win95/98下的PWS,
還又UNIX下的NCSA等。下面我大家介紹一种linux發行版本中最多的一种Web服務器
Apache,它可以說上NCSA的科隆体。且占全internet Web服務器的一半左右。
簡介
Linux中Apache服務器版本為1.3.6,其配置文件為:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/srm.conf
/etc/httpd/conf/access.conf
其中這三個文件并沒有什么先后順序,其中的配置語法都一樣,即類HTML語法,之
所以將配置文件分為這三個文件原因是,將配置的目的分成了三塊,如:
httpd.conf:一般配置服務器的服務器的服務模塊,如端口號80,最大連接數,用
戶等。
Srm.conf:用來配置文檔目錄樹,用戶目錄等。
Access.conf:用來配置目錄的訪問權限。
還有一個文件,mime.types 指定文件的mime類型,該文件一般不需要你改變。
另外,日志文件在/var/log/httpd/中。
三個基本命令
httpd 每t 測試你的配置文件的語法
httpd start 啟動Apache服務器
httpd stop 停止Apache服務器
詳細的語法介紹
httpd.conf文件:
ServerType standalone
Standalone表示以一個獨立的服務器進程運行,如果設置為inetd,則表示以
inetd超級服務的子服務程序來運行,具体的配置稍后在講。默認的是standalone
模式。
Port 80
配置Web服務器的TCP端口,默認為80。
ServerAdmin root@localhost
服務器管理員的email地址。
Startservers 10
同時打開的進程的個數,你可以用ps 每A來查看。
KeepAlive on
是否允許連接時發出多個請求。
KeepAliveTimeout 500
等待下一個請求的時間。
MaxClients 150
允許的最大客戶連接數,當你超出該連接數時,服務器會將你的請求拒之門外。這
就是你在网上衝浪時,第一次連接不上主机,而第二次連接上的原因。
ServerRoot /etc/httpd
存放服務器的配置,出錯和日志文件的目錄。
Servername yourhost.yourdomain
你主机的名稱,如果有域名填寫域名(与你的DNS配置有關),沒有填寫IP地址。
Errorlog
用來存放出錯的日志文件。
User nobody
Group nobody
指定CGI的執行者。
Bindaddress
即虛擬主机的IP地址,一塊网卡設置多個IP來實現虛擬主机的功能。
<virtualHost anotherhost.anotherdomain>
</virtualHost>
關于虛擬主机的設置問題我們稍后再講。
srm.conf 資源文件配置
DocumentRoot /home/httpd/html
指定默認文檔的位置
UserDir public_html
設置用戶主頁位置,如當你再瀏覽器中輸入如下URL http://www.domain/~user01
時,服務器就會自動指向/home/user01/public_html/目錄。
Directoryindex index.html index.cgi
設置默認的文檔
Alias /icons/ /home/httpd/icons/
用來設置虛擬目錄,注意,這時一般虛擬目錄的設置方法,如果你要設置一個有
CGI執行權限的虛擬目錄時,如下:
scriptAlias /cgi-bin/ /home/httpd/cgi-bin/
Addhandler cgi-script .CGI
指定一种文件類型的處理方式,如.cgi的文件就可以執行。
access.conf 目錄訪問設置文件
先看下面一個例子:
<Directory /home/httpd/cgi-bin/>
Allow Override None
Options ExecCGI
</Directory>
這种格式是一种類HTML格式的結构。其中的各种對該目錄的控制,都再其中設置。
Options的功能參數介紹:
All: 選中所有選項除MultiViews功能
ExecCGI: 打開CGI的執行功能
FollowSymLinks: 開啟一個動態連接,當用戶訪問到該目錄時,能自動地連接到另
外一個相關的目錄中去。
Includes: 開啟服務器的引用功能
IncludesNoEXEC: 開啟服務器端的引用功能,但CGI和#exec功能講被禁止。
Indexes: 是否在沒有找到默認文件,之后顯示文件列表
SymLinksIfOverMatch: 只有在連接在目標文件或目錄与當前的目錄屬于同一個目
錄時才開啟連接
另外:AllowOverride參數:是用來設定目錄的訪問控制的,None表示關閉,一般
如果一個目錄是CGI腳本目錄,一般設置為None。
虛擬主机的配置
虛擬主机有兩种:多IP和單IP
多IP:
首先你的网卡上必須綁定多個IP地址,那你的內核必須支持IP Alias,使用
ifconfig 和route命令來配置,如:
ifconfig eth0:0 192.168.2.1 netmask 255.255.255.0 up
route add 每net 192.168.2.1 netmask 255.255.255.0 eth0:0
如果你想在每次啟動計算机時啟動都個IP,你可以將這兩行命令加入到你得rc.
local啟動腳本中,另外,如果你使用的是Redhat6 Linux你可以將
/etc/sysconfig/network-scripts/ipcfg-eth0 拷貝為ipcfg-eth0:0,然后將
ipcfg-eth0:0中的IP地址、子网掩碼和廣播地址修改一下,當下一次啟動時,會自
動綁定第二個IP地址的。
好了IP地址配置好了,該配置你的DNS了,你只需要在你的DNS中為新增的IP加一個
域名即可。具体的DNS配置,請參考DNS-HOWTO。
最后你需要配置Apache服務器了,以實現虛擬主机。一般去修改httpd.conf配置文
件,在默認安裝時,在該文件的最后會有几行用“#”注釋的配置實例,如果沒有
也不要緊,我現在就介紹。這一切的配置命令是放在<virtualhost>標記之間,如
下:
<virtualhost member.zz.ha.cn>
ServerAdmin webmaster@zz.ha.cn
ServerName linux.cqi.com.cn
DocumentRoot /webroot
ErrorLog /var/log/httpd/webroot.log
</virtualhost>
這樣每一個虛擬主机需要管理一個IP地址,你就需要在bindAddress之后綁定一個
IP地址,這种方式是實現了虛擬主机的功能,但是很浪費資源。比較好的方法就是
在使用單IP。
單IP
這是一种比較新的技術,而且效率非常高,但是唯一的要求是你的客戶机上的瀏覽
器需要支持HTTP 1.1版本,我認為這一點我們不需要擔心,我們現在使用的瀏覽器
一般都支持,比如IE3.0以上,Netscape4以上。
使用這种方式配置httpd.conf文件和“多IP”几乎一樣,只不過我們不需要綁定
IP地址了,在DNS設置中我們需要把多個域名指向單個IP,而在反地址解析文件中
只能指向一個域名(具体參考DNS-HOWTO),這只能給你的記錄文件帶來麻煩.
CGI執行腳本的配置
這里有兩种設置CGI腳本的方法。第一、CGI的腳本文件以.cgi為擴展名;第二、設
置腳本可執行目錄。但是這兩种方法都需要將要執行的文件設置為711,才可以被
執行。
第一种方法,我們需要在access.conf文件种將你要發行的目錄設置為Option
ExecCGI All,在srm.conf資源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
這樣在的所有的目錄种只要你的文件是.cgi為擴展名的,且文件訪問權限為711的
,無論給文件在你發行目錄的任何一個地方都可以做為CGI被Apache服務器調用。
這种方法一般沒有第二种方法安全。
第二种方法,是將一個目錄作為一個可執行目錄,將所有的cgi文件都放在其中,
這里就不一定非得是以.cgi為擴展名得文件可以執行,而是只要有711屬性的文件
就可以被執行,而且其他的非可執行文件都被禁止訪問。我們的默認配置文件种就
有一個很好的例子:
access.conf:
<Directory /home/httpd/cgi-bin/>
Allow Override None
Options ExecCGI
</Directory>
srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
這樣只要在/home/httpd/cgi-bin/目錄中的可執行文件都可以被Web服務器調用,
而其他的非可執行文件將被拒絕訪問。
配置用戶的發行目錄
這里有兩种設置方法
第一种是系統的默認方法,即用戶目錄下的public_html目錄為用戶的發行,且默
認的主頁文件為index.html,且該目錄不支持CGI。
第二种是在其他目錄种專門為用戶設置發布目錄,如我想在/home/html目錄做為用
戶的web目錄,那管理員就因該在該目錄下為每一個用戶設置一個子目錄,如:
/home/html/user01、/home/html/user02等。那么,你的srm.conf文件中的
UserDir后面就不能再是public_html了,應該改為:UserDir /home/html/*/,注意
這里的“*”代表anyone,當你再瀏覽器中請求一個如http://www.
domain/~user01時,Apache服務器就會自動的將你的請求轉移到
/home/html/user01中,然后去尋找index.html文件。以我個人的經驗,這种設置
不需要到access.conf中設置該目錄的訪問屬性,還有,當我們設置虛擬主机時也
不用設置目錄的訪問屬性,但是如果,你想讓某個目錄具有CGI權限,都要到
Access.conf文件中去配置目錄的訪問權限,如:你想讓你的所有用戶在他們的發
布目錄中具有CGI訪問權,則需要在你的access.conf中這樣設置:
<Directory /home/html/*/cgi-bin/>
Allow Override None
Options ExecCGI
</Dirctory>
注意這里設置用戶目錄中的cgi-bin子目錄為cgi執行目錄,這是一种安全的設置,
而且也是一种UNIX的習慣。
如何將Apache服務器設置為inetd的子服務
當你安裝了Apache后,默認設置為standalone,方式運行,如果你想將它設置為
inetd的子服務,首先在每次啟動linux時不啟動httpd,然后編輯/etc/inetd.
conf,在其中加入下列語句:http stream tcp nowait root /usr/sbin/httpd
httpd
然后重新啟動inetd服務器。這樣你用pa 每f 每A命令查看進程運行情況時,你不
會發現httpd的進程的存在,但是一旦有客戶請求一個頁面時,inetd就啟動一個
httpd進程為該請求服務,之后就自動釋放,這种運行方式有助于節省系統資源,
但是如果,你的web服務很重要,一般不設置為這种方式運行。
允許放置和刪除命令
這是一种新的web技術,即通過web直接向服務器上傳文件。比如:http://202.
103.132.138/gz168/personal就是這樣的。但是這种上傳文件的方式還是不能給
ftp比美,而且這种方式對一個web 站點來說是很不安全的,需要特殊的腳本來完
成,如果向獲得更詳細的信息請參考:
http://www.apache.org/features/put
用戶授權和訪問控制
你也許在其他windows的web服務器(如:iis4)中,遇到過這樣的情況,當你點擊
某個連接時,你的瀏覽器會彈出一個身份驗証的對話框。這就是web服務器的用戶
授權和訪問控制。
當然了Apache服務器也支持這种功能,你需要在access.conf中需要用戶授權的目
錄中加上AllowOverrides Authconfig Limit設置。
然后在該目錄下加一個.htaccess文件(用于訪問控制),.htpasswd和.htgroup(
用于用戶授權)。為了安全,我建議你在access.conf中加入下列標記:
<Files ~”/\.ht”>
Order deny, allow
Deny from all
</Files>
這樣這三個文件就不會被用戶訪問了,你的系統也就安全點了。
其他
關于Apache的其他新特征,如:su_exec、imagemaps、SSI/XSSI我也不太了解,如
果你對這些特征感興趣,請參考:
http://www.apacheweek.com/features/imagemaps
http://www.apache.com/doces/suexec.html
http://www.apacheweek.com/features/ss
http://www.zyzzyva.com/module_registry
WWW-HOWTO
WWW-mSQL-HOWTO
--
一条驿路,一种氛围。
一朵梨花,一种思考。
希望能在Linux这条驿路上与你同行!
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: PR-AI.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.519毫秒