最近Solr-Jetty更新后,如何使Solr和CKAN在Ubuntu 18.04上运行?

时间:2019-05-01 17:17:36

标签: solr jetty ckan jetty-9

问题

进行一些更新后,尝试在Ubuntu 18.04上运行CKAN时,Jetty不再能找到Solr。全新安装的CKAN在开发或产品中无法正常工作。

这是使用3.6.2+dfsg-18~18.04包。

我可以告诉Jetty9正在运行,但是找不到solr。

任何帮助或指针都很好。

错误消息

WARNI [pysolr] Unable to extract error message from invalid XML: mismatched tag: line 10, column 2
ERROR [pysolr] Solr responded with an error (HTTP 404): [Reason: None]
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><title>Error 404 Not Found</title></head><body><h2>HTTP ERROR 404</h2><p>Problem accessing /solr/select/. Reason:<pre>    Not Found</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.15.v20190215</a><hr/></body></html>
ERROR [ckan.controllers.package] Dataset search error: ('SOLR returned an error running query: {\'sort\': \'score desc, metadata_modified desc\', \'fq\': [u\'\', u\'+site_id:"default"\', \'+state:active\', u\'+permission_labels:("public" OR "creator-aedc3c62-8492-48b7-9640-0c362bb2b537")\'], \'facet.mincount\': 1, \'rows\': 21, \'facet.field\': [u\'organization\', u\'groups\', u\'tags\', u\'res_format\', u\'license_id\'], \'facet.limit\': \'50\', \'facet\': \'true\', \'q\': \'*:*\', \'start\': 0, \'wt\': \'json\', \'fl\': \'id validated_data_dict\'} Error: SolrError(u\'Solr responded with an error (HTTP 404): [Reason: None]\\n<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"/><title>Error 404 Not Found</title></head><body><h2>HTTP ERROR 404</h2><p>Problem accessing /solr/select/. Reason:<pre>    Not Found</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.15.v20190215</a><hr/></body></html>\',)',)
INFO  [ckan.lib.base]  /dataset render time 0.079 seconds

复制步骤

  1. 创建新的Ubuntu Server 18.04 LTS设置
  2. 遵循default source install documentation
  3. 启动服务器paster serve /etc/ckan/default/development.ini
  4. 导航到/dataset页面

背景

通过遵循docs(包括comment from here),它在2月份一直没有问题。

我注意到,在最新的solr-jetty软件包中,默认情况下会添加符号链接,这意味着在CKAN文档中添加符号链接的步骤将失败,因为符号链接已经存在。我尝试删除并将其添加回去,以获取对文件的不同权限,但是没有运气。

此外,Solr设置下的第一步指示更新/etc/default/jetty文件中不再存在的行。我认为这些应该移至/etc/jetty9/start.ini,但我都做不到,也没有运气。

更新

  • 尝试将solr-jetty软件包降级,但结果相同(但是symlink步骤起作用,因为以前的软件包未包含该步骤)。
    • sudo apt install libsolr-java=3.6.2+dfsg-11 solr-common=3.6.2+dfsg-11 solr-jetty=3.6.2+dfsg-11
    • sudo apt-get install python-dev postgresql libpq-dev python-pip python-virtualenv git-core redis-server
  • 尝试将solr-jetty和openjdk-8-jdk与openjdk-11-jdk降级,但存在相同错误:
    • sudo apt install libsolr-java=3.6.2+dfsg-11 solr-common=3.6.2+dfsg-11 solr-jetty=3.6.2+dfsg-11
    • sudo apt install openjdk-8-jdk
  • 可能与https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919638相似的权限问题

当前解决方案

我没有将其添加为答案,因为它只是使用solr-jetty软件包放弃了,该软件包不能回答问题或如何使solr-jetty正常工作。但是,在使solr-jetty工作(请参阅下面的答案)之后,我决定切换到直接使用solr的此解决方案。

  • 按照CKAN文档步骤1-4
  • 安装solr 6.5.1而不是ckan的步骤5
    • solr> = 6.6.0的CKAN模式有错误。可以更改架构,但这甚至可以维护/解决问题。
    • 签出ckan wikiSolr以获得一些说明
    • 将solr模式复制到新的solr安装中
  • 继续执行步骤6

1 个答案:

答案 0 :(得分:1)

当前,solr-jetty软件包针对此设置而中断。它似乎是一个权限和文件问题。这是使其工作的一种方法。

感谢this PR

  1. 对我来说,最简单的方法是从头到尾地跟踪所有CKAN源代码安装文档,包括solr(但是我确实跳过了数据存储,因为我不想要它)
    • 此时,网站应该已加载,但您会收到solr错误
  2. 进行以下Solr更新:

    1. sudo mkdir /etc/systemd/system/jetty9.service.d
    2. sudo nano /etc/systemd/system/jetty9.service.d/solr.conf并添加

      [Service] ReadWritePaths=/var/lib/solr

    3. sudo nano /etc/solr/solr-jetty.xml并替换为以下配置。
  3. 重新启动jetty9 sudo service jetty9 restart,您可能必须systemctl daemon-reload

步骤3.3 solr-jetty.xml

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<!-- Context configuration file for the Solr web application in Jetty -->

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/solr</Set>
  <Set name="war">/usr/share/solr/web</Set>

  <!-- Set the solr.solr.home system property -->
  <Call name="setProperty" class="java.lang.System">
    <Arg type="String">solr.solr.home</Arg>
    <Arg type="String">/usr/share/solr</Arg>
  </Call>

  <!-- Enable symlinks -->
  <!-- Disabled due to being deprecated
  <Call name="addAliasCheck">
    <Arg>
      <New class="org.eclipse.jetty.server.handler.ContextHandler$ApproveSameSuffixAliases"/>
    </Arg>
  </Call>
  -->
</Configure>

有关其他信息,请参见this issue