IIS安裝CGI,iis6,IIS7安裝CGI圖解
cgi是一種很古老的技術了,今天又把他翻出來 ,主要是因為這是用c/c++開發(fā)webservice服務器端一個相對簡單的方案,借助gsoap,可以很容易的生成相關的代碼,借助于http server(iis或apache)的強大的功能,可以很容易的開發(fā)出一個簡單的webservice,你不需要考慮安全的問題,多用戶并發(fā)的問題,會話管理的問題,你只需要站在http server的肩膀上,實現(xiàn)你自己的業(yè)務功能就是了.下面是msdn里關于iis配置cgi的文章,摘過來以便于以后查閱.
配置 CGI 應用程序 (IIS 6.0)
IIS 6.0 支持通用網(wǎng)關接口 (CGI) 應用程序。本主題提供了有關在 Web 服務器上安裝和配置 CGI 應用程序以及設置 CGI 腳本超時值的管理信息。
要點:
為了最大限度地減少服務器的攻擊面,默認情況下,Windows Server 2003 上不安裝 IIS 6.0。首次安裝 IIS 6.0 時,IIS 6.0 將被鎖定 -- 這表明只啟用處理靜態(tài)網(wǎng)頁的請求,并且只安裝萬維網(wǎng)發(fā)布服務(WWW 服務)。IIS 上的所有功能都將關閉,包括 ASP、ASP.NET、CGI 腳本、Microsoft 的 FrontPage? 2002 Server Extensions 以及 WebDAV 發(fā)布功能。如果未啟用這些功能,那么 IIS 將返回 404 錯誤。您可以通過 IIS 管理器中的 啟用 Web 服務擴展節(jié)點啟用這些功能。有關如何解決 404 錯誤及其他問題的詳細信息,請參閱 IIS 6.0 中的疑難解答。
CGI 程序在 Web 服務器接收到包含 CGI 程序名和程序所需參數(shù)的 URL 時執(zhí)行。如果將 CGI 程序編譯為可執(zhí)行 (.exe) 文件,則必須提供包含程序執(zhí)行權限的目錄,以便用戶可以運行程序。如果 CGI 程序以腳本形式(例如 Perl 腳本)編寫,則既可為目錄提供執(zhí)行權限,也可為其提供腳本權限。要使用腳本權限,必須將腳本解釋程序標記為腳本引擎。
今天一個客戶反映服務器不支持CGI,我上去看了一下。原來這客戶只是安裝了ActivePerl,默認安裝有些地方?jīng)]有配置清楚,所以CGI不能運行。我重新安裝了ActivePerl,并檢查了配置,就可以了。在這里把windows2003的iis6.0環(huán)境下的CGI配置做個教程,方便自己也方便大家。
第一步:下載ActivePerl,并安裝。
這里可以選擇安裝路徑,一般不用改用默認的c:\perl就行了,直接點next
這里是選擇安裝選項,一般就是用默認,直接點next,install安裝,安裝完成。
第二步:檢查權限,添加CGI映射。
打開c:\perl目錄的屬性,點安全,查一下user賬號對這個目錄要有讀取,讀取和運行,列出文件夾三個權限,要不運行CGI程序時會提示輸入用戶名密碼。
打開IIS管理器,WEB服務擴展,允許所有未知CGI擴展,Perl CGI Extension,Perl ISAPI Extension,PerlEx ISAPI Extension
然后回到網(wǎng)站屬性,在主目錄選項里點配置,添加CGI后綴映射。點添加,可執(zhí)行文件后面輸入C:\Perl\bin\perl.exe "%s" %s,或者直接把.pl的配置復制上來,擴展名是cgi,限制為GET,HEAD,POST,TRACE,點確定。
到這里CGI的配置就全部完成了,打開你的網(wǎng)站,CGI程序是不是就可以運行了。
如何解決IIS7出現(xiàn)“由于 Web 服務器上的“ISAPI 和 CGI 限制”列表設置,無法提供您請求的頁面”提示。
1.打開 Internet 信息服務(IIS)管理器
2.在“功能”視圖中,雙擊“ISAPI 和 CGI 限制” 以確認 Web 服務擴展被設置為“允許”。
Tisp:
a、如果該擴展不在列表中,請在“操作”窗格中單擊“添加”。
b、在“添加 ISAPI 和 CGI 限制”對話框中,在“ISAPI”或“CGI 路徑”框中鍵入 .dll 或 .exe 文件的路徑,或者單擊“瀏覽”導航到相應文件的位置。
c、在“描述”框中,鍵入該限制的簡要說明。
d 、(可選)選中“允許執(zhí)行擴展路徑”以使限制可以自動運行。
e、如果不選中此選項,則限制狀態(tài)將為“不允許”,這是默認狀態(tài)。您可以在以后選中此選項并單擊“操作”窗格中的“允許”來允許該限制。 單擊“確定”。
鏈接:https://www.zhihu.com/question/19582041/answer/23337307
來源:知乎
著作權歸作者所有,轉載請聯(lián)系作者獲得授權。
對一個 CGI 程序,做的工作其實只有:從環(huán)境變量(environment variables)和標準輸入(standard input)中讀取數(shù)據(jù)、處理數(shù)據(jù)、向標準輸出(standard output)輸出數(shù)據(jù)。
環(huán)境變量中存儲的叫 Request Meta-Variables,也就是諸如 QUERY_STRING、PATH_INFO 之類的東西,這些是由 Web Server 通過環(huán)境變量傳遞給 CGI 程序的,CGI 程序也是從環(huán)境變量中讀取的。
標準輸入中存放的往往是用戶通過 PUTS 或者 POST 提交的數(shù)據(jù),這些數(shù)據(jù)也是由 Web Server 傳過來的。
就比如,我們剛學 C 語言時寫的 Hello World,也可以作為一個合法的 CGI 程序。
現(xiàn)在用 CGI 的已經(jīng)很少了,因為每個 CGI 進程只處理一個請求,換句話說,每個請求都需要創(chuàng)建一個 CGI 進程處理,CGI 程序處理完畢后就退出了。
FastCGI 正是對 CGI 的改進,而且改進了不是一點點。
從總體上看,一個 FastCGI 進程可以處理若干請求(一般 FastCGI 進程是駐留著的,但不排除 IIS 之類的 Web Server 限制其空閑時間,在一段時間內沒有請求就自動退出的可能),Web Server 或者 fpm 會控制 FastCGI 進程的數(shù)量。
細節(jié)方面,F(xiàn)astCGI 是一套協(xié)議,不再是通過簡單的環(huán)境變量、標準輸入和標準輸出來接收和傳遞數(shù)據(jù)了。一般來說,F(xiàn)astCGI 用 TCP 或者命名管道(Named Pipe)傳輸數(shù)據(jù)。
現(xiàn)在絕大多數(shù) PHP 網(wǎng)站都是在用 FastCGI 的。
因此,這個問題的答案取決于題主對 CGI 的理解。
0 Comments.