自己学到Python CGI编程,在进行CGI编程前,确保已经支持CGI及已经配置了CGI的处理程序。
需要在Ubuntu下安装Apache
在Apache的官网下载,现在最新版本为httpd-2.4.26,然后直接点击httpd-2.4.26.tar.gz下载
地址为http://httpd.apache.org/download.cgi
下载完成后,文件在下载目录下
直接解压文件,点击右,提取到此处
提取完成后,会有一个对应的httpd-2.4.26目录,直接右键—在终端打开
源码的安装一般分为3个步骤:配置(configure)、编译(make)、安装(make install)
配置:sudo ./configure
如果出现配置错误:APR not found
这是因为缺少APR依赖包,解决办法请看《Apache安装错误 APR not found解决方法》,这里就不再做说明了。
配置成功
编译成功
安装:sudo make install
安装成功之后,启动Apache,注意要切换到root用户,否则会提示没有权限
启动Apache:/usr/local/apache2/bin/apachectl start
停止Apache:/usr/local/apache2/bin/apachectl stop
重启Apache:/usr/local/apache2/bin/apachectl restart
注意Apache安装的默认位置为/usr/local/apache2
出现错误,意思是缺少libpcre.so.0文件
百度了一下,需要下载和安装
地址为:https://pclinuxos.pkgs.org/rolling/pclinuxos-x86_64/ia32-libs-2016-1pclos2016.x86_64.rpm.html
找到对应linux版本64的,按照下面的步骤进行下载安装
第一步下载:rpm http://ftp.nluug.nl/pub/os/Linux/distr/pclinuxos/pclinuxos/apt/ pclinuxos/64bit x86_64
如果提示没有安装rpm,输入:apt install rpm 安装完成后,再下载即可
第二步更新:apt-get update
更新完成后,第三步安装
输入:apt-get install ia32-libs
安装完成后,再次启动Apache
这里会提示没有配置“ServerName”服务器名称,我们先忽略掉
打开浏览器,在输入http://localhost 查看
完成之后开始CGI的 配置
对httpd.conf配置文件进行修改,路径为/usr/local/apache2/conf/httpd.conf
使用nano编辑httpd.conf
输入:nano /usr/local/apache2/conf/httpd.conf
启用CGI模块,在140行左右
直接去掉前面的#注释即可
开启rewrite模式,在149行左右
直接去掉前面的#注释即可
设置服务器名称,在191行左右
直接添加:ServerName 127.0.0.1
设置CGI路径的访问权限,在199行左右
原本的内容为
AllowOverride none
Require all denied
AllowOverride All
Options +ExecCGI
Order allow,deny
Allow from all
设置CGI脚本文件路径,在339行左右
后面的路径修改为“/home/cbc/var/www/cgi-bin/”,跟上一步一样
这里的意思是将"/home/cbc/var/www/cgi-bin/"映射为/cgi-bin/,当通过浏览器访问/cgi-bin/目录时,实际上就是访问"/home/cbc/var/www/cgi-bin/"目录
AddHandler中添加.py后缀,在403行左右
这样我们就可以访问.py结尾的Python脚本文件
先去掉前面的#注释,再在后面加上.py就行了,注意用空格隔开
配置完成,保存退出即可
重启Apache:/usr/local/apache2/bin/apachectl restart
注意每次修改httpd.conf后,都要重启Apache才有效
创建CGI脚本文件
在home目录下创建var/www/cgi-bin目录,再创建一个.py文件
test.py代码为:
设置文件权限为755
输入:chmod 755 test.py
注意,如果没有加权限的话,访问会报500错误
浏览器中输入localhost/cgi-bin/test.py或127.0.0.1/cgi-bin/test.py就可以访问
PS:
如果出现500或其他错误,具体可查看日志
命令为:cat /usr/local/apache2/logs/error_log
PPS:
nano 显示行号
编辑nanorc: nano /etc/nanorc
找到 #set const
把前面的#注释去掉
如果没有找到,就找一行添加set const即可