我已经看了很多类似的问题,但似乎没有为我工作的职位
我有以下/etc/apache2/httpd.conf文件:
<Directory /var/www/index.py> Options +ExecCGI </Directory> <Directory /var/www> Options +ExecCGI AllowOverride None Order allow,deny Allow from all AddHandler cgi-script .py DirectoryIndex index.py </Directory> <Directory /var/www/tiles> AddHandler mod_python .py PythonHandler TileStache::modpythonHandler PythonOption config /home/TileStache/tilestache.cfg </Directory>
当我尝试访问主页为:只是主机名: http : //exampleHost.com我在错误日志上得到以下错误:
Options ExecCGI is off in this directory: /var/www/index.py
但是当我去http://exampleHost.com/index.py它工作正常。
所以我猜是重写/ var / www目录? 我没有/ var / www目录中的.htaccess文件。
我不得不修改follwing文件:
/etc/apache2/sites-enabled/000-default
更改了/ var / www目录以包含+ ExecCGI和AddHandler,如下所示:
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews +ExecCGI AllowOverride None Order allow,deny allow from all AddHandler cgi-script .py </Directory>
启用cgi模块后
sudo a2enmod cgi
你可以去修改这个文件
/etc/apache2/sites-enabled/000-default
并find这个部分
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>
这告诉Apache,当你遇到的URL主机例如
localhost/cgi-bin/
它应该检查你所请求的文件/ usr / lib / cgi-bin目录,如果它发现它执行它。 现在你可以通过添加目录指令中的目录来使其从任何目录执行,例如,如果你希望它是/ var / www(cgi文件所在的位置),你可以
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/var/www/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory>
与那个请求
localhost/script.cgi
应该完美地工作。 另外确保你有
libapache2-mod-perl
安装包。