Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?
@murachi1208

Apache Solr(JDK7, Solr 4.9.1, jetty 9)をインストールしてみたその1

More than 5 years have passed since last update.

Apache Solr

全文検索エンジンと言えば旬の「Elasticsearch」ですが、たまたま Apache Solr を調査する機会があったのでそのメモです。しかし枯れた感じがする Solr だけど意外とインストールに手間取った。

検索エンジンの常識をApache Solrで身につける

ソフトウェア バージョン
Java 1.7.0
Apache Solr 4.9.1
Jetty 9.2.10

Vagrant

いつもの定義だってばさw

config.vm.define :solr do |node|
  node.vm.network :private_network, ip: "192.168.11.210"
  node.vm.provider "virtualbox" do |v|
    v.customize ["modifyvm", :id, "--memory", 512]
  end
end

Java のインストール

Solr 4.9系は、JDK 7以上じゃないと動かないよ、ってどこかで見たような気がするので、JDK 7 ランタイム,開発環境, ant と wget をインストールします。まあランタイムだけでもいいっちゃいいと思うけどねw

# yum install java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64 ant.x86_64 wget

Apache Solr のインストールと起動確認

インストール先は、どこでもいいのですが特にこだわりないので、/var/local にインストールしました(ちゃんと考えると /opt がいいかもねw)。

$ wget http://ftp.riken.jp/net/apache/lucene/solr/4.9.1/solr-4.9.1.tgz
$ tar xvfz solr-4.9.1.tgz
$ sudo cp -rp solr-4.9.1 /var/local/solr/
$ cd /var/local/solr/example
$ sudo java -jar start.jar

ずらずらずらーってなんだか滝のように表示されるけどエラーらしき表示がされていなければ、Solr が起動してますので。管理画面が表示されるるかブラウザで確認してます。

管理画面 : http://192.168.11.210:8983/solr
検索画面 : http://192.168.11.210:8983/solr/collection1/browse

solr-1.png

データを登録、検索してみる

適当なとこに下記のファイルを作成します。

solrtest.xml
<add>
    <doc>
        <field name="id">1</field>
        <field name="name">hoge hoge</field>
    </doc>
    <doc>
        <field name="id">2</field>
        <field name="name">アパッチ</field>
    </doc>
    <doc>
        <field name="id">3</field>
        <field name="name">東京特許許可局</field>
    </doc>
</add>

curl を使って登録してみます。

$ curl 'http://localhost:8983/solr/collection1/update?commit=true&indent=true' --data-binary @solrtest.xml -H 'Content-Type: text/xml'
<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">155</int>
</lst>
</response>

curl を使って検索してみます。

# curl "http://localhost:8983/solr/collection1/select?q=hoge&wt=json&indent=true"
{
  "responseHeader":{
    "status":0,
    "QTime":10,
    "params":{
      "indent":"true",
      "q":"hoge",
      "wt":"json"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"1",
        "name":"hoge hoge",
        "_version_":1498497071919923200}]
  }}

Jetty 9 をインストールし Solr を起動

ここまで順調ですが、こっからが多少はまりました。

起動に失敗するw

折角なので Jetty 9 を使って Solr を起動してみます。そして起動しないってオチを再現します。

$ wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.10.v20150310.tar.gz
$ tar zxvf jetty-distribution-9.2.10.v20150310.tar.gz
$ sudo cp -rp jetty-distribution-9.2.10.v20150310 /var/local/jetty/
$ sudo cp /var/local/jetty/bin/jetty.sh /etc/init.d/jetty

jetty の起動パラメータを /etc/default/jetty に設定します。

/etc/default/jetty
JAVA_HOME=/etc/alternatives/java_sdk
JAVA_OPTIONS="-Djava.awt.headless=true -server -XX:+UseGCOverheadLimit -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseTLAB -XX:MaxPermSize=128m -Xms512M -Xmx1024M $JAVA_OPTIONS -Dsolr.solr.home=/var/local/solr/example/solr"
NO_START=0
JETTY_ARGS=jetty.port=8983
JETTY_USER=root
JETTY_HOME=/var/local/jetty
JETTY_LOGS=/var/local/solr/example/logs

で、サービスを起動してみます。エラーが発生しとるw

# service jetty start

動かない理由がわかった

jettyで動かすための環境が整備されていないというオチでした。なので設定ファイルもコピーしたりして再挑戦します。

$ sudo cp -a /var/local/solr/example/webapps/solr.war /var/local/jetty/webapps/solr.war
$ sudo cp -a /var/local/solr/example/contexts/solr-jetty-context.xml /var/local/jetty/webapps/solr.xml
$ sudo cp -a /var/local/solr/example/lib/ext/* /var/local/jetty/lib/ext/
$ sudo service jetty start

管理画面が表示されたー (^^

INFO をファイルに保存

INFO が画面に表示されウザイと思ったら log4j の設定がされていなかった。ので、ファイルに保存するよう適当に編集します。ここらへんは、後々に響くのでちゃんと設定しといた方が良いです。

/var/local/jetty/resources/log4j.properties
# This is not needed by Jetty - but it helps with many web apps.

log4j.rootLogger=INFO, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
solr.log=/var/local/solr/example/logs
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

よっしゃ。

参考にさせて頂いたサイトさま

Ubuntu12.04にJetty9とsolr4.5.1をインストールしてみる
Apache Solrのインストール
apache solr インストール

8
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
murachi1208
社内では「お手伝い、この!はげ!(スキンヘッドですYO)」と呼ばれてるしがないオッサンエンジニア。調べたことをこつこつ投稿しています。 ※内容は個人的趣味範囲であり所属組織とは関係ありません。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
8
Help us understand the problem. What is going on with this article?