Mac配置apache cgi服務

2.打開apache
[cpp]  view plain  copy
  1. apachectl start  

3.在瀏覽器輸入
[cpp]  view plain  copy
  1. localhost:8080  
若是獲得 It’works,說明apache運行成功
brew安裝的apache默認端口是8080,mac自帶的apache默認端口是80
 
4.用sublime打開httpd.conf文件,固然用任意一個文本編輯器打開都行
[cpp]  view plain  copy
  1. subl /usr/local/etc/apache2/2.4/httpd.conf  
  2. 固然沒有sublime的話,能夠用圖形化界面打開  
  3. open /usr/local/etc/apache2/2.4/  
  4. 在Finder中用一個文本編輯器打開httpd.conf  

5.修改httpd.conf文件
[cpp]  view plain  copy
  1. 修改爲:  
  2. DocumentRoot "/Users/deng/Sites」  
  3. <Directory "/Users/deng/Sites">  
  4. ScriptAlias /cgi-bin/ "/Users/deng/Sites/cgi/"    //放在Directory外
  5.   
  6. 若是註釋了下面三句,就取消註釋  
  7. LoadModule cgi_module libexec/apache2/mod_cgi.sohtml

  8. AddType text/html .shtml  
  9. AddOutputFilter INCLUDES .shtml  
  10.   
  11. 在文件最後加上如下內容
  12. AddHandler cgi-script .cgi .sh .pl  
  13.   
  14. <Directory "/Users/deng/Sites/cgi/">  
  15.     Options ExecCGI  
  16.     AllowOverride None  
  17.     Order deny,allow  
  18.     Allow from all  
  19. </Directory>  

6.給Sites和Sites/cgi權限
[cpp]  view plain  copy
  1. chmod +x /Users/deng/Sites  
  2. chmod +x /Users/deng/Sites/cgi  

7.重啓Apache
[cpp]  view plain  copy
  1. apachectl restart  

8.在/Users/deng/Sites/cgi放入測試文件
文件名: first.pl
[cpp]  view plain  copy
  1. #!/usr/bin/perl  
  2.   
  3. =head1 DESCRIPTION  
  4.   
  5. printenv — a CGI program that just prints its environment  
  6.   
  7. =cut  
  8. print "Content-type: text/html\n\n";  
  9.   
  10. for my $var ( sort keys %ENV ) {  
  11.  printf "<h2>%s = \"%s\"<h2>\n", $var, $ENV{$var};  
  12. }  
須要給 first.pl權限
[cpp]  view plain  copy
  1. chmod +x /Users/deng/Sites/cgi/first.pl  

9.嘗試在終端運行first.pl
[cpp]  view plain  copy
  1. /Users/deng/Sites/cgi/first.pl  
若是有輸出,說明能夠運行。

10.在瀏覽器中打開
[cpp]  view plain  copy
  1. localhost:8080/cgi-bin/first.pl  
注意:
1.404 not fount
多是DocumentRoot沒有設置對,或者ScriptAlias /cgi-bin/ 沒設置對,或者沒有對應的文件
 
2.403 forbidden
我遇到這個問題是由於 /cgi-bin/ 不在 DocumentRoot的子目錄下。
還有一個多是 沒有給 /cgi-bin/還有裏面的腳本執行權限
 
3.500 Internal Server Error
是腳本輸出的格式不符合http1.1協議格式
[cpp]  view plain  copy
  1. Content-Type:text/html  
  2.   
  3. body  

頭和主體之間有一個空行
 
apache輸出的日誌信息
[cpp]  view plain  copy
  1. /usr/local/var/log/apache2/access_log    訪問apache的請求在這個文件均可找到  
  2. /usr/local/var/log/apache2/error_log     全部非200 OK的錯誤信息都會在這個文件找到  
相關文章
相關標籤/搜索