目次
この記事はアピリッツの技術ブログ「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の日本語ドキュメントは少なめなので、少しでも参考になれば幸いです。