Python CGI浅尝

前言

Pyhton CGI是Common Gateway Interface,即通用网关接口。好吧,其实并不知道他的使用场景,我是在Python群里看见一个童鞋再问相关的问题,感觉挺好玩于是自己也尝试一下,顺便解决那个童鞋的问题。欢迎使用过的小伙伴告诉我一下使用场景。本实例基于ubuntu 16.04 ,python2.7,apache2.

CGI coding

1.我们写个下载的功能,

vim download.py
  #!/usr/bin/python
  # -*- coding: UTF-8 -*-
  
  import cgi
  
  # HTTP 头部
  print "Content-Disposition: attachment; filename=\"foo.txt\"";

  # 打开文件
 fo = open("foo.txt", "rb")
 
 str = fo.read();
 print str
 
 # 关闭文件
 fo.close()

2.同级目录新建一个foo.txt,在里面输入任意内容。
3.python解释器直接运行,能够打印出txt内容即可。

搭建apache2 cgi运行环境

1.安装apache2

sudo apt install -y apache2

2.开启cgi

cd /etc/apache2/sites-enabled
sudo vim 000-default.conf
把Include conf-available/serve-cgi-bin.conf取消注释

cd ../mods-enabled
#添加cgi模块
sudo vim cgi.load
写入 LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so 

cd ../conf-enabled
sudo vim serve-cgi-bin.conf
修改:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/ 
添加:
AddHandler cgi-script .cgi .pl .py .sh
见下图: 
Python CGI浅尝_第1张图片
cgi.jpg

3.创建cgi目录

cd /var/www/
sudo mkdir cgi-bin
cd cgi-bin
把之前的py和txt 拷贝进去
#赋予权限
sudo chmod +x *

4.重启apache2

sudo service apache2 restart

打开浏览器测试

访问地址:http://localhost/cgi-bin/download.py,自动下载了txt文件。

结语

猛一看浏览器直接运行py文件,有木有很高大上。感兴趣的可以尝试一下。python的web框架异彩纷呈CGI的应用场景在哪里?

你可能感兴趣的:(Python CGI浅尝)