我在Ubuntu 12.04上,在django 1.4.2网站上安装了jetty(9_M4),solr(4.0.0)到django-haystack(2.0beta)。
我必须通过箍跳一些才能启动并运行,因为很少有文档可以使用django-haystack在Ubuntu中运行solr 4.0并运行。但它有多难?
我的主要困惑在于Jetty正在做什么,以及Solr在做什么。
因此,我installed Jetty via this tutorial对初始文件as I note in the comment on that tutorial进行了小幅调整。 Jetty现在正在运行,我可以在浏览器中看到它,即使重启后也是如此。
大。
通过调整再次移至installing Solr via this tutorial。而不是:
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的引用,因为我将 version 字段添加到schema.xml的任何尝试都失败了字符错误。有关详情,请参阅here (lucene -solr-user mailing list)和here (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界面产生结果,如何让solr在启动时重启并重新生成
为什么我需要同时运行jetty和solr,以及/opt/jetty/webapps/solr.war与我的/ opt / solr的关系是什么?我创造了导致冲突吗?
为什么solr 3.5这么容易,现在这么难?我诚实地问这个问题 - 我不想要一份来自solr开发人员的借口或解释清单 - 我想知道我的理解如何在第一次实例(solr 3.5)中受到如此限制并让它在两小时内运行以及为什么我现在需要全面深入了解jetty / solr架构和cli / shell脚本黑客才能让它运行起来?
答案 0 :(得分:3)
我不承诺得到你所有的东西,但(数字与问题不符):
1)Jetty是一个Web服务器。 Solr在该Web服务器中作为(Web)应用程序运行,但是:
2)Jetty还可以运行嵌入式网络服务器,这就是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分析器中的所有其他文件引用(尽管您可以将这些行注释掉)