ホーム DoRuby LiferayとSolrの連携
LiferayとSolrの連携
 

LiferayとSolrの連携

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

LiferayとSolrを連携する方法をご紹介します。

前提

各バージョン

  • Liferay:6.2 CE GA2
  • LiferayサーバのOS:ubuntu 14.04.5
  • Solr:4.10.2
  • SolrサーバのOS:CentOS 6

※LiferayサーバとSolrサーバは、ローカル環境(Mac)にvagrantで構築しています。
※Liferay本体はLiferayサーバのvagrantユーザのHOME直下に配置しています。

Liferay CE Solr 4 Search Engineインストール

Liferayの公式サイトのマーケットプレイス( https://web.liferay.com/ja/marketplace )でLiferay CE Solr 4 Search Engineをダウンロードし、Liferayのdeployディレクトリに配置します。

※Liferayサーバでの作業

$ cp /vagrant/Liferay\ CE\ Solr\ 4\ Search\ Engine.lpkg ~/liferay-portal-6.2-ce-ga2/deploy/

置いた瞬間に自動的にTomcatにデプロイされます。
念のためLiferayを再起動しておきます。

$ ~/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/bin/shutdown.sh
$ ~/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/bin/startup.sh

デフォルトファイルを念のためバックアップ

※solrサーバでの作業

$ cd /usr/local/solr/liferay/solr/collection1/conf
$ sudo cp -a schema.xml schema.xml,20170925
$ sudo cp -a solrconfig.xml solrconfig.xml,20170925

以下のファイルをsolrサーバにコピー

コピー元(liferayサーバ)

ファイル1:~/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/webapps/solr4-web/WEB-INF/conf/schema.xml
ファイル2:~/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/webapps/solr4-web/WEB-INF/conf/solrconfig.xml

コピー先(Solrサーバ)

ファイル1:/usr/local/solr/liferay/solr/collection1/conf/schema.xml
ファイル2:/usr/local/solr/liferay/solr/collection1/conf/solrconfig.xml

※念のため、コピー後にschema.xmlとsolrconfig.xmlの所有権が他のファイルと同じになっているか確認してください。

solrサーバ再起動

※solrサーバでの作業

$ sudo service solr restart

solr接続先設定変更

※liferayサーバでの作業

$ vim ~/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/webapps/solr4-web/WEB-INF/classes/META-INF/solr-spring.xml
---- ここから ----
<!--<property name="url" value="http://localhost:8080/solr" />-->
<property name="url" value="http://192.168.33.10:8983/solr" />
---- ここまで ----

Liferay設定変更

IPでアクセスしている場合、そのIPへのリダイレクトを許可しないと、インデックス作成時に「Forward does not exist」というエラーが発生するため、サーバのIPをリダイレクト許可に追加します。

参考:https://issues.liferay.com/browse/LPS-60292

※liferayサーバでの作業

$ vim ~/liferay-portal-6.2-ce-ga2/portal-setup-wizard.properties
---- ここから ----
redirect.url.security.mode=ip
redirect.url.domains.allowed=
redirect.url.ips.allowed=127.0.0.1,192.168.33.10
---- ここまで ----
※上記3行追加
$ ~/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/bin/shutdown.sh
$ ~/liferay-portal-6.2-ce-ga2/tomcat-7.0.42/bin/startup.sh

インデックス作成

Liferayの管理画面( https://192.168.33.10/ )→システム管理→コントロールパネル→サーバ管理→検索で利用するインデックスを再構築する。を押下

正常にcommitされているか確認

Solrの管理画面( http://192.168.33.11:8983/solr/#/ )→Core Selector→collection1→Query→[Execute Query]
※response/numFoundが1以上であればOKです。

もし、numFoundが0のままの場合、以下を確認してみてください。

  • インデックス作成時にSolrのログが出力されること $ tail -f /var/log/solr.log
  • Solrの再起動が成功すること。以下のExceptionが表示され正常にSolrが停止されない場合は、killで強制終了 java.net.ConnectException: Connection refused (Connection refused)
  • 手動コミットを試してみる http://192.168.33.11:8983/solr/update?stream.body=%3Ccommit/%3E

以上です。Liferayの日本語ドキュメントは少なめなので、少しでも参考になれば幸いです。

記事を共有

最近人気な記事