Django Solr/Jetty混乱-如何获得持久服务?
我在Ubuntu 12.04上,使用jetty(9_M4)、solr(4.0.0)和django haystack(2.0beta),安装在django 1.4.2站点上 为了让它运行起来,我已经做了很多努力,因为关于在Ubuntu中使用django haystack启动和运行solr 4.0的文档很少。但这有多难呢 我的主要困惑是Jetty在做什么,Solr在做什么 因此,我对init文件进行了一个小的调整。Jetty现在正在运行,我可以在浏览器中看到它,即使在重新启动之后 太好了 再次进行调整。而不是:Django Solr/Jetty混乱-如何获得持久服务?,django,ubuntu,solr,jetty,django-haystack,Django,Ubuntu,Solr,Jetty,Django Haystack,我在Ubuntu 12.04上,使用jetty(9_M4)、solr(4.0.0)和django haystack(2.0beta),安装在django 1.4.2站点上 为了让它运行起来,我已经做了很多努力,因为关于在Ubuntu中使用django haystack启动和运行solr 4.0的文档很少。但这有多难呢 我的主要困惑是Jetty在做什么,Solr在做什么 因此,我对init文件进行了一个小的调整。Jetty现在正在运行,我可以在浏览器中看到它,即使在重新启动之后 太好了 再次进行调
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"
我记不清我为什么那样做,但当时是有原因的。我不再使用那个教程了,因为我不太理解核心的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时失败,并出现某种字符错误。有关此操作的更多信息,请参阅和
最后,我将cd放入/opt/solr并运行它:
sudo java -jar start.jar
砰!砰!我得到了一些结果(当我进入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运行-是的,很好
因此,我的问题是:
我不保证会得到你所有的东西,但是(数字与问题不符): 1) Jetty是一个web服务器。Solr在该web服务器内作为(web)应用程序运行,但是: 2) Jetty还可以运行嵌入式Web服务器,这就是Solr下载的工作方式。当您使用java-jar start.jar运行Jetty时,所有内容都经过了预配置。在这种情况下,您不需要独立的码头。我建议从嵌入式码头开始,然后切换到外部码头。然而,如果只有您的本地应用程序与本地Solr服务器对话,您可能不需要完全的Jetty就可以走得很远 3) 您不需要在示例目录中找到所有内容-它有多个混淆和支持文件,并且有点嵌套(这很混乱) 4) 首先,你需要做两件事:运行solr;您的配置目录 5) 让Solr运行的最简单方法是将整个分发目录(我知道-large)放在某个地方(例如/opt/Solr) 6) 您的配置目录非常简单。您只需启动两个文件,如果您对名称很挑剔,则需要三个文件: -(无论在哪里,但确保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上启动并运行。Solr4有一个非常新的管理界面,所以可以用浏览器访问它,或者做教程,等等
如果您需要有关最小功能模式/solrconfig文件的帮助,请单独询问,但您不能仅使用示例目录中的文件,因为它在fieldType Analyzer中有所有其他文件引用(尽管您可以将这些行注释掉)。谢谢Alexandre-是的,我单独拥有“不需要独立的jetty”凌晨3点盯着天花板时的脑波。已将其移除,我正在按照建议运行solr。仍然有一个问题,它实际上并没有进行搜索-尽管我确信这只是一个阅读日志的问题。好的,因此,我现在可以从cli使用它了:
sudo/usr/bin/java-Xms128m-Xmx256m-Dsolr.solr.home=/opt/solr/solr-Djetty.home=/opt/solr-jar/opt/solr/start.jar>~/solr.log
,所以现在我将把它放到一个/etc/init脚本中…把上面的行放到一个脚本中在启动时运行就足够了,搜索现在可以工作了。