这是一个安装记录。安装过程前和遇到问题时,浏览了众多的 solr 安装配置文章,感谢所有的作者分享。发现 Solr 4.3.0 在 Ubuntu 12.04 + OpenJDK 1.7 的安装,与网上已有的文章有一些出入。
Ubuntu 12.04 的安装 - 基本安装后,仅选择安装 openssh
安装 Openjdk
cisco@ubsolr:~$ sudo apt-get -y install openjdk-7-jdk
检查一下 JDK 安装路径:
cisco@ubsolr:~$ ls /usr/lib/jvm
java-1.7.0-openjdk-i386 java-7-openjdk-commonjava-7-openjdk-i386
cisco@ubsolr:~$ ls /usr/lib/jvm/java-7-openjdk-i386
cisco@ubsolr:~$ ls /usr/lib/jvm/java-7-openjdk-i386/bin
添加 JDK 环境变量:
cisco@ubsolr:~$ sudo nano /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
重新启动一下系统,检查 JAVA 的配置:
cisco@ubsolr:~$ env
cisco@ubsolr:~$ java -version
cisco@ubsolr:~$ echo $JAVA_HOME
安装 Apache2 and Tomcat7
cisco@ubsolr:~$ sudo apt-get -y install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev
cisco@ubsolr:~$ sudo apt-get update
cisco@ubsolr:~$ sudo apt-get -y install tomcat7 tomcat7-admin
Tomcat7 安装后,相关目录和配置是在以下目录:
/usr/share/tomcat7
/var/lib/tomcat7/webapps
/etc/tomcat7/Catalina/localhost
从 http://tomcat.apache.org/tomcat-6.0-doc/appdev/sample/ 下载 sample.war,把 sample.war 放到 /var/lib/tomcat7/webapps 并重启 Tomcat7:
cisco@ubsolr:~$ sudo /etc/init.d/tomcat7 restart
然后从浏览器输入 (我的主机IP地址是 192.168.56.10)
http://192.168.56.10:8080/sample
就可以看到 sample 的页面,这样就确定 JDK 和 Tomcat7 完全正常运作。
安装 Solr 4.3.0
cisco@ubsolr:~$ sudo /etc/init.d/tomcat7 stop
cisco@ubsolr:~$ sudo tar xzvf solr-4.3.0.tgz
cisco@ubsolr:~$ ls solr-4.3.0/dist
solr-4.3.0.war
把解压后的 solr-4.3.0.war 复制到 tomcat7/webapps 并改名为 solr.war
cisco@ubsolr:~$ sudo cp solr-4.3.0/dist/solr-4.3.0.war /var/lib/tomcat7/webapps/solr.war
新建一个目录 /var/solr 作为 Solr 的 home 目录 (solr.solr.home)
cisco@ubsolr:~$ sudo mkdir -p /var/solr
把解压的 example/solr 复制到 solr.solr.home 目录,这个就会是 collection1 的实例
cisco@ubsolr:~$ sudo cp –R solr-4.3.0/example/solr/* /var/solr
cisco@ubsolr:~$ ls /var/solr
cisco@ubsolr:~$ sudo chown -R tomcat7 /var/solr
在 /etc/tomcat7/Catalina/localhost 建议一个 solr.xml,指明solr的路径
cisco@ubsolr:~$ sudo nano /etc/tomcat7/Catalina/localhost/solr.xml
<Context docBase="/var/lib/tomcat7/webapps/solr.war" debug="0" privileged="true" allowLinking="true" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/var/solr" override="true">
</Environment>
</Context>
以上设置中,我的 solr.war (包括其后产生的 solr 目录) 是存放于 /var/lib/tomcat7/webapps
而 实例 collection1 则存放于 /var/solr
把实例 collection1 (和 core0, core1) 的路径 放到系统变量 (于文件 /etc/profile):
cisco@ubsolr:~$ sudo nano /etc/profile
export JAVA_OPTIONS="-Dsolr.solr.home=/var/solr $JAVA_OPTIONS"
将解压的 solr 相关 lib 复制到 tomcat7 的 /lib 目录下:
cisco@ubsolr:~$ ls solr-4.3.0/example/lib/ext
jcl-over-slf4j-1.6.6.jar log4j-1.2.16.jar slf4j-log4j12-1.6.6.jar
jul-to-slf4j-1.6.6.jar slf4j-api-1.6.6.jar
cisco@ubsolr:~$ ls /usr/share/tomcat7/lib
cisco@ubsolr:~$ sudo cp -R solr-4.3.0/example/lib/ext/* /usr/share/tomcat7/lib
cisco@ubsolr:~$ sudo cp solr-4.3.0/example/resources/log4j.properties /usr/share/tomcat7/lib
设定 solr 的 log 到指定的目录 /var/solr/logs :
cisco@ubsolr:~$ sudo mkdir -p /var/solr/logs
cisco@ubsolr:~$ sudo chown -R tomcat7 /var/solr/logs
cisco@ubsolr:~$ sudo nano /usr/share/tomcat7/lib/log4j.properties
log4j.appender.file.File=/var/solr/logs/solr.log
建立 collection1 的 data 目录:
cisco@ubsolr:~$ sudo mkdir -p /var/solr/collection1/data
cisco@ubsolr:~$ sudo chown -R tomcat7 /var/solr/collection1/data
修改 solrconfig.xml,指定 data 路径:
cisco@ubsolr:~$ sudo nano /var/solr/collection1/conf/solrconfig.xml
<dataDir>${solr.data.dir:/var/solr/collection1/data}</dataDir>
在 /var/solr 下建一个目录 libs,存放各种外加的 lib:
cisco@ubsolr:~$ sudo mkdir -p /var/solr/libs
cisco@ubsolr:~$ sudo chown -R tomcat7 /var/solr/libs
cisco@ubsolr:~$ sudo cp solr-4.3.0/dist/*.jar /var/solr/libs
cisco@ubsolr:~$ sudo cp solr-4.3.0/contrib/extraction/lib/* /var/solr/libs
修改 sorlconfig.xml 指定各种外加 lib 的路径:
cisco@ubsolr:~$ sudo nano /var/solr/collection1/conf/solrconfig.xml
<!-- my added libs folder -->
<lib dir="/var/solr/libs" />
<lib dir="/var/solr/libs/" regex="solr-cell-\d.*\.jar" />
<lib dir="/var/solr/libs/" regex="solr-clustering-\d.*\.jar" />
<lib dir="/var/solr/libs/" regex="solr-langid-\d.*\.jar" />
<lib dir="/var/solr/libs/" regex="solr-velocity-\d.*\.jar" />
在 solrconfig.xml 有指定 lib 目录的例句,用 <!-- --> 都屏蔽掉,否则 会有 目录找不到的提示
同时修改索引提交的记录数,我的理解是,小的数字会快点提交写入硬盘,要求内存会少一点:
<autocommit>
<maxDocs>10000</maxDocs>
</autocommit>
保存。重启 tomcat7:
cisco@ubsolr:~$ sudo /etc/init.d/tomcat7 start
从浏览器输入 (我的主机IP地址是 192.168.56.10)
http://192.168.56.10:8080/solr
就可以看到 solr 的页面了。
以上配置,其实就是修改了 collection1 下的 solrconfig.xml, 一般不会有问题。如果不能看到 solr 页面,有可能 solr 还没启动呢。我自己就遇到这样的问题。有问题时,先确定 tomcat7 正常运作 (以上 sample.war 就是用于检查 Java 和 tomcat7 正常运行)。然后查看 logs
cisco@ubsolr:~$ ls /var/lib/tomcat7/logs
catalina.2013-05-20.log localhost_access_log.2013-05-20.txt
cisco@ubsolr:~$ vi /var/lib/tomcat7/logs/catalibna.2013-05-20.log
"/var/lib/tomcat7/logs/catalina.2013-05-20.log" [readonly] 646L, 53118CMay 20, 2013 11:26:50 PM org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/solr]
May 20, 2013 11:40:10 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor /etc/tomcat7/Catalina/localhost/solr.xml
May 20, 2013 11:40:10 PM org.apache.tomcat.util.digester.Digester fatalError
SEVERE: Parse Fatal Error at line 3 column 3: The element type "Environmanet" must be terminated by the matchiing end-tag "</Environmanet>".
这里的记录显示 solr.xml 文件 的语法有问题啊,少了一个斜杠(/)。我为这个斜杠付出2天时间呢,惭愧。
如果solr 可以正常启动,最好备份一下 solrconfig.xml 。因为多数功能的安装,都要修改 solrconfig.xml,一旦修改了,突然出错,就比较麻烦。每改一次都备份一下,出错了,就把上一个好的复制回来,这样修改就少多了
安装 IKAnalyzer (IK Analyzer 2012FF_hf1.zip)
这个安装折腾了几天,网上多数的例子都不适用,只用一个可用的,详见
http://sbp810050504.blog.51cto.com/2799422/1179312
谢谢这位老大的分享,以下是我的安装记录。文件 "IK Analyzer 2012FF_hf1.zip" 从 http://code.google.com/p/ik-analyzer/downloads/list 下载,改名为 IKAnalyzer2012FF.zip
cisco@ubsolr:~$ sudo apt-get -y install unzip
cisco@ubsolr:~$ sudo unzip IKAnalyzer2012FF.zip -d IKA5
cisco@ubsolr:~$ sudo cp IKA5/IKAnalyzer2012FF_u1.jar /var/lib/tomcat7/webapps/solr/WEB-INF/lib
cisco@ubsolr:~$ sudo mkdir -p /var/lib/tomcat7/webapps/solr/WEB-INF/lib/classes
cisco@ubsolr:~$ sudo cp IKA5/IKAnalyzer.cfg.xml /var/lib/tomcat7/webapps/solr/WEB-INF/lib/classes
cisco@ubsolr:~$ sudo cp IKA5/stopword.dic /var/lib/tomcat7/webapps/solr/WEB-INF/lib/classes
修改 schema.xml
cisco@ubJ:~$ sudo nano /var/solr/collection1/conf/schema.xml
<!-- IKAnalyzer 2012FF u1 -->
<fieldType name="text" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer">
</analyzer>
</fieldType>
保存。重启 tomcat7
cisco@ubsolr:~$ sudo /etc/init.d/tomcat7 restart
schema.xml 是另一个重要的配置文件,每次修改后测试,如果可行、有效、不出错,就做一个备份。