【问题标题】:How to run Solr 4 in Tomcat locally?如何在本地运行 Tomcat 中的 Solr 4?
【发布时间】:2013-06-10 03:11:27
【问题描述】:

我一直试图在我的家用 PC(在 Tomcat 7 中)上设置 Solr 4.3,但它没有运行。我已经设置了 Tomcat 并部署了 solr.war 文件,该文件解压并显示在 Tomcat 的 Tomcat Web 应用程序管理器屏幕中,但它没有运行并且单击开始按钮没有做任何事情(因为它应该已经在第一名)。

这是我在 Tomcat 中的 solr.xml 上下文文件,它还提供了 solr.war 文件的路径以及我的 solr 核心所在的位置(这是默认的 Collection1):

<Context path="/solr" docBase="C:/LocalApps/Tomcat/apache-tomcat-7.0.40/webapps/solr.war" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="C:/LocalApps/Solr/solr-4.3.0/example/solr/" override="true"/>
</Context>

这是tomcat中的错误日志:

INFO: Starting Servlet Engine: Apache Tomcat/7.0.40
Jun 09, 2013 11:04:07 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor C:\LocalApps\Tomcat\apache-tomcat-7.0.40\conf\Catalina\localhost\solr.xml
Jun 09, 2013 11:04:07 PM org.apache.catalina.startup.HostConfig deployDescriptor
WARNING: A docBase C:\LocalApps\Tomcat\apache-tomcat-7.0.40\webapps\solr.war inside the host appBase has been specified, and will be ignored
Jun 09, 2013 11:04:07 PM org.apache.catalina.startup.SetContextPropertiesRule begin
WARNING: [SetContextPropertiesRule]{Context} Setting property 'debug' to '0' did not find a matching property.
Jun 09, 2013 11:04:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
Jun 09, 2013 11:04:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/solr] startup failed due to previous errors

【问题讨论】:

标签: windows tomcat solr


【解决方案1】:

您需要按照here 的说明安装用于记录的 jar。

只需将所有提到的文件复制到您的 tomcat/lib 目录中。并重启 Tomcat。

  1. 将 jar 从 solr/example/lib/ext 复制到容器的主 lib 目录中。这些罐子将设置SLF4Jlog4j。 正是这个 lib 目录是高度可变的。对于 Debian 或 使用操作系统供应商提供的 Tomcat 包的 Ubuntu 服务器, 这可能是/usr/share/tomcat6/lib/usr/share/tomcat7/lib
  2. 将日志配置从solr/example/resources/log4j.properties 复制到 classpath。通常您可以使用与 jar 文件相同的位置 多于。编辑首选日志目标的配置文件。
  3. (可选)如果您没有将 log4j.properties 放在类路径中,请设置 java option -Dlog4j.configuration=file:///path/to/log4j.properties

【讨论】:

  • 添加这些 JAR/log.properties 文件显示 Solr 正在 Tomcat 中运行,但我收到 HTTP 状态 503 错误。这是日志文件:警告:主机 appBase 内的 docBase c:\LocalApps\Tomcat\apache-tomcat-7.0.40\webapps\solr.war 已指定,将被忽略 2013 年 6 月 10 日 8:56: 39 PM org.apache.catalina.startup.SetContextPropertiesRule 开始警告:[SetContextPropertiesRule]{Context} 将属性“调试”设置为“0”未找到匹配的属性。 2013 年 6 月 10 日晚上 8:56:40 org.apache.catalina.startup.HostConfig deployDirectory
  • 在我的故障排除过程中,我遗漏了一个关闭的 xml 标记,这是我遇到的最后一个问题的原因。添加日志记录 jar 文件是我原来问题的解决方案。
  • 不知道为什么这不在 apache.org 的 Solr Tomcat wiki 页面中。我完全按照那里的说明进行操作,但在我按照建议复制文件之前,solr 不可用。
