我在 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 在做什么。
因此,我通过本教程安装了 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"
我不记得我为什么这样做了,但当时是有原因的。那时我停止使用该教程,因为我不太了解核心的 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)了解更多信息。
最后,我 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 运行 - 是的,很可爱。
所以,我的问题是:
我到底做错了什么?
如果 solr 意外死亡并通过我的 Django/haystack 界面产生结果,我如何让 solr 在启动时启动并重生
为什么我需要jetty和solr同时运行,/opt/jetty/webapps/solr.war和我的/opt/solr是什么关系?我在创造导致冲突吗?
为什么 solr 3.5 这么简单,现在这么难?我诚实地问这个问题 - 我不想要 solr 开发人员的借口或解释清单 - 我想知道我的理解如何在第一个实例(solr 3.5)中如此有限,并让它在两个小时内运行,为什么我现在需要对 jetty/solr 架构和 cli/shell 脚本黑客有全面更深入的了解才能使其运行?