![](/img/trans.png)
[英]how to have two separate django sites that both use solr/jetty (hosted on webfaction)
[英]Solr/Jetty confusion - how to get persistent service?
我在Ubuntu 12.04上,使用jetj(9_M4),solr(4.0.0)通過django-haystack(2.0beta)安裝在django 1.4.2站點中。
由於django-haystack在Ubuntu上運行solr 4.0並且運行起來很少,所以我不得不通過箍來實現這一目標。 但它有多難?
我主要的困惑在於Jetty正在做什么,以及Solr在做什么。
所以,我通過本教程安裝了Jetty ,對init文件進行了一些小調整, 正如我在該教程的注釋中所說的那樣 。 Jetty現在正在運行,即使重啟后我也能在瀏覽器中看到它。
大。
再次通過本教程安裝Solr並進行調整。 代替:
cp -R apache-solr-4.0.0/example/solr /opt
我用:
cp -R apache-solr-4.0.0/example/* /opt/solr/
因此將以下內容添加到/ etc / default / jetty:
JAVA_OPTIONS="-Dsolr.solr.home=/opt/solr/solr $JAVA_OPTIONS"
我不能完全記住我為什么這樣做,但當時有一個原因。 那時候我停止使用那個教程,因為我不太了解core的solr概念,而且我已經對這是多么令人煩惱而感到慌亂。
(對於上下文,當我在大約6個月前使用solr 3.5設置django-haystack 2.0時,它非常簡單,並且不需要單獨的碼頭安裝 - 所有這些都花了我大約兩個小時)
無論如何,我回到我的Django安裝,創建schema.xml,使stopwords-en.txt更改,將其復制到/ opt / solr / solr / collection1 / conf。
我編輯/opt/solr/solr/collection1/conf/solrconfig.xml以刪除對updateLog的引用,因為我為schema.xml添加版本字段所做的任何嘗試都因某種字符錯誤而失敗。 有關詳細信息,請參閱此處(lucene -solr-user郵件列表)和此處(django-haystack github) 。
最后,我進入/ opt / solr並運行它:
sudo java -jar start.jar
BA-DA-熱潮! 我得到了一些結果(當我去我的django網站並使用我設置的搜索時)。 太棒了。 這真的很棒。 現在我只需要啟動solr持久化。
我創建一個如下所示的/ etc / init / solr:
description "Solr Search Server"
# Make sure the file system and network devices have started before
# we begin the daemon
start on (filesystem and net-device-up IFACE!=lo)
# Stop the event daemon on system shutdown
stop on shutdown
# Respawn the process on unexpected termination
respawn
# The meat and potatoes
exec /usr/bin/java -jar /opt/solr/start.jar >> /var/log/solr.log 2>&1
我沒有重啟服務器 - 我可以看到solr正在運行,但我在django搜索中沒有得到任何結果。
我刪除了init文件並嘗試再次從cli運行 - 是的,很好。
所以,我的問題是:
我到底做錯了什么?
我怎樣讓solr在啟動時啟動並重新生成如果它意外死亡並通過我的Django / haystack接口產生結果
為什么我需要同時運行jetty和solr,以及/opt/jetty/webapps/solr.war與我的/ opt / solr的關系是什么? 我是否會造成沖突?
為什么solr 3.5這么容易,現在這么困難? 我誠實地問這個問題 - 我不想要solr開發人員的借口或解釋清單 - 我想知道我的理解如何在第一個實例(solr 3.5)中受到如此限制並讓它在兩小時內運行,為什么我現在需要全面深入了解jetty / solr架構和cli / shell腳本黑客才能讓它運行?
我不承諾得到你所有的東西,但(數字與問題不符):
1)Jetty是一個Web服務器。 Solr在該Web服務器中作為(Web)應用程序運行,但是:
2)Jetty還可以運行嵌入式Web服務器,這是Solr下載的工作方式。 當您執行java -jar start.jar時,它運行Jetty並預先配置了所有內容。 在這種情況下,您不需要獨立的Jetty。 我建議從嵌入式Jetty開始,然后切換到外部Jetty。 但是,如果只有您的本地應用程序與本地Solr服務器通信,您可以在不需要完整Jetty的情況下獲得相當遠的距離。
3)您不需要在示例目錄中找到的所有內容 - 它具有多個配置和支持文件,並且有點嵌套(這令人困惑)
4)開始你需要兩件事:運行solr; 你的配置目錄
5)讓Solr運行的最簡單方法是將整個distrubution目錄(我知道 - 大)放在某處(例如/ opt / solr)。
6)您的配置目錄非常簡單。 你只需要兩個文件即可開始,如果你對名字挑剔則有三個: - (無論在哪里,但要確保Solr可以在那里讀/寫) - solr.xml(如果你選擇集合名稱,否則你可以跳過它) - collection1 /(那是默認名稱,你可以在solr.xml中更改它) - collection1 / conf /(這是配置目錄,Solr會在你啟動后將數據目錄添加到同一級別)schema.xml - collection1 / conf / shema.xml - collection1 / conf / solrconfig.xml
7)然后,您需要在示例目錄中運行java -Dsolr.solr.home = start.jar。 這將使所有部分在端口上運行並運行:8983。 Solr 4有一個非常新的管理界面,所以請用你的瀏覽器訪問它,也許做教程等。
如果您需要有關最小功能架構/ solrconfig文件的幫助,請單獨詢問,但您不能只使用示例目錄中的那些,因為它具有fieldType分析器中的所有其他文件引用(盡管您可以只注釋這些行)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.