編寫我的第一個CGI代碼——python學習


在編程學習網站學習Python語言,學習到cgi編程章節遇到了一些小問題,課程介紹的為linux環境的Apache配置方法,具體如下:

【linux環境配置方法:】

在進行CGI編程前,確保您的Web服務器支持CGI及已經配置了CGI的處理程序。

Apache 支持CGI 配置:

設置好CGI目錄:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

所有的HTTP服務器執行CGI程序都保存在一個預先配置的目錄。這個目錄被稱為CGI目錄,並按照慣例,它被命名為/var/www/cgi-bin目錄。

CGI文件的擴展名為.cgi,python也可以使用.py擴展名。

默認情況下,Linux服務器配置運行的cgi-bin目錄中為/var/www。

如果你想指定其他運行CGI腳本的目錄,可以修改httpd.conf配置文件,如下所示:

<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all </Directory>

在 AddHandler 中添加 .py 后綴,這樣我們就可以訪問 .py 結尾的 python 腳本文件:

AddHandler cgi-script .cgi .pl .py

其實稍微有一些編程基礎的小伙伴,應該很快能根據這一段得知在Windows環境的配置方法,只有路徑有一些些區別,具體如下:
[Windows環境配置方法:]

1、將:ScriptAlias /cgi-bin/ "
/var/www/cgi-bin" 設置為實際的目錄如:ScriptAlias /cgi-bin/ "D:/Apache/cgi-bin/"
2、將:<Directory "/var/www/cgi-bin">  
    AllowOverride None  
    Options None  
    Order allow,deny  
    Allow from all  
</Directory>
中的:<Directory "
/var/www/cgi-bin"> 設置為實際目錄,如:<Directory "D:/Apache/cgi-bin/">
3、找到:AddHandler cgi-script .cgi之后,去掉前面的#號,並且在后面添加.py,如:AddHandler cgi-script .cgi .py

經過以上配置之后,將編寫的python腳本文件,放到Apache目錄下的cgi-bin中

在python文件中第一行配置python.exe路徑:#!C:\Python3.5.2\python.exe

還有最重要的一點,在所有輸出之前,先輸出一個頭
print("Content-type:text/html\n")
最終的代碼如:
#!C:\Python3.5.2\python.exe
# -*- coding: UTF-8 -*-
print('Content-type:text/html\n\n')
print('<html>')
print ('<head>')
print ('<meta charset="utf-8">')
print('<title>Hello Word - 我的第一個 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word! 我是來自菜鳥教程的第一CGI程序</h2>')
print ('</body>')
print ('</html>')
以上算是完成了這個程序的基本配置了,但是配置完成之后,可以會發現出現500錯誤,Apache的錯誤日志如:
couldn't spawn child process: C:/Apache/cgi-bin/CGI_1.py
出現這個錯誤之后,查找網上各種答案,基本上和以上的操作都很類似,查到有些文章中會寫應該修改AllowOverride None、Options None為
AllowOverride all、Options all,但是都不能解決,最終才使用過程中,發現當前使用的Windows 10系統,發現,每次修改寫入文件,都需要管理員權限,
於是,將Apache裝載D盤下面,重新試了以上的步驟,就能訪問了。訪問的結果可能會亂碼,但是,文件開頭和HTML都已經設置了編碼,於是改一下瀏覽的編碼,
就能看到不亂碼的CGI內容了。

 文章參考:http://www.runoob.com/python/python-cgi.html;http://www.zh30.com/windows-apache-cgi-python.html

 
        

 

 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM