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.驗證