安裝配置 Apache服務器開發工具(1) CGl

1. 通用網關接口 CGI簡介

通用網關接口 CGI是一個信息服務器主機對外信息服務的標準接口。 CGI接收用戶的要求,然後讓服務器完成請求,並將執行結果返回給用戶。

CGI接口是爲了提供在超文本 HTML的文件編寫時,可以結合其他外部的程序語言,讓使用者通過瀏覽器將使用者的數據輸入到文件裏,然後經服務器轉呈現於其他用戶來觀賞或記錄至服務器主機上的數據庫裏。

CGI可以通過 CC++PerlShell腳本語言、 Jave來實現。後面的一些具體技術從某種意義上來說也是一種 CGI程序。

2. 配置Apache支持CGI

如何使 Apache能處理 CGI請求?必須通過相應的配置過程告知 Apache在哪裏存儲 CGI程序,指明CGI程序的擴展等,以下我們逐一介紹設置的內容與步驟。

(1) 創建存儲 CGI程序的目錄

創建集中的 CGI程序目錄只是建立 CGI環境的開始。如果要考慮提高安全性,應將集中的

CGI程序目錄保存在 DocumnentRoot目錄外,使訪問者不能直接訪問 CGI程序。

1) DocumentRoot目錄外創建一個目錄,然後將所有的 CGI程序都集中存放在這個目錄下。

例如,可創建一個 /home/httpd/public/apps的目錄作爲 CGI程序的大本營。

2) CGI程序目錄創建別名,也就是編輯配置文件 httpd.conf,加入:


ScriptAlias  /cgi-bin/  /home/httpd/public/apps


之後,當客戶訪問 www.xxx.com/cgi-bin/li.cgi時, WEB服務器會自動執行 WEB服務器上的/home/httpd/public/apps/li.cgi文件。

3) CGI目錄設置合適的權限,一般是隻允許 Apache有讀取和執行的權限但沒有寫的權限。

(2) 允許用戶訪問 cgi-bin

如果用戶需要使他的主頁更具有活力,往往會向你申請 cgi-bin訪問服務。下面介紹 Apache服務器爲用戶提供的兩種 cgi-bin訪問方法。

a) 使用DirectoryDirectoryMatch容器
當在配置文件 srm.conf中使用 UserDir命令定義一個目錄時, Apache會把該目錄作爲用戶WWW站點的頂層目錄。例如:

UserDir  Public_html


Apache接到www.xxx.com/~user的請求,就到 /home/user/Public_html取出主頁發送給客戶。如果要爲每個用戶添加 CGI支持,就在 Apache的配置文件 access.conf中添加下列配置:
<DirectoryMatch "/home/[a-z]+/public_html/cgi-bin">

Options ExecCGI

AddHandler cgi-script .cgi .pl

</DirectoryMatch>

注意 將DirectoryMatch換成Directory亦可

在這種方法中, Apache服務器將 www.xxx.com/~user/cgi-bin請求翻譯成爲了 /home/user/  Public_html/cgi-bin/,並允許執行任何帶有正確擴展名 (.cgi.pl)CGI程序。

b. 使用ScriptAliasMatch命令

通過使用 ScriptAliasMatch命令,可以爲每個用戶添加 CGI支持。例如:

ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/$1/public_html/cgi-bin/$2

這個命令將用戶名與 $1相匹配,其中 $1~([a-z]+)相等。將 /cgi-bin/後面的任何內容與 $2匹配,其中 $2(.*)相等。

這個設置也實現了將 www.xxx.com/~user/cgi-bin/xxx.cgi請求解釋爲:

/home/user/Public_html/cgi-bin/xxx.cgi

大家想一想,如果想將這個請求解釋爲:

/home/httpd/public/apps/xxx.cgi

該如何設置呢?對,應該是:

ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/httpd/public /apps/$2

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章