2010-12-16 68 views
1

我在Debian Lenny機器上有2個不同的Web服務器。一個正在運行FastCGI(TRAC),另一個正在運行PHP和一些CGI腳本。所以我現在啓用了2個Apache2模塊(cgi和fcgi)和2個虛擬主機。對於這兩個模塊同時運行,我沒有其他特別的興趣。Perl CGI或CGI :: Fast在Debian Lenny上的Apache 2.2下

所以我想只保留Apache fastcgi模塊運行,因爲它看起來更有效率。

您能否確認以下評估是正確的還是正確的?
1 - 我會什麼都沒有做/更改爲TRAC網站(已運行FCGI)
2 - 我將不得不調整其他web服務器虛擬主機與一個處理程序被設置爲FastCGI的腳本
3-我會不得不改變perl模塊從「使用CGI」到「使用CGI :: Fast」
4-我將能夠保留perl現有的其他CGI腳本的其餘變化
5-我不需要在Web服務器腳本中使用CGI ::阿帕奇但CGI :: FastCGI的(I/O當前CGI模塊)

我希望我的觀點是明確的,因爲它是所有有點外國對我...

THX

編輯
THX的提示,以函數naveed和J-16,
這裏是我做得到它的工作,如果它可以幫助別人:

  • 哼哼,安裝CGI :: Fast與CPAN,然後它效果更好..
    Debian上已安裝libperl

    perl -MCPAN -e shell 
    cpan> install CGI::Fast 
    
  • 改變文件名從*的CGI到* .fcgi,

  • 包含在由函數naveed下面勸while循環FastCGI的,
  • 設置有關虛擬主機與FastCGI的正確處理程序阿帕奇(見fastcgi doc
  • 啓用了Apache的FastCGI模塊(a2enmod的FastCGI)和殘疾人CGI模塊,
  • 檢查在Apache設置fastcgi.conf文件,
  • 重新啓動Apache的,
  • 檢查運行作爲FastCGI的一個Apache子過程(PS -afx)
  • 修正了一些腳本的問題,已經在..但在運行時的FastCGI新出現的,如勸(通過檢查Apache日誌檢測到的錯誤),
  • 編輯:適應文件上傳代碼爲初始腳本沒有工作了(還是不明白爲什麼),所以我不得不用這樣一個替換while循環:

    open(FILE,">$upload_dir/$file_name") 
    while ($bytes_count = read($file_query,$buffer,2096)) { 
    $size += $bytes_count; 
    print FILE $buffer; 
    } 
    close(FILE); 
    
  • 完成。

世界還不完美,但它終於有效。

回答

6

你將不得不做一點點改變使用CGI ::使用CGI :: Fast。確保你換你的CGI腳本使用while循環,因爲文檔指出http://p3rl.org/CGI::Fast

use CGI::Fast; 
while (CGI::Fast->new()) { 
    # The original CGI code goes in here 
} 
+1

此外,如果你未初始化的全局變量(啊)你的CGI繼電器,你可能要修復它.. – 2010-12-16 08:04:52

+0

THX到你們兩個。 – hornetbzz 2010-12-17 00:25:07