开源软件暗坑太多,网上的资料也很多胡扯。 折腾了一下午才搞定solr在resin下的部署。java,solr,resin这3个软件的版本如下

  • jdk-7u25-linux-x64.rpm
  • solr-4.3.1.tgz
  • resin-4.0.36.tar.gz

以上3个版本我测试过,能搭配使用,其他版本有各种失败

linux下面wget下载安装java

wget --no-check-certificate --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com"  "http://download.oracle.com/otn-pub/java/jdk/7u25-b15/jdk-7u25-linux-x64.rpm"
mv jdk -7u25* jdk-7u25-linux-i586.rpm
sudo rpm -ivh jdk-7u25-linux-i586.rpm

配置class path

sudo vi /etc/profile,添加如下定义

#set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_25
export CLASSPATH=.:$JAVA_HOME/jre/lib/*.jar
export PATH=$PATH:$JAVA_HOME/bin

java 就安装成功了

编译安装 resin

resin有个本地权限依赖so:libresin_os.so,直接下载二进制包,启动的时候会有warnging,所以需要编译安装

  • wget http://www.caucho.com/download/resin-4.0.36-src.zip
  • unzip resin-4.0.36-src.zip
  • cd resin-4.0.36
  • 我们把resin安装到/opt目录下,那么
  • ./configure --prefix=/opt/resin
  • make && make install

solr 直接下载就能用

  • wget http://archive.apache.org/dist/lucene/solr/4.5.1/solr-4.5.1.tgz
  • solr开发很活跃,更新很快,是否用最新版,阅读一下发布的release 文档

准备solr的数据

  • tar -zxvf solr-4.3.1.tgz ,备用
  • 新建一个目录,例如 /opt/solr-4.3.1 作为solr的工作目录,注意目录的容量,以后的索引文件会在生成在这个目录
  • 从刚才解压得到的solr安装包 复制文件:
    • mkdir -p /opt/solr-4.3.1/home
    • mkdir -p /opt/solr-4.3.1/lib
    • cp example/solr/* /opt/solr-4.3.1/home
    • cp -r dist/* /opt/solr-4.3.1/lib

配置resin

  • 刚才我们把resin安装在/opt/resin 目录下
  • vi /opt/resin/conf/resin.xml
  • 找到 <host id="" root-directory="."> 这个节点,把下面这段xml文件添加进去

<web-app id="/solr" root-directory="webapps/solr" archive-path="/opt/solr-4.3.1/lib/solr-4.3.1.war" character-encoding="utf-8"> <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>/opt/solr-4.3.1/home</env-entry-value> </env-entry>

<class-loader> <tree-loader path="/opt/solr-4.3.1/lib"/> </class-loader> </web-app>

  • 执行 /opt/resin/bin/resin.sh start
  • 部署成功! 打开 http://ip:8080/solr/ 就能够看到solr的管理界面了

重要吐槽

  • <tree-loader path="/opt/solr-4.3.1/lib"/> 这项配置最重要,不能漏掉。tree-loader 表示 可以自动加载子目录的jar包
  • solr发行包集成了容器:jetty,开发调试的时候 java -jar start.jar 用这个特别方便
  • solr本身也有一个配置lib的地方,在${solr.home}/conf/solrconfig.xml当中 ,类似 <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" /> 这样的节点,它不能加载子目录当中的jar包,但是可以适用相对路径,配置起来特别琐碎。
  • solr包当中有个 contrib目录,里面一堆jar,普通应用基本上用不着,不需要在solrconfig.xml中加载
  • java 的lib包 管理设计过度了,自以为智能,过犹不及,浪费时间,谋财害命。

本文地址: http://lutaf.com/176.htm 鲁塔弗原创文章,欢迎转载,请附带原文链接