linux Apache CGI 安裝配置

來源:互聯網
上載者:User

本文假定你已經安裝好linux(本文的linux版本為Fedora Core3), 並具有root許可權.
1,安裝apache
首先到apache的首頁下載最新版本的apache http server,地址為 http://httpd.apache.org/
本文寫於2006.4.29,apache版本為2.2.0 .如果你也想用這一個版本的話請點擊:http://mirror.vmmatrix.net/apache/httpd/httpd-2.2.0.tar.gz
安裝apache:
切換到httpd-2.2.0.tar.gz所在目錄,然後:
# tar xvzf httpd-2.2.0.tar.gz
此時在該目錄下有一個檔案夾 httpd-2.2.0,切換到該檔案夾:
# cd ./httpd-2.2.0
我不知道你想把apache安裝到哪個檔案夾,我們假定想安裝到 /usr/local/apache2/ 下面,則
輸入下面的命令:
# ./configure --prefix= /usr/local/apache2
# make
# make install
執行完這3條命令之後,apache就安裝到你的 /usr/local/apache2目錄下了.
切換到該目錄看看有什麼咚咚吧;)
# cd ./usr/local/apache2
# ls
可以看到裡面有 /bin ,/conf , /htdocs, /cgi-bin 等目錄.此時apache還沒有啟動,我們通過/bin目錄下的工具apachectl來啟動,首先切換到/bin目錄:
# cd ./bin
然後啟動:
# ./apachectl start
這時候在地址欄輸入 http://localhost/ 看看是不是有成功的資訊?(筆者看到的是 "It works!") 的資訊, 當然不同的版本會不同,根據你 /htdocs 下的index.html內容而定.
把/usr/local/apache2/htdocs/index.html 替換成你的分頁檔就可以了.
到了這裡,我們假定你的apache伺服器已經安裝成功.如果還有問題請在網上搜尋一下或者聯絡我:
lonestep AT gmail D。T com
2, 配置apache使之執行cgi程式
預設下,cgi程式必須放在cgi-bin目錄下,我們先來配置使得cgi-bin下的cgi程式能得到正確執行,
後面將會介紹怎麼讓apache執行放在別的目錄下的cgi程式.
1),承上,我們已經把apache安裝到 /usr/local/apache2 目錄下,切換到/usr/local/apache2/conf 目錄,裡面有一個 httpd.conf 檔案, 編輯這個檔案:
# cd /usr/local/apache2/conf
# vi httpd.conf (假定你的文字編輯器是vi, 如果你用別的編輯器如emacs, gedit, kedit 之類,把vi 替換成它們的命令即可)
尋找其中一行如:
# ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
把這行前面前面的'#'去掉,然後重新啟動apache :
# cd ./bin (or cd /usr/local/apache2/bin)
# ./apachectl restart
ok, 假如你放了一個cgi程式'test.cgi'到cgi-bin的話,在地址欄
輸入 http://localhost/cgi-bin/test.cgi 看看是否能夠執行>?
如果不能,請發郵件給我:)
2),如果你想改變執行cgi的目錄(不用預設的cgi-bin目錄),則該變剛才的
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" 為:
ScriptAlias /SomeOtherDirectory/ "/usr/local/apache2/cgi-bin/"
然後重新啟動apache.
以上的過程都是比較簡單的,如果您遇到了本文未曾涉及的問題,或者與本文假設不同的條件,
請先到Internet上尋找解決辦法,如果還不行(once and once again)可以發郵件給我:)
一. CGI 的配置過程

1.CGI執行目錄設定. 一般在 /usr/local/apache/cgi-bin/檔案夾中. 在httpd.conf設定檔中能找到相關資訊. 例如我把的CGI 程式是test.pl 那麼地應的HTTP請法地址就是:http://localhost/cgi-bin/test.pl

2.CGI 的執行目錄出於全安考慮一般只給讀許可權.對應的httpd.conf 中的配置可執行CGI的地方如下:

<Directory /usr/local/apache/htdocs/somedir>
Options +ExecCGI
</Directory>

3.htaccess檔案
阿.htaccess檔案是一種方法,一套配置指令對每個目錄的基礎。 當Apache服務的資源,它看起來在目錄中由它提供的檔案的檔案要求.htaccess ,如果它認為有,它將適用於指示發現的。 .htaccess檔案可以被允許的AllowOverride指令,其中具體規定哪些類型的指令可以出現在這些檔案,或者,如果他們也不允許的。 允許指令,我們將需要為此目的,下面的配置將需要在您的主伺服器配置.

二, 設定檔的內容和參數意思

