gpt4 book ai didi

django - Solr/Jetty 困惑 - 如何获得持久服务?

转载 作者:行者123 更新时间:2023-12-04 05:14:24 24 4
gpt4 key购买 nike

我在 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 时,它非常简单,不需要单独安装 jetty - 我花了大约两个小时)

无论如何,我回到我的 Django 安装,创建 schema.xml,进行 stopwords-en.txt 更改,将其复制到/opt/solr/solr/collection1/conf。

我编辑/opt/solr/solr/collection1/conf/solrconfig.xml 以删除对 updateLog 的引用,因为我向 schema.xml 添加版本字段的任何尝试都因某种字符错误而失败。见 here (lucene -solr-user mailing list)here (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 脚本黑客有更全面更深入的了解才能使其运行?
  • 最佳答案

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

    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启动后会在同级添加数据目录)
    架构.xml
    --collection1/conf/shema.xml
    --collection1/conf/solrconfig.xml

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

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

    关于django - Solr/Jetty 困惑 - 如何获得持久服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471289/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com