2012-10-29 108 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天終於它工作!