【问题标题】:Rails with Solr + sunspot: java.lang.NullPointerException带有 Solr + 太阳黑子的 Rails:java.lang.NullPointerException
【发布时间】:2018-06-12 00:29:09
【问题描述】:

我有一个 Rails 应用程序 (4.1.1) 在 Apache + Phusion 下的 Ubuntu 实例中运行 SOLR(通过 sunspot)

该应用程序过去运行良好,但上周我升级了 ubuntu(现在它在 Ubuntu 16.04.3 LTS 上),然后 SOLR 停止工作。 我用命令启动服务器

RAILS_ENV=production bundle exec rake sunspot:solr:start

并且控制台输出成功启动 Solr ...

Successfully started Solr ...

但是当我尝试访问它时(例如:重新索引模型,甚至通过浏览器,通过http://myip:8983/solr)它输出:

HTTP ERROR 500 访问 /solr/ 时出现问题。原因:

Server Error Caused by: java.lang.NullPointerException    at org.apache.solr.servlet.SolrDispatchFilter.authenticateRequest(SolrDispatchFilter.java:241)

在 org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:186) 在 org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:179) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 在 org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) 在 org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 在 org.eclipse.jetty.server.Server.handle(Server.java:499) 在 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) 在 org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) 在 org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) 在 java.lang.Thread.run(Thread.java:748)

任何人对我如何开始解决这个问题有任何想法吗?我在 rails 应用程序日志 (/log/production.log) 或 Apache 的 error.log 文件中找不到任何相关内容。

【问题讨论】:

  • @FabrizioBertoglio 我以前没有看到这个帖子。在您发布后,我现在快速阅读,也许有一些关系(用户访问)。问题是我没有通过“service solr start”运行 solr 实例,而是使用 rails 中的 rake 任务。我会尝试按照这条路径找到一些东西,谢谢。

标签: ruby-on-rails ruby-on-rails-4 solr sunspot


【解决方案1】:

也许您在 Ubuntu 16 中缺少一些 packages?

documentation wiki 的这个步骤怎么样

安装 Java(如果尚未安装)

因为 tomcat 和 solr 是基于 Java 的软件,所以我们需要 Java 环境(正如 Solr wiki 中建议的那样:首选完整的 JDK 而不是简单的 JRE。)

$ sudo apt-get install openjdk-6-jdk

注意:在 Amazon EC2 实例上工作时,我不得不暂时将我的“微型”实例升级到“中”实例,因为在 Java 安装过程中需要特殊的内存。

安装 Tomcat 和 Solr(你不能避免这个)

对于 ubuntu(用 10.4 LTS 测试),有一个独特的包要安装,它将负责安装 Tomcat 和 Solr,以及将 Solr 集成到 Tomcat 中。

$ sudo apt-get install solr-tomcat

然后让我们启动服务器

$ sudo service tomcat6 start

好的,完成了! Solr 服务器响应 http://localhost:8080/solr 配置和索引将存储在:/usr/share/solr/ 为了将它与 Sunspot 一起使用,您必须将 conf/schema.xml 和 conf/solrconfig.xml 从您的应用程序复制到 /usr/share/solr/ 或 /usr/share/solr/conf (Ubuntu 12.04)。 但是,确实,您应该进一步阅读本教程以了解为什么不应该直接使用 Solr。

目前,您的数据存储在系统的文件夹中,并非专门用于特定用户或应用程序。 阅读公共服务器应该使用具有约束权限的专用用户帐户是很常见的。 (网上到处都是)

如果您像我一样对它不满意,请按照以下步骤自定义整个内容。我不会向您解释如何以其他用户身份启动 Tomcat(谷歌它),而是如何选择您的 Solr 主目录

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多