某个项目中用到了全文搜索引擎apache solr。之前一直是在命令行用java –jar start.jar来启动solr的。这样的方式只能用在开发时。因为一旦关闭终端,solr也就被关闭了。
在网上看到可以用tomcat来部署solr。遂实践之。
1、安装java
# uname –a #查看机器是多少位的。
我的机器是64位的,我下载安装:jdk-6u6-linux-x64.bin
# sh /home/apps/jdk-6u16-linux-i586-rpm.bin
查看提示信息,按照提示选择。默认会安装在/usr/java目录下,我的安装路径是在/usr/local/jdk1.6.0_19。
# mv 安装文件夹 jdk #修改文件夹名为jdk。
# java -version
显示当前JRE版本,如果不是1.6.0_16(默认会安装较低版本1.4),则有方法一:
删除较低版本的jdk
# rpm -qa | grep java #查看系统安装的jdk
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115# rpm –e java-1.4.2-gcj-compat-1.4.2.0-40jpp.115 –nodeps#删除低版本的jdk。
方法二:
需要修改配置。
在vi /etc/profile文件中加入
export PATH=/usr/local/jdk1.6.0_19/bin:$PATH
将java的路径放在$PATH之前,这样就会优先使用我们新安装的jdk。
2、安装tomcat
从http://tomcat.apache.org/download-60.cgi下载Tomcat 6的安装包apache-tomcat-6.0.20.tar.gz,选择Core:tar.gz (pgp, md5) 进行下载。
安装tomcat是很简单的,将tomcat解压缩到想要安装的目录即可。
在SSH Client中执行:
# tar zxf apache-tomcat-6.0.20.tar.gz
# cp -r apache-tomcat-6.0.20 /usr/local/apache-tomcat-6.0.20#mv apache-tomcat-6.0.20 tomcat
# cd /usr/local/tomcat/bin
# ./startup.sh #启动Tomcat现在来看看我的/etc/profile的配置
JAVA_HOME=/usr/local/jdk1.6.0_19
JRE_HOME=/usr/local/jdk1.6.0_19/jre
JAVA_BIN=/usr/local/jdk1.6.0_19/bin
TOMCAT_HOME=/usr/local/tomcat
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME TOMCAT_HOME CLASSPATH JAVA_BIN JRE_HOME
export PATH=/usr/local/jdk1.6.0_19/bin:$PATH
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr/example/solr"
3、安装Solr
从http://people.apache.org/builds/lucene/solr/nightly/下载solr的zip包后解压缩,将dist目录下的war文件改名为solr.war直接复制到tomcat的webapps目录即可。
我是直接将项目要用的example目录拷贝下来。
# mkdir –p /opt/solr/example #创建要存放solr的目录
# cp –r example/solr /opt/solr/example #将example下的solr目录(包含目录conf,data等)复制到之前创建的目录中。
# cp example/webapps/solr.war /usr/local/tomcat/webapps #将example中的webapps里的solr.war放在/usr/local/tomcat/webapps中
修改/opt/solr/example/solr/conf/solrconfig.xml文件中的配置data路径的语句,设置solr的data路径为绝对路径
<dataDir>${solr.data.dir:/opt/solr/example/solr/data}</dataDir> #必须设置为绝对路径,否则tomcat找不到。
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr/example/solr"(这一句配置可以写在profile中)注意一定要设置solr的主位置。
建立/tomcat安装目录/conf/Catalina/localhost/solr.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/usr/local/tomcat/webapps/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/opt/solr/example/solr"override="true" />
</Context>
</Context>
变量1:Context docBase=solr.war的目录,必须是solr.war的绝对路径。如我是放在tomcat的webapps里,所以其绝对路径为"/usr/local/tomcat/webapps/solr.war" 。
变量2:Environment name="solr/home"必须这么写,可能solr默认为solr的home目录(记住必须这么写)。
变量3:Environment value="/opt/solr/example/solr" 值,是solr目录,就是包括bin,conf等目录,一定要有.
观察这个指定的solr主位置,里面存在两个文件夹:conf和data.
其中conf里存放了对solr而言最为重要的两个配置文件schema.xml和solrconfig.xml。data则用于存放索引文件。
schema.xml主要包括types、fields和其他的一些缺省设置。
solrconfig.xml用来配置Solr的一些系统属性,例如与索引和查询处理有关的一些常见的配置选项,以及缓存、扩展等等。
tomcat默认是监听8080端口。若想让其监听solr默认的端口8943,可以这样设置
修改/usr/local/tomcat/conf目录中的server.xml文件。
查看8080,将其修改为8943.如下所示:
<Connector port="8983" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>#注意最好设置为URIEncoding="UTF-8"否则可能检索中文会出现问题。
至此,solr正确的部署在里tomcat中。可以浏览器输入http://192.168.10.109:8983/solr/可以看到如下画面