分享 sunspot + solr 生产环境配置 ubuntu

themorecolor · September 17, 2014 · Last by flowerwrong replied at June 08, 2016 · 4474 hits

搜索了大部分内容都是关于 gem 'sunspot_rails' gem 'sunspot_solr' # optional pre-packaged Solr distribution for use in development 这两个 GEM 的配合使用。

sunspot_rails 和 solr 的几乎没有。。

之前主要卡在 solr 和 sunspot 怎么连接 这里。。网上也没有相关的中文资料 英文文档看的又慢。。 Fight 了几个小时,还好 现在能跑起来了。

一。安装 solr 基本上没有遇到什么问题 可以直接参考下面的参考链接傻瓜安装 弱弱的翻译一下 1.先安装依赖的 jdk

sudo apt-get -y install openjdk-7-jdk
mkdir /usr/java
ln -s /usr/lib/jvm/java-7-openjdk-amd64 /usr/java/default
  1. 下载安装 solr 我安装的是最新版的 可以在这里选个速度快的链接下载最新版 http://www.apache.org/dyn/closer.cgi/lucene/solr/4.10.0
cd /opt
wget http://archive.apache.org/dist/lucene/solr/4.7.2/solr-4.7.2.tgz
tar -xvf solr-4.7.2.tgz
cp -R solr-4.7.2/example /opt/solr
cd /opt/solr
java -jar start.jar

如果没什么问题的话,打开 http://YOUR_IP:8983/solr 你应该就可以看到 solr 的管理后台了

2.先按 Ctrl+C 把 solr 关闭,配置 jetty

vim /etc/default/jetty

把下面的配置代码 粘贴进去 保存 退出

NO_START=0 # Start on boot
JAVA_OPTIONS="-Dsolr.solr.home=/opt/solr/solr $JAVA_OPTIONS"
JAVA_HOME=/usr/java/default
JETTY_HOME=/opt/solr
JETTY_USER=solr
JETTY_LOGS=/opt/solr/logs

打开 /opt/solr/etc/jetty-logging.xml 粘贴代码 保存 退出

<?xml version="1.0"?>
  <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
  <!-- =============================================================== -->
  <!-- Configure stderr and stdout to a Jetty rollover log file -->
  <!-- this configuration file should be used in combination with -->
  <!-- other configuration files.  e.g. -->
  <!--    java -jar start.jar etc/jetty-logging.xml etc/jetty.xml -->
  <!-- =============================================================== -->
  <Configure id="Server" class="org.mortbay.jetty.Server">

      <New id="ServerLog" class="java.io.PrintStream">
        <Arg>
          <New class="org.mortbay.util.RolloverFileOutputStream">
            <Arg><SystemProperty name="jetty.logs" default="."/>/yyyy_mm_dd.stderrout.log</Arg>
            <Arg type="boolean">false</Arg>
            <Arg type="int">90</Arg>
            <Arg><Call class="java.util.TimeZone" name="getTimeZone"><Arg>GMT</Arg></Call></Arg>
            <Get id="ServerLogName" name="datedFilename"/>
          </New>
        </Arg>
      </New>

      <Call class="org.mortbay.log.Log" name="info"><Arg>Redirecting stderr/stdout to <Ref id="ServerLogName"/></Arg></Call>
      <Call class="java.lang.System" name="setErr"><Arg><Ref id="ServerLog"/></Arg></Call>
      <Call class="java.lang.System" name="setOut"><Arg><Ref id="ServerLog"/></Arg></Call></Configure>

3.创建用户,权限

sudo useradd -d /opt/solr -s /sbin/false solr
sudo chown solr:solr -R /opt/solr

4.配置默认启动

sudo wget -O /etc/init.d/jetty http://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk/jetty-distribution/src/main/resources/bin/jetty.sh
sudo chmod a+x /etc/init.d/jetty
sudo update-rc.d jetty defaults

5.完成 启动

sudo /etc/init.d/jetty start

如果没有问题 http://YOUR_IP:8983/solr 这个页面应该是可以访问的

7.把 /opt/solr/solr/collection1 重命名成一个可读性好的文件名称 apples 可以自己随便写

cd /opt/solr/solr
mv collection1 apples
cd apples

打开 core.properties 文件 把里面的 collection1 修改成 刚刚修改的名称 apples

8.删除 data 目录

rm -R data

9.在 Gemfile 添加

gem 'sunspot_rails'
gem 'sunspot_solr' # optional pre-packaged Solr distribution for use in development

依次执行

bundle install
rails generate sunspot_rails:install
bundle exec rake sunspot:solr:start

会在项目目录下生成 solr 目录

把 solr/conf/schem.xml copy 到 /opt/solr/solr/apples/conf/schem.xml 这里 你的应该也是这里。

10.修改上面生成的 config/sunspot.yml 配置文件

production:
  solr:
    hostname: localhost
    port: 8983
    log_level: WARNING
    path: /solr/apples
    solr_home: /opt/solr/solr
    data_path: /opt/solr/solr/apples/data
    # read_timeout: 2
    # open_timeout: 0.5

11. 重启 jetty sudo /etc/init.d/jetty restart

试试 重建索引以及搜索等。 RAILS_ENV=production bundle exec rake sunspot:reindex

参考: https://www.digitalocean.com/community/tutorials/how-to-install-solr-on-ubuntu-14-04 https://github.com/sunspot/sunspot

You need to Sign in before reply, if you don't have an account, please Sign up first.