Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Solr/Jetty混乱-如何获得持久服务?_Django_Ubuntu_Solr_Jetty_Django Haystack - Fatal编程技术网

Django Solr/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现在正在运行,我可以在浏览器中看到它,即使在重新启动之后 太好了 再次进行调

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

因此,我的问题是:

  • 我到底做错了什么

  • 如果solr意外死亡并通过Django/haystack接口产生结果,我如何让它在启动时启动并重新启动

  • 为什么我需要jetty和solr同时运行,/opt/jetty/webapps/solr.war与my/opt/solr的关系是什么?我在制造冲突吗

  • 为什么solr 3.5这么简单,而现在这么困难?我诚实地问这个问题——我不想从solr开发人员那里得到一系列借口或解释——我想知道我的理解在一开始是如何受到限制的(solr 3.5)在两小时内让它运行,为什么我现在需要全面深入地了解jetty/solr体系结构和cli/shell脚本攻击才能让它运行


  • 我不保证会得到你所有的东西,但是(数字与问题不符):

    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脚本中…把上面的行放到一个脚本中在启动时运行就足够了,搜索现在可以工作了。