系统详细信息:
操作系统:Cent OS 5.5 x86_64
java - 1.7 (1.7.0_25)
tomcat:6.0.37
solr 4.4(配置为多核)
我在码头上完美运行了 solr 4.4 多核(尽管目前只运行一个核心)。
我需要在 tomcat 6 上运行相同的程序,看看它是否可以比码头更好。
这是我所做的: 1.从http://mirrors.sonic.net/apache/tomcat/tomcat-6/v6.0.37/bin/apache-tomcat-6.0.37.tar.gz
下载了 tomcat 6
2. 将apache-tomcat-6.0.37.tar.gz解压到/usr/local/tomcat/
创建启动和关闭脚本,进程通过user:group tomcat:tomcat查看启动脚本,发现tomcat运行正常. 我将端口从 8080 修改为 8400
3.在tomcat下为solr app创建了一个solr.xml: 文件:/usr/local/tomcat/conf/Catalina/localhost/solr.xml
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/var/www/projects/solr-oncars/example/solr/solr-4.4.0.war" debug="0" privileged="true" allowLinking="true" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/var/www/projects/solr-oncars/example/solr" override="true" />
</Context>
4. 复制 solr.war 到 core 的 home-path
cp /var/www/projects/solr-oncars/example/webapps/solr.war /var/www/projects/solr-oncars/example/solr/oncars/
甚至尝试使用 solr-4.4.war
cp /var/www/projects/solr-oncars/dist/solr-4.4.0.war /var/www/projects/solr-oncars/example/solr/
5. 编辑 solrconfig.xml
5.a:我尝试
从以下位置编辑 solrconfig.xml 中的数据目录:
<dataDir>${solr.core0.data.dir:}</dataDir>
至:
<dataDir>${solr.core0.data.dir:/var/www/projects/solr-oncars/example/solr/oncars/data}</dataDir>
5.b上面的设置还原后我也试过了
6. 将 slf4j jar 复制到 tomcat: 当我尝试从 tomcat 管理器启动 solr 应用程序时,在 catalina 日志中遇到很多 sl4j 错误。这是通过将 sl4j 库从 solr 复制到 tomcat 来解决的。如下所示:
cp -v /var/www/projects/solr-oncars/example/lib/ext/slf4j-* /usr/local/tomcat/lib/
cp -v /var/www/projects/solr-oncars/example/lib/ext/log4j-1.2.16.jar /usr/local/tomcat/lib/
从 1 到 6 完成了从 tomcat 执行现有的 solr。在 Tomcat 管理器下,“/solr”显示为已启动。Stop 和 Start 一样不会抛出错误。
我可以看到 solr 文件夹是在 tomcat 的 webapps 下创建的:
ll webapps/solr/
输出:
-rw-r--r-- 1 tomcat tomcat 5642 Jul 10 11:11 admin.html drwxr-xr-x 3 tomcat tomcat 4096 Sep 19 18:53 css -rw-r--r-- 1 tomcat tomcat 1146 Jul 10 11:11 favicon.ico drwxr-xr-x 4 tomcat tomcat 4096 Sep 19 18:53 img drwxr-xr-x 4 tomcat tomcat 4096 Sep 19 18:53 js drwxr-xr-x 2 tomcat tomcat 4096 Sep 19 18:53 META-INF drwxr-xr-x 2 tomcat tomcat 4096 Sep 19 18:53 tpl drwxr-xr-x 3 tomcat tomcat 4096 Sep 19 18:53 WEB-INF
当从 tomcat 管理器中单击 /solr 时,即 URL:http ://localdomain.com:8400/solr/ 出现以下页面:
HTTP 状态 503 - 服务器正在关闭 类型状态报告 消息服务器正在关闭 描述 请求的服务当前不可用。 Apache Tomcat/6.0.37
SOLR 配置: /var/www/projects/solr-oncars/example/solr/solr.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">
<cores adminPath="/admin/cores">
<core schema="schema.xml" name="oncars" instanceDir="oncars" conf="solrconfig.xml"/>
</cores>
</solr>
我曾尝试在网上寻找帮助,但找不到任何有效的方法。甚至来自 serverfault 的资源
问题可能出在 solr 上,因为我们最初修改了 solrconfig,后来在试错过程中甚至修改了 solr.xml(属于 solr)。
所以,我从零开始又做了整件事。这次我提到了另一个相当相关的 How-To
总的来说,我犯的错误是对 solr 进行更改。不要那样做!
Solr Tomcat Wiki建议:“ Solr4.3 需要完全不同的部署。这些说明不是最新的,并且适用于不确定的 Solr 版本。”
使用 wiki,您往往会点击索引而错过精美的印刷品!我已经提到了它,因此弄乱了工作 solr(幸运的是我已经备份了)。
从我提到的 How-To 中,我学到了以下内容:
1 不要更改正在工作的 solr 配置(即从码头运行 solr 以检查它是否启动正常)
2 在添加 solr 之前启动并运行 tomcat。(独立运行。如果您对两者都很好,请停止这两个服务)
3 假设solr路径是/usr/local/solr-4.x,然后将solr-4.x.war从/usr/local/solr-4.x/dist/solr-4.xxwar复制到/usr/local /solr-4.x/example/solr/solr.war 。_ 这就是您在 solr 目录中需要做的所有事情。休息,你需要从 solr 目录中取出几个文件到 tomcat 目录(pt. 6)
4 修改tomcat的server.xml,确保里面有URIEncoding:
5 在 tomcat 的 conf 中创建 solr.xml:vim /usr/local/tomcat/conf/Catalina/localhost/solr.xml 添加以下行:
注意: solr 核心位于路径下:/usr/local/solr/example/solr/core{0,1,..n}
6 将 Solr 扩展文件和 log4j 配置文件复制到 tomcat:
对于其余部分,请与“操作方法”进行交叉检查
最后,将 tomcat 所有权授予 solr 和 tomcat 目录(如果 tomcat 作为用户/组“tomcat”运行):
启动tomcat并访问solr-url,它成功了!