2

我在 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 运行 - 是的,很可爱。

所以,我的问题是:

  1. 我到底做错了什么?

  2. 如果 solr 意外死亡并通过我的 Django/haystack 界面产生结果,我如何让 solr 在启动时启动并重生

  3. 为什么我需要jetty和solr同时运行,/opt/jetty/webapps/solr.war和我的/opt/solr是什么关系?我在创造导致冲突吗?

  4. 为什么 solr 3.5 这么简单,现在这么难?我诚实地问这个问题 - 我不想要 solr 开发人员的借口或解释清单 - 我想知道我的理解如何在第一个实例(solr 3.5)中如此有限,并让它在两个小时内运行,为什么我现在需要对 jetty/solr 架构和 cli/shell 脚本黑客有全面更深入的了解才能使其运行?

4

1 回答 1

3

我不承诺得到你所有的东西,但是(数字与问题不匹配):

1) Jetty 是一个网络服务器。Solr 在该 Web 服务器内作为(Web)应用程序运行,但是:

2) Jetty 还可以运行嵌入式网络服务器,这就是 Solr 下载的工作方式。当您执行 java -jar start.jar 运行 Jetty 并预先配置所有内容时。在这种情况下,您不需要独立的 Jetty。我建议从嵌入式 Jetty 开始,然后切换到外部的。但是,如果只有您的本地应用程序与本地 Solr 服务器通信,您可能无需完整的 Jetty 就可以走得很远。

3)您不需要在示例目录中找到的所有东西 - 它有多个配置和支持文件,并且有点嵌套(这很混乱)

4)开始你需要两件事:运行solr;你的配置目录

5) 让 Solr 运行的最简单方法是将整个分发目录(我知道 - 很大)放在某个地方(例如 /opt/solr)。

6)你的配置目录很简单。您只需要两个文件即可开始,如果您对名称很挑剔,则需要三个文件:-(无论在哪里,但要确保 Solr 可以在那里读/写)-- solr.xml(如果您正在选择集合名称,否则您可以跳过它) -- collection1/ (这是默认名称,你可以在 solr.xml 中更改它) -- collection1/conf/ (这是配置目录,一旦你正确启动,Solr 将在同一级别添加数据目录) schema.xml --集合1/conf/shema.xml——集合1/conf/solrconfig.xml

7) 然后,您需要在示例目录中运行 java -Dsolr.solr.home= start.jar 。这将使所有部分在端口 :8983 上启动并运行。Solr 4 有一个非常新的管理界面,所以用你的浏览器访问它,也许做教程等等。

如果您需要有关最小功能架构/solrconfig 文件的帮助,请单独询问,但您不能只使用示例目录中的文件,因为它在 fieldType 分析器中包含所有其他文件引用(尽管您可以将这些行注释掉)。

于 2013-01-23T13:17:29.053 回答