在Linux下設置WWW Server 寧辛 編者按:許多人的生活已變得越來越簡單:食物、水、空氣、網絡。這種簡單源於一種“透明”—網絡操作對於用戶已變得越來越透明了。但在這種透明背後,卻是越來越龐大復雜的網絡操作系統,越來越不透明的管理。你看看本期專題的幾篇文章便可明白了。 其實關於網絡操作系統真是罄竹難書。這裡不過是冰山一角。但也許是最閃亮的一角:如何在Linux上設置WWW Server和建立DNS服務器,教你在SCO OpenServer和Windows NT、Windows 95中相互共享打印機的技巧,Solaris和NetWare5安裝技巧。當然,UNIX操作系統還有很多,這裡的幾款無法代表全部。希望大家舉一反三,能夠獲得一些啟發。 目前WWW Server軟件有許多,能運行在linux下的也不少,有NCSA HTTPd Server、CERN HTTPd Server、pache、Netscape Fast Track Server、Zeus Server等。這些軟件各有特色:NCSA(美國伊利諾斯大學的國家超級計算應用中心)是WWW Browser Mosaic發跡之地,也是Netscape公司的安德森成名的地方;CERN(歐洲原子核研究中心)是WWW的起源地,1989年蒂姆·貝納斯-李正是在這開發成功了世界上第一個Web服務器和客戶機。這兩家推出的WWW Server功能齊全,成為同類軟件的標准,再加上它們都是Freeware,因此剛一推出就大受歡迎。前幾年,在linux下WWW Server軟件使用最多的是NCSA和CERN,但這一兩年來,後起之秀Apache卻獨領風騷,號稱“WWW Server之王”。在最新的Red Hat、Slackware和 OpenLinux各版本中都包含了Apache。 Apache是在NCSA的基礎上發展起來的,因此這二者的配置文件十分相似。Redhat5.2自帶的是Apache 1.3。 一、安裝 Apache的安裝十分簡單。最好在安裝red hat時,選擇安裝web server,這樣即使你對編譯操作不熟的話,也能輕輕松松把服務器架設起來。 如果你想親自編譯源文件,那麼你已經不是一個初學者,建議你直接去看how-to文檔或其他資料。 打開機器,進入X-Window系統後,啟動Netscape Navigator,敲入本機的IP地址,如果出現“It worked”的歡迎頁面,那說明服務器程序工作正常。你可以進行下一步配置工作。 在不同的版本下,服務器默認的工作根目錄也不一樣。Red Hat默認的是/etc/httpd,配置文件在/etc/httpd/conf目錄下,頁面文件在/home/httpd目錄下。 二、設置httpd.conf、srm.conf、Access.conf文件 Apache安裝成功後,在conf子目錄下有四個文件:httpd.conf、srm.conf、access.conf、magic(請注意:在www-howto文檔中,說第四個文件是mime.types,但在實際安裝中,在conf子目錄下是magic文件)。httpd.conf是Apache設置文件中的主文件,httpd程序啟動時會先讀取httpd.conf。srm.conf是數據配置文件,在這個文件中主要設置WWW Server讀取文件的目錄、目錄索引時的畫面、CGI執行時的目錄等等。access.conf是負責基本的讀取文件控制,限制目錄所能執行的功能及訪問目錄的權限設置。 下面將簡單對這三個數據設置文件進行說明。 1. httpd.conf文件 TransferLog:如果你想知道你的網站上哪個頁面最受來訪者的歡迎,在一段時間內有多少人訪問你的站點,你當然可以設置一個計數器,但每頁都設計數器,太繁瑣而且得到的結果不太可靠。最好的辦法是查看相應log文件,TransferLog命令就是指定當浏覽器要求服務器傳送文件時記錄到所設置的文件,可以根據此文件查看有哪些用戶看過哪些Html文件。可用一些程序分析這個文件的數據,得出監測各種有用的數據。默認的訪問log文件是logs/access_log。 ErrorLog:這個命令是指定當WWW Server運轉過程中發生問題時錯誤信息存放到哪個文件。默認是logs/error_log。 VirtualHost:這個命令是用來設置虛擬主機,即用一台主機執行多個域名的WWW Server。詳細命令使用將在第三部分詳細解釋。 2. 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。 3. 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例子(編者注:因篇幅原因,我們這只給出了相關部分,全文見www.swm.com.cn)。 IP為:192.9.188.20,兩個域名分別是long.com.cn、short.com.cn。 httpd.conf: NameVirtualHost 192.9.188.20 〈VirtualHost www.long.com〉 ServerAdmin [email protected] ServerName www.long.com DocumentRoot /home/httpd/long/html ErrorLog logs/error_log TransferLog logs/access_log 〈/VirtualHost〉 〈VirtualHost www.short.com〉 ServerAdmin [email protected] ServerName www.short.com DocumentRoot /home/httpd/short/html ErrorLog logs/short.com-error_log TransferLog logs/short.com-access_log 〈/VirtualHost〉 NameVirtualHost命令指定在哪個IP上設置虛擬主機 在VirtualHost命令中進行各個主機的具體設置。 ServerAdmin命令是設定當WWW Server執行有問題時,會將ServerAdmin所設置的E-mail傳送到浏覽器,讓使用者用該E-mail與系統管理員聯系。 ServerName命令是設置WWW Server的域名。 四、提供個人主頁空間、用戶homepage的設定 經常見到某些網站提供個人主頁,顯得很神氣,其實你也可以開放你機器上的空間給別人,這很簡單就能實現。只要你按照下面的提示對你的WWW服務器配置文件進行修改。 給用戶開放個人主頁空間,一是要確定用戶主頁的存放目錄,二是開放用戶主頁目錄的讀取權限。 方法一:你以root的身份給用戶chen開個帳號,系統自動會給chen分配一空間/home/user,而後在/home/chen的目錄下建一public_html的子目錄,子目錄的屬性要設成other可讀和可執行的。 接著修改access.conf。在文件的最後加上以下一段: 〈Directory /home/chen/public_html〉 AllowOverride None order allow,deny allow from all 〈/Direstory〉 而後,重新運行httpd,用戶就可以通過http://www.swm.com.cn/~chen/訪問chen的個人主頁。 這種方法的優點是方便,缺點是安全性太差。 方法二:另一種辦法是在/home/httpd目錄下為用戶chen建個目錄chen。修改srm.conf中的UserDir為/home/httpd/*/html,接著重新運行httpd便可以了。