linux上部署tomcat、solr

  • 内容
  • 评论
  • 相关

之前有一篇文章我们介绍了如何在linux上部署安装jdk、tomcat、ant,今天我们来介绍一下唉tomcat上部署solr。
假设你的tomcat安装路径为/usr/local/tomcat/
首先我们要去下载solr的二进制源码包apache-solr-3.6.1。
下载结束后我们解压文件夹,然后将dist文件夹下的apache-solr-3.6.1.war文件复制到tomcat的webapps目录,我的tomcat安装在/usr/local/tomcat/

cp apache-solr-3.6.1.war /usr/local/tomcat/webapps/
cd /usr/local/tomcat/webapps/
mv apache-solr-3.6.1.war solr.war

然后我们将解压文件中的example/solr文件夹复制到tomcat的安装目录

cp -R /apache-solr-3.6.1/example/solr /usr/local/tomcat/

这时候我们需要修改一/usr/local/tomcat/solr/conf/solrconfig.xml这个文件

vim /usr/local/tomcat/solr/conf/solrconfig.xml
//正确的配置一下路径
这个数存放solr的索引数据文件,如果你是单核配置,可以默认放在这里,至于多核,也就是多套索引,我们后面会讲到如何配置。
<dataDir>${solr.data.dir:/usr/local/tomcat/solr/data}</dataDir>

然后设置一下路径

export JAVA_OPTS="$JAVA_OPTS -Dsolr.data.dir=/usr/local/tomcat/solr/data"

这个设置可以写在/etc/profile
在这里我们说一下windows下面的一些环境变量的配置,JAVA_HOME,Path以及CATALINA_HOME的设置。
1,设置JAVA_HOME:
一、为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串;
二、归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!
三、第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题.。
2,设置CLASSPATH:
这是一个很有趣,当然也比较折磨初学者的问题, 这个变量设置的目的是为了程序能找到相应的".class"文件, 不妨举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再运行java A, 看看会有什么结果~~:)~~~, 一切正常, java命令通过CLASSPATH找到了.class文件!
3,设置PATH:
道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 你可以选择把 %JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行。那么对于你想在任何路径下直接执行tomcat的命令也是一样的道理,这里我们还需要设置一个CATALINA_HOME=Tomcat解压目录,然后再加一个环境变量ClassPath=%CATALINA_HOME%\bin。
然后我们在设置tomcat的solr配置,新建一个文件solr.xml

vim /usr/local/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="/usr/local/tomcat/solr" override="true"/>
</Context>

以上配置了solr的相关路径。
然后我们重启tomcat即可。访问http://localhost:8080/solr/admin/便可以看到正确的solr页面。
那么这里有一个很具有普遍意义的问题,就是我的网站可能需要多套索引,比如你有很多子站点,这些子站点的索引需哟放在不同的索引目录下,这个时侯就需要开启solr的多核配置,也就是multi了core,这个时候我们就要修改solr的配置文件:

/usr/local/tomcat/solr/solr.xml
<solr persistent="true" sharedLib="lib">

  <!--
  adminPath: RequestHandler path to manage cores.  
    If 'null' (or absent), cores will not be manageable via request handler
  -->
    <cores adminPath="/admin/cores" defaultCoreName="collection1">
        <core name="collection1" instanceDir="." />
        <core name="core0" instanceDir="cores/core0">
                <property name="dataDir" value="cores/core0/data" />
        </core>

        <core name="core1" instanceDir="cores/core1">
                <property name="dataDir" value="cores/core1/data" />
        </core>

        <core name="core2" instanceDir="cores/core2">
                <property name="dataDir" value="cores/core2/data" />
        </core>
  </cores>

</solr>

这个文件其实就是告诉solr我有多核,多套索引,并且给出了各种索引的存放位置,这个小功能可以实现小面积的分布搜索。
在<solr>标签中,有两个很重要参数
persistent
:这个参数保证多核的运行
sharedLib
:这个参数加载.jar文件,这些文件包含了多核运行时候需要的类库,这些.jar文件的路径是相对于solr.home也就是solr根目录的。
其中<core>标签中的<property>标签可以定义core的一些属性值。
定义了多核之后,例如我们的core0,这个文件位于/usr/local/tomcat/solr/cores/core0/
cores这个文件以及存放多核数据的文件夹需要自己手动建立,在core0文件夹下我们需要建立conf和data文件夹
对于conf文件夹的建立可以直接将solr目录下的conf(建议直接复制原始解压包中的conf文件,不要从已经修改过配置文件的其它core中复制)直接复制到core文件夹下,data直接新建即可,重启tomcat之后再data下面会自动新建两个文件夹index和spellchecker,同时index下面还包含文件。
这个时侯如果你想访问某个core的配置可以这样:

localhost:8080/slor/core0

如果你这样访问

localhost:8080/solr

在配置页面会出现Cores的配置选项的。
在修改了tomcat和solr的配置文件最好重启tomcat

cd /usr/local/tomcat/bin
#关闭
./shutdown.sh
#启动
./startup.sh

评论

1条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注