在配置目錄中有三個檔案,分別是:
1. conf/httpd.conf :
ServerType :有兩個值可供選擇standalone 和inetd
Standalone : 表示你的httpd進程,是以一個單獨的守護進程(daemon)的方式 在後台偵聽是否有用戶端的請求。
Inetd :表示你的httpd進程不是以守護進程(daemon)的方式運行,而是由Inetd 這個 internet services的進程偵聽,一旦有客戶的請求,他會自動的啟動httpd這個進程來提供相應的服務 預設的是Standalone方式,如果你不是對 ARPA Berkeley Services 不是很瞭解的 話,不要更改。
Port : 你分配給你的WEB SERVER 的連接埠號碼。
Httpd 的預設連接埠是80,也可以分配給自己的WEB SERVER 一個大於1024 的
連接埠號碼。如果你這樣作,你必須在你的URL後面跟上你的連接埠號碼才能訪問到你
的頁面。比如你分配給你的服務的連接埠號碼是8888,那麼你訪問時需要輸入
http://domainname:8888
ServerAdmin :服務管理員的email 地址,預設的是原生root使用者,所以是
root@localhost
ServerRoot :用來存放服務的配置、出錯和記錄檔案的目錄。
BindAddress :虛擬機器主機的IP地址。用一台機子虛擬多台機子。
ErrorLog :用來存放你WEB SERVER的出錯資訊的檔案。
TransferLog :用來存放記傳輸過的檔案名稱的記錄檔案。
PidFile :該指定的檔案存放了httpd進程的進程號,用來停止WEB SERVER。
ScoreBoardFile :用來存放進程的資訊。
ServerName :你機子的名稱,如果你有網域名稱,填入你原生網域名稱。如果沒有,就
填入你的主機名稱或IP地址。
Timeout :傳輸或接收的延時。大於這個時間SERVER 會斷開這個連結。
KeepAlive :(on or off)是否允許一個連結同時發出多的請求。
KeepAliveTimeout :(default is 15)等待下一個請求的時間。
MaxClients :(default is 150)允許的最大客戶個數。
通常上面的參數的預設值是不用改的,但是如果你同時在一台機子上開幾個WEB SERVER 時要注意。第一,你要給每一個WEB SERVER 分配不同的port 號。第二,要分別指定他們的errorlog檔案和pidfile檔案。第三,不懂的參數不要隨意改動,即使改動也要一次改一個,並留有記錄以便恢複。

2. /conf/access.conf :
主要是對目錄的功能和訪問的控制的設定。下面我針對預設的頁面的設定檔進行說明。該檔案的位置是:/etc/httpd/conf/access.conf.
該檔案的第一段非注釋部分如下:
<Directory /home>
Options Indexes IncludesNOEXEC
AllowOverride None
</Directory>
大家注意到這一部分是以<Directory /home>開頭,以</Directory>結束的。其中開頭的部分<Directory /home>表示下面的設定是針對 /home 目錄的。Options 這一命令有很多的參數,各參數的功能如下:
All 所有的選項除了MultiViews功能。
ExecCGI 開啟執行CGI程式的功能。
FollowSymLinks 開啟一個動態連結,當有客戶訪問到該目錄時會自動
的連結到另一個相關的目錄中去。
Includes 開啟服務端的引用功能。
IncludesNOEXEC 開啟服務端的引用功能,但是#exec和CGI程式的引用將
被禁止。
Indexes 如果沒有index.html檔案在目錄中,就會顯示檔案清單。
SymLinksIfOwnerMatch 只有在連結的目標檔案或目錄與當前的目錄屬於同一用
戶時,才開啟連結。
接著是AllowOverride參數,該參數是設定存取控制的。這裡把他設定成None,表示沒有開啟該功能。
第二部分是:
<Directory /home/httpd/html>
Options Indexes Includes ExecCGI FollowSymLink
AllowOverride None
order allow,deny
allow from all
</Directory>
第三部分是:
<Directory /home/httpd/cgi-bin>
AllowOverride None
Options ExecCGI
</Directory>
表示對/home/httpd/cgi-bin 不進行存取控制,允許執行CGI程式。這就表明這是一個用來存放CGI程式的目錄

3. /conf/srm.conf
主要是用來指定你的文檔的位置。
第一個參數是:DocumentRoot 。用來指定主文件的地址。
第二個參數是:UserDir 。用來指定個人首頁的位置。如果你有一個使用者的home目錄為 /home/jon 當在URL中輸入 http://yourdomain/~jon 系統就會到 /home/jon/X/中去取這個使用者的個人首頁。其中X為UserDir 所指定的目錄。
第三個參數是:DirectoryIndex。用來聲明尋找的索引檔案的名稱。
其他的不改也無防。通常用到的就是上面的幾個選項。

具體樣本
需要建立一個開機啟動的web server。假定你的文檔目錄為/home/jon/html。
首先,更改/etc/httpd/conf/access.conf檔案的內容。將原文檔的目錄更改為新的文檔目錄。
例如如下的更改:

複製代碼 代碼如下:<Directory /home/httpd/html> ? <Directory /home/jon/html>
Options Indexes Includes ExecCGI FollowSymLink
AllowOverride None
order allow,deny
allow from all
</Directory>
<Directory /home/httpd/cgi-bin> ? <Directory /home/jon/cgi-bin>
AllowOverride None
Options ExecCGI
</Directory>

如上做相應的更改,注意 /home/jon/cgi-bin為你的cgi程式的目錄。
接著,修改 /etc/httpd/conf/srm.conf檔案。
將DocumentRoot /home/httpd/html 改為DocumentRoot /home/jon/html
最後,修改 /etc/httpd/conf/httpd.conf檔案。
將ServerName 這一個參數後面的原來的內容替換為你的本機ip地址或主機名稱,同時去掉前面的注釋符 “#”。這裡的配置為:
ServerName jon (jon 為我的主機名稱)
從新啟動httpd進程:
#/etc/rc.d/init.d/httpd restart

四. CGI 程式的編寫

首先,所有輸出從您的CGI程式之前,必須由一個MIME類型的標題
1. 首先要確定Content-type: text/html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.