1. 程式人生 > >http 配置可執行CGI 指令碼

http 配置可執行CGI 指令碼

CGI(摘抄) cgi是 Common Gateway Interface (通用閘道器介面) 的簡稱,這是一個用來處理 http請求的介面; 由於http請求十分多樣且十分複雜,web伺服器不能完成這種操作,於是便利用了外部程式來處理這些請求,

web伺服器將引數傳遞給外部程式,外部程式將執行結果返回給web伺服器; 外部程式和web伺服器的互動需要一種介面,那就是cgi介面,於是這些 外部程式也叫 cgi 程式 ;

cgi程式不是某種語言的產物,而是一種介面,你既可以用c語言來實現 cgi 程式也可以用php,甚至是shell指令碼來實現;

關係圖如下: 這裡寫圖片描述

1.軟體的安裝

yum install httpd

2.開啟服務

service httpd start

3.把/etc/httpd/conf/httpd.conf中,確認Apache裡面的CGI模組以及目錄別名模組已經被載入,開啟模組註釋

LoadModule cgi_module modules/mod_cgi.so LoadModule alias_module modules/mod_alias.so 4. /var/www/cgi-bin 目錄中 是 存放 CGI 指令碼的目錄。 預設底下是沒有內容的,可以自行建立

vim /var/www/cgi-bin/a.html
#!/bin/bash
echo echo -n "Hello!" /bin/date chmod u+x /var/www/cgi-bin/a.html chown apache:apache /var/www/cgi-bin/a.html讓Apache使用者可以讀。不加這個,會出現錯誤。

實驗內容: 單獨在某個虛擬主機上實現: 以 www.class.com為例,訪問www.class.com/cgi-bin/a.html一個執行性指令碼。(a.html如上所示)。 配置如下,單獨在/etc/httpd/conf.d目錄下建立www.class.com.conf

<VirtualHost *:80>
DocumentRoot "/data/class/web.com/"
站點目錄,自行建立 ServerName www.class.com 虛擬主機名稱 ErrorLog "/data/class/web.com/logs/error_log" 錯誤日誌位置,error_log不用建立,root會自動建立這個檔案 CustomLog "/data/class/web.com/logs/access_log" combined 訪問日誌生成位置,root也會自動建立 <Directory /data/class/web.com> 由於全域性/目錄是所有人都拒絕的,所以我們要放行我們自己所建立的站點目錄,讓我們允許的ip可以訪問到 Options Indexes 當站點目錄下,沒有index.html檔案,讓他可以以樹形方式展現出來。 AllowOverride None Require all granted 允許所以人訪問 </Directory> <Directory "/var/www/cgi-bin"> AllowOverride None Options ExecCGI 在該目錄下准許使用 CGI Require all granted </Directory> <IfModule alias_module> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 別名設定 </IfModule> </virtualHost>

5.重新啟動服務(只要更改配置檔案,就要重新啟動服務)

service httpd restart

6.進行本地域名解析,Windows下的hosts(C:\Windows\System32\drivers\etc)檔案是進行本地域名解析的檔案。新增下面這條語句。

192.168.72.140   www.class.com

7.驗證 這裡寫圖片描述