<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      CGI教學:第4章 設置Web Server以運行CGI

      [摘要]一、NCSA Server二、CERN httpd三、Netscape Server四、IIS 一、設置NCSA Server或Apache Server以使用CGINCSA Server的CGI1.1只允許用下列兩種方式激活用戶服務器上的腳本:ScriptAlias指令和AddType指令。這兩...
      一、NCSA Server
      二、CERN httpd
      三、Netscape Server
      四、IIS
      一、設置NCSA Server或Apache Server以使用CGI

      NCSA Server的CGI1.1只允許用下列兩種方式激活用戶服務器上的腳本:ScriptAlias指令和AddType指令。這兩條指令都放在srm.conf文件中,該文件一般在用戶的服務器根目錄的conf目錄中。

      ScriptAlias指令告訴服務器該目錄中的所有文件都是腳本或者是服務器作為CGI文件執行的程序。該方法能保證用戶的CGI程序在特定位置。AddType指令允許用戶告訴服務器任何具有指定前綴的文件都是可執行文件。如果希望將CGI程序放在服務器中任何地方的話該指令即很有用。

      1、ScriptAlias指令

      ScriptAlias指令位于Server Resource Map文件(srm.conf)中,程序內容例如下:

      DocumentRoot /usr/local/etc/httpd/htdocs
      UserDir public_html
      REdirect /HTTPD/ http://www.server.com/
      Alias /icons/ /usr/local/etc/httpd/icons/
      ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/
      DirectoryIndex index.html index.shtml index.cgi
      IndexOptions FancyIndexing
      AddIcon /icons/movie.gif .mpg .qt
      AddIcon /icons/menu.gif
      AddIcon /icons/blank.xbm
      DefaultIcon /icons/unknown.xbm

      IndexIgnore */.??* *~ *# */HEADER* */README*
      DefaultType text/plain
      AccessFileName .htaccess
      srm.conf文件允許用戶根據自己系統需要設置HTTP Server。它允許用戶告訴服務器用戶的主頁在什么地方,目錄中的哪個文檔是索引文檔,如果不存在索引文件的話將裝載什么圖片文件以顯示文件的類型,等等。srm.conf及其他配置文件的說明可查閱http://www.nease.net/tppmsgs/msgs0.htm#34。

      2、AddType指令
      AddType指令是執行CGI程序的另一種方式,它是在srm.conf文件中加入下列行:

      AddType application/x-httpd-cgi.cgi

      在自己的系統中設置了該指令后,任何在服務器控制范圍內的擴展名為.cgi的文件都會被作為CGI程序執行而不是作為文本文件閱讀。這意味著用戶可以在他的個人目錄中創建腳本并能執行它。但是如果腳本寫得不正確,就可能導致對文件系統、口令文件等的不同類型傷害。

      AddType指令可以擴展為允許擴展名不是.cgi的程序同樣被執行。大家經常會看見以.pl(Perl腳本的常見擴展名)或.sh(Bourne Shell腳本的常見擴展名)結尾的腳本。如果想支持其他擴展名的程序,只需簡單地將它們加入AddType指令中,如下所示:

      AddType application/x-httpd-cgi .cgi .pl .sh

      3、訪問配置文件
      為了支持CGI程序的執行必須多加入一條指令。在Server Root/conf目錄中是一個名為access.conf的配置文件。該文件允許用戶設置ServerRoot下的哪個目錄能夠訪問的全局限制,甚至允許用戶控制哪些站點可以訪問這些目錄。下面是access.conf文件的一個例子:

      <Directory /usr/local/etc/httpd/cgi-bin>
      Options INdexes Exec CGI
      </Directory>

      <Directory /usr/local/etc/httpd/htdocs>
      Options Indexes FollowSymLinks
      AllowOverride All
      <Limit GET>
      order allow,deny
      allow from all
      </Limit>
      </Directory>
      Exec CGI表示允許執行該目錄中的CGI腳本。Options Indexes FollowSymLinks表示允許索引(顯示某文件夾中的內容)并能夠遵循符號鏈(這就意味著在ServerRoot之外的文件也能被訪問)。AllowOverride指令允許用戶決定哪個指令可以被目錄的.htaccess文件覆蓋。中設置了對該目錄中允許使用GET方式的限制。在HTTPD中,部分指令的選項是GET、POST和PUT(目前PUT尚未實現)。order allow,deny一行告訴服務器先找allow行再找deny行。下一行則是告訴服務器允許所有站點訪問該目錄中的頁面。

      二、設置CERN HTTP服務器以使用CGI
      CERN HTTP服務器(也稱為W3C HTTP服務器)僅需要編輯/etc/httpd.conf文件即可支持在服務器內使用CGI程序。這個指令類似于NCSA Server使用的指令:

      Exec /url-prefix/* /physical-path/*

      其中/url-prefix/定義了客戶能看見的路徑,而/physical-path/則是包含腳本的目錄的實際路徑。

      三、設置Netscape以使用CGI
      首先要啟動管理服務器。以root身份登錄,并運行/ServerRoot/admserv/start-admin,缺省端口為81。然后啟動瀏覽器連接。在Netscape Admin頁面中,單擊Select URL Mapping,從彈出窗口中選擇Map a URL to a Local Directory。然后單擊Select CGI and Server Parsed HTML,從彈出窗口中選擇Activate CGI as a File Type,F在即可單擊Browse Files并選擇欲激活的目錄。選擇完目錄后,單擊I'd Like to Activate CGI as a File Type。在ServerRoot中即會看到Conf目錄中的obj.conf配置文件中已加入了下列行:

      NameTrans form="/cgi-bin" fn="pfx2dir" dir="/usr/local/web/cgi-bin" name="cgi"

      name=cgi調用了下列行:

      <Object name="cgi">
      ObjectType fn="force-type" type="magnus-internal/cgi"
      Service fn="send-cgi"
      </Object>
      它告訴服務器此為一個CGI目錄,其中的所有文件都將用Netscape內部提供的CGI執行。 四、設置IIS以使用CGI

      在IIS上運行CGI有十個簡單的步驟:

      1)安裝Internet Service Manager。
      2)從列表中選擇WWW Servive。
      3)選擇Properties/Service Properties命令。
      4)單擊Directories標簽。
      5)單擊Add按鈕。
      6)指定自己的cgi-bin目錄的完整路徑(例如,c:\webfiles\scripts)。
      7)使用/scripts作為目錄別名。
      8)選中Execute檢查框。
      9)單擊OK保存修改。
      10)將自己的CGI程序放在c:\webfiles\scripts中并在HTML中作為/scripts/someprogram.exe引用。
      在使用IIS時經常出現的問題與設置IIS沒太大關系而是和基本的操作系統功能有很大關系。IIS與底層的操作系統聯系很緊密,即使已經設置為服務,Web服務器基本上是作為應用程序來運行的,通常只有一個用戶安全環境,Web服務器能訪問到的與Web服務器下的CGI程序能訪問到的內容幾乎沒什么不同(這類似于UNIX環境,在UNIX環境下,很重要的一點就是不要將Web服務器作為root來運行)。IIS的工作很像一個擴展的文件系統。每個用戶有自己的權限。CGI程序在執行該程序的訪問者的用戶安全環境中運行。對于未驗證的頁面,這就是缺省提供的“無名的”用戶,而對驗證的頁面,安全環境就像用戶位于服務器控制臺前手工運行該程序一樣。使大部分初學者犯錯誤的正是這種額外的安全層次。

      IIS管理員最常抱怨的一個錯誤信息是"The Application misbehaved by not returning a complete set of headers"。錯誤消息接下來列出服務器接收到的頭標--一般是個空的清單。這種討厭的不明確的錯誤有一個直接的原因,不過這個原因與CGI腳本的錯誤操作沒有一點關系。如果因為某種原因某個CGI腳本不能運行,它就不能產生任何頭標。IIS將錯誤的責任推在腳本身上,實際上卻幾乎總是服務器管理員的錯。CGI腳本需要訪問系統DLLs、系統的臨時目錄以及它們使用的任何其他資源。如果該腳本是按靜態約束進行編譯的,那么除非所有組件均可用,否則操作系統不會裝載該程序的。如果系統管理員鎖緊了安全級使得腳本不能裝載它的DLLs,那么腳本就不能運行。當腳本不能運行時,它也就不產生任何頭標了(或者其他的輸入),從而導致出現本段開頭引用的錯誤消息。

      如果管理員是在一個安全目錄中運行腳本的(安全目錄即是一個需要單獨用戶驗證才能訪問的目錄),那么每個可能訪問系統的用戶都必須有下列安全權限。如果是無名地運行腳本,那么只有無名用戶需要這些權限:

      .對%systemroot%system(一般為c:\winnt\system)的讀權限
      .對%systemroot%system32(一般為c:\winnt\system32)的讀權限
      .對臨時目錄(一般為c:\temp)的修改權限
      .對Web根的讀權限
      .對CGI目錄的修改權限
      如果在有了這些訪問權限之后仍然出問題,可以進一步臨時給特殊的用戶帳號Everyone賦予這些目錄的修改權限。如果問題解決了,就可以認定是少了一個步驟(或一個用戶)。糾正問題然后慢慢回收權限直至服務器重新安全。




      日韩精品一区二区三区高清