看过我这篇文章的朋友一定知道,Python Web目前的两种开发方式:Python用来开发Web是怎么样的一个流程?看完你一定会恍然大悟
一种是WSGI,一种则是CGI。
WSGI的提出源于改良CGI的不安全性,但是CGI却比WSGI快很多,所以CGI尽管不提倡,如果需要速度并且安全性要求不高的web应用,可以考虑用CGI来完成。
下面在Apache上实现Python CGI的开发。
开始之前关闭iptables和SELinux:
iptables -F && setenforce 0
安装Apache并配置CGI
首先安装Apache:yum install httpd -y
安装完成之后重启服务,然后打开页面测试是否正常运行。
vim打开apache配置文件:vim /etc/httpd/conf/httpd.conf
查找ScriptAlias关键字设置CGI目录:按ESC进入命令模式,然后":/Script",如图
修改ScriptAlias /cgi-bin/ "/pycgi/"
这里我放根目录/pycgi,最后面的一个段为cgi目录
查找AddHandler,添加py后缀支持
把前面的注释去掉,然后添加.py
修改DocumentRoot 为 "/pycgi"修改默认Directory文件节点为修改Option Indexs FollowSymLinks为Options +ExecCGIAllowOverride None修改为AllowOverride NoneAll
添加index.py主页支持:添加index.py到DirectoryIndex尾端
Hello Python CGI
创建一个py文件作为主页:touch index.py
给其它用户可读可写权限:chmod 755 index.py(一定要可读可写,否则apache会报Internal Server Error)
vim index.py
写个简单的Hello Python CGI,简单到不能再简单了。
这只是print出html文件内容,注意的是Content-type:text/html是告诉浏览器文件类型为html文件,它是一个http头部信息。
我们还可以给它加一个cookie,例如就加上__file__变量。
print("Set-Cookie:%s" %(__file__))
看看结果如何
运行结果
cookie设置成功
值得注意的是:Nginx并不支持CGI,不过支持Perl FastCGI,所以如果是Nginx,还请乖乖的用WSGI
某些CSDN作者请勿复制粘贴,码字不易,请备注出处链接,谢谢理解。
斌哥说Python,只专注于Python技术!