【解决方案2】:
  1. 下载最新的 solr-4.x.zip 文件。
  2. 解压 zip 文件,例如 C:\solr setup。
  3. 应安装 Apache Tomcat(版本大于 5)和 Java 6 或更高版本。将 solr-4.x.war 文件从“C:\solr setup\solr-4.3.0\dist”复制到“Apache Tomcat”webapps 文件夹,很可能位于 C:\Program Files\Apache...\Tomcat... \webapps\ 并将复制的战争文件重命名为一些有意义的名称,如 solrTest.Start Tomcat。如果已经运行,则重新启动 Tomcat。将创建与 war 文件 (solrTest) 同名的新文件夹。
  4. 停止 Tomcat。将 bin 和 collection1 文件夹从 C:\solr setup\solr-4.x\example\solr 复制到 C:\Program Files\Apache ...\Tomcat...\webapps\solrTest。
  5. 将所有 jar 从 C:\solr setup\solr-4.x\example\lib\ext 复制到 C:\Program Files\Apache...\Tomcat...\lib。 SOLR 4.x 将使用这些 jar 进行日志记录。
  6. 在 C:\Program Files\Apache...\Tomcat...\conf\Catalina\localhost\ 中创建与 war 文件 (solrTest.xml) 同名的 xml 文件,其内容如下所示。 Tomcat 会查找此 xml 文件以启动应用程序。
  7. 更新 C:\Program Files\Apache...\Tomcat...\webapps\solrTest\collection1\conf\schema.xml 并添加必填字段并进行更新。
  8. 如果不需要,请删除复制字段。复制字段的用法在同一文件中可用。
  9. 更新 C:\Program Files\Apache...\Tomcat...\webapps\solrTest\collection1\conf\solrconfig.xml。 更新标签中的物理索引路径,如 ${solr.data.dir:C:/Indexes/solrTest Index/}。如果要注释,则默认使用 C:\Program Files\Apache...\Tomcat...\webapps\solrTest\collection1\data\ 目录。 DataDir 标记在文件中可用。无需添加您自己的。
  10. 更新复制条目以在复制请求处理程序中设置主服务器或从服务器。
  11. 尝试访问“...localhost:portNumber/solrTest”。如果没有出现错误,则说明您已成功配置 SOLR 4.x。

