麻烦在apache下运行python脚本为cgi(ubuntu 12)

bzd*_*boo 13 python apache ubuntu cgi

披露:我搜索了很多,我不认为我的问题(对于我的配置)在这里得到了解答.例如, 运行python脚本,因为cgi apache服务器 没有回答它.

所以:我有一个最简单的脚本:

#!/usr/bin/env python

print "Content-type: text/html"
print ""

print "<h1>Hello from Python!</h1>"
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中运行它时,它实际上显示自己而不是Python的预期 Hello!

我做了以下操作让它运行:

a)每个人都可以执行; 它完美地运行在一个外壳中.

b)它位于具有以下配置的虚拟目录中(在/ etc/apache2/sites-available/my_cgi_dir中):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/
    <Directory />
           Options FollowSymLinks
           AllowOverride None
    </Directory>
   <Directory /var/www/my_cgi_dir/>
           Options Indexes +ExecCGI FollowSymLinks MultiViews
           AddHandler cgi-script .cgi .py
           AllowOverride None
          Order allow,deny
          allow from all
   </Directory>

   ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
   <Directory "/usr/lib/cgi-bin">
           AllowOverride None
           Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
           Order allow,deny
           Allow from all
   </Directory>

   ErrorLog ${APACHE_LOG_DIR}/error.log
   LogLevel warn
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

如你所见

       Options Indexes +ExecCGI FollowSymLinks MultiViews
Run Code Online (Sandbox Code Playgroud)

       AddHandler cgi-script .cgi .py
Run Code Online (Sandbox Code Playgroud)

c)我通过运行sudo apt-get install libapache2-mod-python确保apache具有python支持

d)是的我确实重启了apache.

不过,我只是看到脚本的源而不是"Hello Python".

我错过了什么?

请帮忙.


PS:如果这可能会有所帮助,这就是我正在运行的:

Linux ip-172-31-37-178 3.2.0-40-virtual#64-Ubuntu SMP Mon Mar 25 21:42:18 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

服务器版本:Apache/2.2.22(Ubuntu)

Python 2.7.3

fly*_*ng_ 2

尝试这个

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
Run Code Online (Sandbox Code Playgroud)

CGI脚本

import cgi
import cgitb; cgitb.enable()
print "Content-type: text/html\n\n"
print "<h1>Hello from Python!</h1>"
Run Code Online (Sandbox Code Playgroud)

为什么不这样配置呢?这里。

ScriptAlias /cgi-bin/ /var/www/my_cgi_dir/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)