[Back to LINS | Back to Tseng's Home Page]
曾元顯 Feb. 29, '96
Access times.
微軟作業系統 Windows 3.1 上的 WWW 伺服器目前有ZBServer、 SerWeb、Chameleon Web Personal Server、WEB4HAM、WebServer、 WinHTTPD [1]。其中 WinHTTPD 具備 NCSA Unix 伺服器大部份的功能[2], 而且安裝簡易、個人及教育單位使用免付費、可以Visual BASIC 製作 CGI 程 式、支援使用者權限管理,因此特別值得介紹。讀者可藉此瞭解 WWW 伺服器 的運作方式,並進而能夠架設與管理一個伺服器站,為個人服務的單位提供更好 的服務。
如果您對網路資源的利用不熟悉,請參閱相關文件 [3-5]。
C:\>md httpd 並將取回之檔案放在此目錄。為了減少麻煩,建議第一次安裝時最好按照這裡的 步驟及指示,先不要自作主張任意修改。
C:\httpd>pkunzip -d whttpd14.zip 其中參數 -d 會將壓縮檔中的子目錄一併解開。你的PKUNZIP 解壓縮程式必須 是V2.04g 版或是較新的版本。 如果不是,一樣用 FTP去取吧。檔案解開之後, 稍微瀏覽一下有哪些子目錄與檔案,瞭解一下這個才 600K bytes 左右的軟體有 哪些東西。
SET TZ=EST8 然後重新開機以便時區設定能夠生效。在此所謂適當的地方通常是 AUTOEXEC.BAT 檔案的最後一行,您的電腦中是否如此,視您的開機程序設 定而可能有所不同,只要開機時能讓 DOS 執行到即可。 為了能順利執行所附的展示功能,請繼續下列兩步驟(或者在碰到問題時再執行 亦可,並記得重新啟動伺服器):
修改 Windows 目錄底下 SYSTEM.INI 檔案中 [NonWindowsApp] 部份的 CommandEnvSize 命令,使成為 CommandEnvSize = 8192
以 FTP 取得 VBRUN300.DLL 放在 Windows 目錄的 System 子目錄中。
啟動伺服器前的準備工作跟執行瀏覽器之前的準備工作一樣,必須先執行 WinSock 之類的軟體如trumpet,使 Windows 能夠以 TCP/IP 的協定在網路上 與別的機器溝通。一旦 Winsock 執行後,即可透過檔案管理員,到 httpd 目錄 下執行 httpd.exe 以啟動伺服器。或者在程式管理員下,選擇「檔案」的「開啟 新檔」,再選擇「程式項目」,以便在程式管理員下造出伺服器 httpd 的小圖形, 方便爾後的執行。 結束伺服器的執行就像結束 Windows 其他應用程式一樣,選到之後按 ALT+F4 即可離開。 到此,讀者就擁有一個伺服器了。但是如何玩您的新玩具呢,下面將做簡單 的介紹,詳細的資料請參閱 WinHTTPD 的線上參考文件,其主檔案在: C:\httpd\htdocs\httpddoc\overview.htm
在啟動 httpd 後,您可以在同一部電腦執行瀏覽器,透過 URL: http://127.0.0.1/ 可以連到這個伺服器的 Home Page,這個 Home Page 其實 是硬碟 C:httpd\htdocs\ 目錄下的 index.htm 檔案。下面進一步的說明,請利 用檔案管理員與瀏覽器來相互對照,以便瞭解硬碟上的文件位置與文件的 URL 是如何關連起來的。 一、不管您的電腦有沒有連上網路,有沒有 IP Address,都可以執行這個 伺服器,並以瀏覽器透過 127.0.0.1 這個位址來做測試。也就是說,要是您的電 腦同時執行瀏覽器與伺服器,而沒有連上網路的話,則在瀏覽器上輸入 http://127.0.0.1/,會連到同一部電腦裡的伺服器。如果電腦有連上網路,而且 IP Address 是 server's_IP_address 的話,那麼 URL: http://127.0.0.1/ 與 URL: http://server's_IP_address/ 都可以連上同一部電腦的伺服器。所以 IP Address 127.0.0.1 是供您的電腦不接網路時測試用的。 二、伺服器啟動時,會讀入 C:\httpd\conf\ 目錄下的數個組態檔,以設定伺 服器的環境變數。WinHTTPD 的環境變數都已在組態檔案中「預設」好了,使 用者只要解開壓縮檔後,即可啟動。組態檔中環境變數「文件路徑」會預設為 C:\httpd\htdocs\,「目錄索引檔」會預設為 index.htm ,這些「預設」當然都可以藉由修改組態檔案來做變更。 三、所謂「文件路徑」是放置您的 HTML 文件供外界以 HTTP 協定取用 的路徑。通常我們以 DOS 或 Windows 命令在「文件路徑」下建立子目錄以便 放置這些 HTML 檔案,如 C:\httpd\htdocs\lins\faculty\tseng\papers.htm 這時,這個檔案的 URL 為 http://server's_IP_address/lins/faculty/tseng/papers.htm 注意,/httpd/htdocs/ 不在此 URL裡,那是因為伺服器收到 URL 後,會自動 加入「文件路徑」/httpd/htdocs/,以便在硬碟中找到正確的檔案。所以您必須 將所有的文件放置在「文件路徑」或其子目錄下,才可以對應到正確的 URL。 除非,透過組態命令的設定,才能不受此種「預設」的限制。 四、所謂「目錄索引檔」,其功用是當伺服器收到沒有指定檔名的 URL 時 (也就是格式如 http://server's_IP_address/path/ 之類的 URL),伺服器會自動將預設的「目錄索引檔」index.htm接在這個 URL 後面,變成 http://server's_IP_address/path/index.htm 來當作是這個 URL 所要取用的文件。但是,如果給定的路徑 path 目錄裡找 不到 index.htm,伺服器就把這個目錄裡的檔案名稱送出;其效果就好像使用 者在 DOS 底下,對這個 path 目錄打了 DIR 命令一樣。舉個例子,請把 C:\httpd\htdocs\index.htm 改名成為 C:\httpd\htdocs\index1.htm,再以 URL: http://127.0.0.1/連連看,您就明瞭上面的意思了。如果要馬上看範例展示, 請連至 http://127.0.0.1/demo/index.htm#treenav 五、當您以 http://server's_IP_address/ 的 URL連上伺服器而沒有指定路徑 與檔名時,伺服器回應的文件是C:\httpd\htdocs\ index.htm檔案。現在您只要 修改C:\httpd\htdocs\ 目錄下的 index.htm 這個檔案,即可作成您自己的 Home Page。 到此,您應該可以建立自己的資料在伺服器上供別人取用了。至於伺服器還 有哪些功能,下面繼續做簡單的介紹。同樣的,詳細資料請您參閱 WinHTTPD 的線上參考文件。
前面的說明顯示,伺服器的行為取決於組態檔案中的環境設定。至於 WinHTTPD 伺服器的組態檔,都放在 C:\httpd\conf\ 目錄下,重要的有httpd.cnf (主要設定檔)、srm.cnf(資源設定檔)、及access.cnf (存取設定檔)等三 個檔,每個設定檔的重要命令說明如下。
此命令告訴伺服器「組態檔案子目錄」、「錯誤檔案子目錄」、「記錄檔案 子目錄」都放置在 C:\httpd\ 目錄下。注意在組態檔裡牽涉到設定路徑時,幾 乎都是用 UNIX 的習慣,也就是「斜線(/)」而不是 DOS 的「倒斜線(\)」。 另外,此命令前的井字號(#),是表示此行是「註解」的意思。組態檔裡把命 令標示為註解,表示此命令已經「預設」為註解的值了。如果要改變預設值, 就要刪除井字號,使改變的值生效。
由於 UNIX 系統具有多人多工的特性,系統同時可以執行好幾個程式。當 程式透過網路與另一個程式互相溝通時,除了要知道對方的主機位置(即 IP Address)外,還要知道對方的 Port Number,才能在眾多的程式中正確地找到另 一個程式。
此命令在告訴伺服器誰是伺服器的管理員,萬一出現任何錯誤時,伺服器會 通知使用者誰是管理員,使用者就可以將發生錯誤的現象與過程 Mail 給管理員 知曉。所以 <email addr> 應該換成你自己的 Email address。 主要設定檔裡的其他的命令,牽涉到比較進階的應用,在此不做說明,您目前也 可以略過不管。
這便是設定「文件路徑」的指令,已於前一節描述,請參閱。如要修改 「文件路徑」,請直接修改路徑名稱,並將井字號去掉使之生效。注意在此路徑 使用「斜線」符號,而不是「到斜線」。
這是設定「目錄索引檔」的指令,請參閱前一節。所以如果要讓所有的子目 錄的「目錄索引檔」改名為 overvewi.htm 時,就可以透過這個命令作修訂。
WinHTTPD 可以透過 #haccess.ctl 檔案來控制「文件路徑」及其下每個子 目錄文件的取用權。請參考存取權控制文件 C:\httpd\htdocs\httpddoc\info\authtut.htm
當某個文件原來是放在這個伺服器,而現在改放到別的伺服器時,使用者如 果還連到目前的伺服器會找不到他要的文件。這個命令可以讓伺服器告訴使用者 原來的文件搬到哪裡去了。
文件除了放在「文件路徑」底下外,可以透過此命令放在別的地方。例如, 若 myfile.htm 放在 C:\user\sam\ 底下,則命令 Alias /mydir/ c:/user/sam/ 可讓c:\user\sam\myfile.htm 對應到 URL:http://server's_IP_Address/mydir/myfile.htm
當 URL 指定到某個目錄而沒有指出檔案時,如果該目錄有 index.htm 檔,伺服器就會送出此 index.htm 檔。如果該目錄沒有 index.htm 檔,伺服器 就把該目錄下的子目錄與檔案名稱送出,就像使用 DOS 時在該目錄輸入 DIR 一樣。此命令是告訴伺服器,除了送出子目錄名稱與檔案名稱外,還送出一些關 於檔案的資料。
接續上一個命令的說明,伺服器送出子目錄名稱與檔案名稱時,會根據此命
令,保留一些檔案不送出去,讓使用者看不到不該看到的檔案。上面的設定,將
所有以 「~」開頭的檔案、以 「.bak」結尾的檔案、中間是「.{」的檔案、
「readme.htm」結尾的檔案、及 「#haccess.ctl」檔案,都不讓使用者看到。
存取設定檔的說明,請參考範例文件 C:\httpd\htdocs\httpddoc\info\authtut.htm 及線上說明 C:\httpd\htdocs\httpddoc\setup\access\overview.htm 如果想看範例展示,請連到 c:\httpd\htdocs\demo\index.htm#access 或 http://140.136.85.1/~tseng/index.htm#lins84