需要用C 写个CGI,所以,我先用python简单的写了一点代码,来验证自己的想法。由于第一次写cgi程序,所以配置环境不是太熟,遇到了一些小问题,折腾了个把小时才搞明白,这里记录下让python支持cgi时,Apache配置文件的设置。
1.先创建cgi-bin文件夹
Ubuntu下的Apache默认WWW地址为/var/www,在此目录下创建cgi-bin文件夹,即/var/www/cgi-bin
2.使用python编写cgi程序,我们简单的写个hello world吧,hello.py
1 2 3 4 5 6 7 8 9 10 11
| #!/usr/bin/python print "Content-type:text/html\r\n\r\n" print '' print '' print 'Hello Word - First CGI Program' print '' print '' print 'Hello Word! This is my first CGI program' print '' print ''
|
然后将cgi-bin文件夹下的内容权限设置为755,即chmod 755 hello.py
3.访问hello.py,即127.0.0.1/cgi-bin/hello.py
这时候会出现 错误提示:You don’t have permission to access /cgi-bin/ on this server.
4.修改apache配置文件,使其能访问cgi-bin下文件
sudo vim /etc/apache2/sites-available/default ,更改为下面所示,然后sudo service apache2 restart重启apache
1 2 3 4 5 6 7 8
| #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ #<Directory "/usr/lib/cgi-bin"> <Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all Directory>
|
5.继续访问hello.py,会发现服务器把hello.py里面的内容显示出来,而没有解析
添加AddHandler,使apache支持python写的cgi程序,如下所示,注意,此步骤可以与步骤四一块完成。
1 2 3 4 5 6 7 8 9
| #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ #<Directory "/usr/lib/cgi-bin"> <Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all Directory> AddHandler cgi-script .py
|
然后重启apache服务器,访问hello.py,显示:
Hello Word! This is my first CGI program
这样apache就支持python写的cgi程序了。