2011-09-20 103 views
1

我的solr服務在沒有HTTP身份驗證的情況下工作,但是我的虛擬主機提供了它,我想利用它。Solr身份驗證(使用Django Haystack)

我已經擁有一個用戶名和密碼通過dotcloud來訪問我的Solr服務於一體的URL的形式:

的「http:// dotcloud:[email protected]/solr/ '

當我將瀏覽器指向此地址時,它工作得很好。

在我的settings.py文件我有以下行:

HAYSTACK_SOLR_URL = 'http://dotcloud:[email protected]/solr/' 

但是當我運行./manage.py build_solr_schema,我得到以下錯誤:

ValueError: invalid literal for int() with base 10: '[email protected]'

我不如果我刪除了URL,那麼構建模式就沒有任何問題,但是我無法構建索引(「錯誤401:UNAUTHORIZED」),這當然是有意義的。

我在乾草堆文檔中找不到任何有關認證的內容。這似乎是可以通過settings.py中額外幾行來解決的問題,例如:

HAYSTACK_SOLR_USER = 'dotcloud' 
    HAYSTACK_SOLR_PSSWD = 'XXXXXXXXXXXXXXXXXXX' 

但是,沒有骰子。 Haystack設置的完整列表在這些行中沒有任何顯示:http://docs.haystacksearch.org/dev/settings.html

任何想法??

謝謝。

回答

2

我在dotcloud上遇到了同樣的問題。這個錯誤實際上不在Haystack中 - 它在pysolr中。 Pysolr假設如果url中有冒號,它後面的所有內容都必須是端口號。

一個短期的解決將是使用下面的配置您dotcloud Solr的服務禁用驗證:

配置: solr_authentication:假

我只能這樣做在一個開發環境,如果你在那裏有不敏感的數據(因爲任何人都可以訪問該網址)。最終的解決方案是修補pysolr。

+0

如何「補丁pysolr」?我甚至不知道這意味着什麼: -/ –

+1

pysolr項目託管在這裏:https://github.com/toastdriven/pysolr/。您可以通過github提交功能/ bug請求,也可以下載源代碼,修改處理連接solr的行並替換部署中的版本。能夠使用用戶名和密碼處理solr url會非常有用,所以我會建議提交功能請求。 – Borys

+0

Thanks @Borys。我提出了一項功能要求,因爲我太瞭解新來源了!如果有任何事情發生,我會回到這裏。 –