在最近的 solr-jetty 更新后,如何让 Solr 和 CKAN 在 Ubuntu 18.04 上达到 运行?
How to get Solr and CKAN to run on Ubuntu 18.04 after recent solr-jetty updates?
问题
进行一些更新后,在 Ubuntu 18.04 上尝试 运行 CKAN 时,Jetty 无法再找到 Solr。全新安装的 CKAN 在开发或生产中不起作用。
这是使用 3.6.2+dfsg-18~18.04
包。
我可以告诉 Jetty9 是 运行ning 但它找不到 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
重现步骤
- 创建新的 Ubuntu 服务器 18.04 LTS 设置
- 关注default source install documentation
- 启动服务器
paster serve /etc/ckan/default/development.ini
- 导航至
/dataset
页面
背景
按照 docs (which includes the comment from here).
,这在 2 月工作正常,没有问题
我注意到在最新的 solr-jetty
包中它默认添加了符号链接,这意味着在 CKAN 文档中添加它的步骤将失败,因为符号链接已经存在。我试过删除并重新添加它以获得对文件的不同权限,但没有成功。
此外,Solr 设置下的第一步指示更新 /etc/default/jetty
文件中不再存在的行。我认为这些应该移至 /etc/jetty9/start.ini
,但我都没有运气。
更新
- 尝试降级
solr-jetty
包,但结果相同(但是符号链接步骤有效,因为它不包含在以前的包中)。
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 vs 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 的解决方案。
目前 solr-jetty
此设置的软件包中断。这似乎是权限和文件问题。这是让它工作的一种方法。
感谢 this PR!
- 对我来说最简单的方法是从头到尾遵循所有 CKAN 源安装文档,包括 solr(但我确实跳过了数据存储,因为我不想要它)
- 此时网站应该加载,但您会收到 solr 错误
进行以下 solr 更新:
sudo mkdir /etc/systemd/system/jetty9.service.d
sudo nano /etc/systemd/system/jetty9.service.d/solr.conf
并添加
[Service]
ReadWritePaths=/var/lib/solr
sudo nano /etc/solr/solr-jetty.xml
并替换为以下配置。
- 重新启动 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。
问题
进行一些更新后,在 Ubuntu 18.04 上尝试 运行 CKAN 时,Jetty 无法再找到 Solr。全新安装的 CKAN 在开发或生产中不起作用。
这是使用 3.6.2+dfsg-18~18.04
包。
我可以告诉 Jetty9 是 运行ning 但它找不到 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
重现步骤
- 创建新的 Ubuntu 服务器 18.04 LTS 设置
- 关注default source install documentation
- 启动服务器
paster serve /etc/ckan/default/development.ini
- 导航至
/dataset
页面
背景
按照 docs (which includes the comment from here).
,这在 2 月工作正常,没有问题我注意到在最新的 solr-jetty
包中它默认添加了符号链接,这意味着在 CKAN 文档中添加它的步骤将失败,因为符号链接已经存在。我试过删除并重新添加它以获得对文件的不同权限,但没有成功。
此外,Solr 设置下的第一步指示更新 /etc/default/jetty
文件中不再存在的行。我认为这些应该移至 /etc/jetty9/start.ini
,但我都没有运气。
更新
- 尝试降级
solr-jetty
包,但结果相同(但是符号链接步骤有效,因为它不包含在以前的包中)。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 vs 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 的解决方案。
目前 solr-jetty
此设置的软件包中断。这似乎是权限和文件问题。这是让它工作的一种方法。
感谢 this PR!
- 对我来说最简单的方法是从头到尾遵循所有 CKAN 源安装文档,包括 solr(但我确实跳过了数据存储,因为我不想要它)
- 此时网站应该加载,但您会收到 solr 错误
进行以下 solr 更新:
sudo mkdir /etc/systemd/system/jetty9.service.d
sudo nano /etc/systemd/system/jetty9.service.d/solr.conf
并添加[Service] ReadWritePaths=/var/lib/solr
sudo nano /etc/solr/solr-jetty.xml
并替换为以下配置。
- 重新启动 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。