2012-10-29 49 views
0

我在Linux上安装Reviewboard,我抄在安装包中提供的配置以httpd.conf中的Apache2无法运行WSGI脚本

<VirtualHost *:80> 
    ServerName localhost 
    DocumentRoot "/usr/www/reviewboard/htdocs" 

    # Error handlers 
    ErrorDocument 500 /errordocs/500.html 

    WSGIPassAuthorization On 
    WSGIScriptAlias "/reviewboard" "/usr/www/reviewboard/htdocs/reviewboard.wsgi/reviewboard" 

    <Directory "/usr/www/reviewboard/htdocs"> 
      AllowOverride All 
      Options -Indexes FollowSymLinks 
      Allow from all 
    </Directory> 

    # Alias static media requests to filesystem 
    Alias /reviewboard/media "/usr/www/reviewboard/htdocs/media" 
    Alias /reviewboard/errordocs "/usr/www/reviewboard/htdocs/errordocs" 
    Alias /reviewboard/favicon.ico "/usr/www/reviewboard/htdocs/media/rbcommons/images/favicon.png" 
    </VirtualHost> 

然而,当我访问的“http://网站/ reviewboard /htdocs/reviewboard.wsgi”,它只是给我以纯文本格式的文件,而不是运行脚本

我已经检查了mod_wsgi的是通过在运行的Apache2‘apache2ctl -t -D DUMP_MODULES’

难道我错过任何其他配置?

回答

1

您应该使用的网址:

http://SITE/reviewboard 

和WSGIScriptAlias指令应该是:

WSGIScriptAlias "/reviewboard" "/usr/www/reviewboard/htdocs/reviewboard.wsgi" 

请注意,虽然,这是不好的做法的DocumentRoot下是把整个的Django网站。您看到WSGI脚本文件的源代码强调了它为什么不好。也就是说,你的Apache配置有问题,你可以公开所有的源代码供人们下载。尤其是如果settings.py在那里,它包含数据库密码。

现在,解决这些问题,然后更新问题,然后解答下一个问题,因为我不指望完全解决问题,因为出现这些错误时,您应该得到的问题与您描述的问题不同,所以怀疑你的配置甚至没有被使用。

+0

非常感谢。我现在得到了它的工作。我认为'WSGIScriptAlias“/ reviewboard”“/usr/www/reviewboard/htdocs/reviewboard.wsgi/reviewboard”'很好。 – Alvin

+0

顺便说一句,我想你提到了一个好点。你的意思是我应该把目录htdocs放在DocumentRoot下面?并保留其他目录,如日志,conf,数据和日志在另一个地方像/ etc/revieboard?但用户仍然可以通过这种方式查看reviewboard.wsgi。我如何防止这种情况? – Alvin

+0

拥有WSGIScriptAlias并不一定好。在目标WSGI脚本的末尾重复安装点具有Apache的特殊含义。如此特殊而神奇,它甚至没有记录在mod_wsgi网站上,只是在需要的时候才向人们解释。如果它有效,那么它只能表示所有的urls.py网址都以“reviewboard”为前缀,否则无法看到它是如何工作的。 –

0

您还需要帮助吗?我与那个“帽子”战斗超过3天终于它工作!