Windows 配置Apache以便在瀏覽器中運行Python script的CGI模式

來源:互聯網
上載者:User

現在因為已經安裝了2.6的Python,以及支援2.6的Eric4,就不想再重新安裝2.5來繼續配置Apache下mod_python了。

後來發現了一篇文章Running Python as CGI in Apache in Windows ,講述以CGI模式代替mod_python來運行python script。還有這篇Python for Windows 。

做法是:

開啟httpd.conf,找到”#ScriptInterpreterSource Registry “,移除前面的注釋# (如果找不到這行,就自己添加進去)
找到“Options Indexes FollowSymLinks ”這句,在後面加上”ExecCGI “。(那個”Indexes “最好也能去掉,因為如果不去掉的話,目錄下面沒有index.html這種檔案,就會顯示出目錄列表下的所有檔案,所以有安全性漏洞問題。如果去掉Indexes,而且沒有index.html檔案的話,就會顯示一個Forbidden頁面)
找到”AddHandler cgi-script .cgi “,在後面加上 .py。如果沒有這句,可以自己添加 “AddHandler cgi-script .py”
重新啟動Apache即可 (有的時候restart會導致Apache死掉,所以碰到這種情況的人可以stop先再start)
然後建立一個test.py script,

print "Content-type: text/html"
print ""
print "<html><head></head><body>"
print "Hello World"
print "</body></html>"注意第二句print “”不能少,如果沒有這句,會引起一個 “500 Internal Server Error” 錯誤。

在瀏覽器中運行http://localhost/test.py,Hello World兩個字被輸出後表明運行正常。

另外,有些錯誤提示如下:

沒有添加ScriptInterpreterSource Registry,會出現500 Internal Server Error 錯誤。
沒有添加ExecCGI,會出現403 Forbidden You don't have permission to access /test.py on this server 。
沒有添加AddHandler cgi-script .py,那內容就會以text文本式樣顯示在瀏覽器中。
注 :

添加ScriptInterpreterSource Registry的用意是讓Windows用Registry來找到Python的安裝地方。
ExecCGI是讓python script可以運行在任意目錄下面,因為Apache預設是讓cgi script運行在cgi-bin目錄下。而我把test.py放到htdocs下運行就會出現403 Forbidden的問題。所以需要加上ExecCGI,這樣就可以在htdocs下運行.py script了。但是ExceCGI會有安全性漏洞的問題。用FastCGI會安全一些。但是前提是需要安裝上FastCGI才可以。
CGI模式比mod_python模式要慢。所以以後有機會在別的電腦上再試試mod_python模式吧。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.