【讨论】:

    【解决方案3】:

    在 Tomcat 上开始使用 Solr 的最简单方法是使用 HDS(Heliosearch Distribution for Solr),这是一种 Tomcat/Solr distribution

    它是 Apache Solr 的超集,包含一个附加的“服务器”目录,该目录是基于 Tomcat 的预配置(线程、日志记录、连接设置、消息大小等)的 Solr 服务器。

    其他一些实现说明:

    • 启动脚本可以在任何地方运行,并允许传递 JVM 参数 在命令行上(就像码头一样,所以它更容易使用)
    • 启动脚本可以解决已知的 JVM 错误
    • 启动脚本允许从命令行设置端口,默认停止 基于 http 端口的端口,以便于在其上运行多个服务器 一个盒子)
    • zkcli,solr zookeeper 工具的启动脚本,必要时会自动分解 WAR
    • “服务器”目录一直保持干净,但填充了所有 “server/tc”目录下的tomcat

    开始:

    $ cd server
    $ bin/startup.sh
    

    要在不同的端口(例如 7574)上启动:

    $ cd server
    $ bin/startup.sh -Dhttp.port=7574
    

    关闭:

    $ cd server
    $ bin/shutdown.sh -Dhttp.port=7574
    

    脚本甚至接受 -Djetty.port=7574 以使其更容易 从使用码头的例子开始剪切-粘贴。 “示例”目录 仍然在那里,所以如果你仍然可以运行基于码头的服务器 想要。

    【讨论】:

    • 我刚试过 HelioSearch,它真的很棒!请告诉我是否有任何方法可以隐藏控制台并将其作为 Windows 服务运行?
    【解决方案4】:

    检查 Tomcat 创建的 localhost_yyyy_mm_dd.log 日志。它通常应该向您显示此问题的原因。完整的堆栈跟踪可能不会显示在控制台中...

    【讨论】:

    【解决方案5】:

    我在做同样的事情时遇到了一些问题,官方文档对此并没有真正的帮助。我为此写了一个blog post,内容如下:

    1. Solr 安装

      在磁盘上的某个位置下载并解压最新版本的 Solr。

      cd /tmp
      wget "http://mirrors.ircam.fr/pub/apache/lucene/solr/4.6.0/solr-4.6.0.tgz"
      cd /opt
      sudo tar zxvf /tmp/solr-4.6.0.tgz
      sudo chown -R tomcat:tomcat solr-4.6.0
      

      在这里,我使用 /opt,但只要 Tomcat 可以访问它,您就可以将它安装在任何地方。只是为了确定,让 Tomcat 成为所有者,这样它就可以在 Solr 文件夹中读写。

    2. 部署

      现在,让我们在 Tomcat 上部署 Solr webapp。为此,我们将利用 XML 上下文配置文件,我们将使用它来部署和配置 Solr。

      在您的 Tomcat 安装文件夹中,在 conf/Catalina/localhost 中创建一个新的 XML 上下文配置文件。文件的基本名称将定​​义 Solr 上下文路径。

      我们首先需要定义 ${solr.home}。在这里,我们使用分发中提供的示例 Solr 配置。它位于 /opt/solr-4.6.1/example/solr。

      为避免启动错误,我们需要将一些 jars 添加到 webapp 类路径中,位于 /opt/solr-4.6.1/example/lib/ext 中。但是我们不想用 Solr jars 污染 Tomcat 的 lib 文件夹,所以我们只声明一个虚拟加载器。

      我们还需要正确配置 Log4J。这里我们使用 /opt/solr-4.6.1/example/resources 中 Solr 发行版中提供的 Log4J 配置文件,通过在 Solr 类路径中添加文件夹。

      <?xml version="1.0" encoding="UTF-8"?>
      <Context docBase="/opt/solr-4.6.1/dist/solr-4.6.1.war">
        <Environment
          name="solr/home"
          type="java.lang.String"
          value="/opt/solr-4.6.1/example/solr"
          override="true" />
        <Loader
          className="org.apache.catalina.loader.VirtualWebappLoader"
          virtualClasspath="/opt/solr-4.6.1/example/lib/ext/*.jar;/opt/solr-4.6.1/example/resources/" />
      </Context>
      

      保存文件,等待 Tomcat 读取并部署战争。

    就是这样! Solr 已启动并运行。

    【讨论】:

    • 这个答案应该更高,因为:“但我们不想用 Solr jars 污染 Tomcat 的 lib 文件夹,所以我们只声明一个虚拟加载程序”以及后续关于修改 tomcat7/conf/Catalina/localhost/solr.xml 的说明
    【解决方案6】:

    这是Tony at Drupal 为安装了 XAMPP 的 Windows 提供的说明:

    预赛

    • 给自己泡一杯好茶
    • 确保已安装 Windows Java 环境。目前最高版本为 6。
    • 我假设您使用 XAMPP 来运行 Apache 和 MySQL 以及最新版本的 PHP5

    安装Tomcat

    1. 如果您使用 Tomcat 安装了 XAMPP,请转到您的服务托盘,停止 XAMPP 服务并从您的 XAMPP 安装中删除 Tomcal 目录。然后再次重新启动您的 XAMPP。原因是您希望能够从 Windows 中的服务托盘轻松配置 Tomcat。如果 Tomcat 在 XAMPP 下运行,它不会显示在服务托盘中。
    2. 在安装 Tomcat 之前,将文件 c:\windows\microsoft.net\framework\v1.1.4322\msvcr71.dll 复制到 c:\windows\system32\msvcr71.dll 如果不这样做,Tomcat 会赢'不启动。
    3. 现在安装 Tomcat 6.x。开始运行。如果 Tomcat 正在运行,您应该会看到一个显示在 http://localhost:8080 的页面。
    4. 看一看Tomcat的文件结构。这非常简单。注意名为 webapps 的目录。
    5. 现在喝杯好茶。

    如果您使用的是 Linux,请查看:Apache Solr 4.6.0 installation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2020-10-30
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      相关资源
      最近更新 更多