その他
    ホーム 技術発信 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の日本語ドキュメントは少なめなので、少しでも参考になれば幸いです。