はじめに
Groonga 3.0.1以降ではgroonga-httpdの設定ファイルのデフォルトが変更されたため、この記事の内容は現在では古くなっています。
2013年2月9日にオープンソースのカラムストア機能付き全文検索エンジンGroonga 3.0.0をリリースしました。
3.0.0はおよそ1年ぶりのメジャーアップデートリリースです。
以前のメジャーバージョンである2.xから3.xになるまでに、サーバー用途として使うのに便利な設定済みパッケージも追加しました。
それまではgroongaコマンドから直接起動していたのが、サービスとして普通に起動/終了できるようになっています。
設定済みパッケージには以下の3つがあります。
- groonga-server-http (HTTP)
- groonga-server-gqtp (GQTP)
- groonga-httpd (HTTP)
これを見て、HTTPを使っているパッケージが複数あるのと、GQTPって何だと思われるかも知れません。
HTTPを使っているパッケージが複数あるのは、機能に違いがあるからです。詳細は比較を参照してください。
簡単に言うと、groonga-server-httpよりgroonga-httpdパッケージのほうがnginxをベースにしているので高機能です。
GQTPというのはGroonga Query Transfer Protocolのことで、Groonga専用に設計された独自プロトコルです。
今回はこれらパッケージのうち、groonga-httpdのセットアップでつまづかないための方法を紹介します。
groonga-httpdパッケージのインストール
groonga-httpdは各種ディストリビューション向けにパッケージを提供しているので、インストール手順に従ってgroongaがインストールできている状態であれば、以下のようにして追加インストールすることができます。
Debian/Ubuntuの場合:
sudo apt-get install -y groonga-httpd
CentOS/Fedoraの場合:
sudo yum install -y groonga-httpd
groonga-httpdの動作確認をする
Debian/Ubuntuの場合、パッケージをインストールすると自動的にサービスを起動するようになっているので、プロセスを確認すると以下のようにgroonga-httpdがいるはずです。
% ps -ef|grep groonga
root 5956 1 0 11:05 ? 00:00:00 nginx: master process /usr/sbin/groonga-httpd
では、ブラウザを起動して http://localhost:10041 へアクセスしてみてください。
Groongaの管理画面が表示されたでしょうか?
実は、素の状態では表示されません。ちょっとだけ設定ファイルを変更する必要があります。
groonga-httpdの設定を変更する
groonga-httpdはnginxをベースにしているため、groonga-server-httpよりもできることが増えます。
そのため、専用の設定ファイルが用意されています。
設定ファイルの場所は、groonga-httpdに記載してありますが、以下にあります。
/etc/groonga/httpd/groonga-httpd.conf
groonga-httpdの場合、データベースにアクセスするユーザーを設定ファイルで任意に設定することができます。
# Match this to the file owner of groonga database files if groonga-httpd is
# run as root.
# user groonga groonga;
3.0.0では、デフォルトではユーザーの設定はコメントアウトされていました。
これはgroonga-httpdを利用する人に設定をまかせているからです。
ただ、コメントアウトしたままだと、ワーカープロセスをnobodyとして起動しようとするため、groongaのデータベースへアクセスする権限がないと失敗します。
最初に起動しているプロセスを確認したときにマスタープロセスのみでワーカープロセスがいないのはそのためです。
データベースにアクセスするのがgroongaユーザーのままでよければ、このコメントアウトをはずして有効にします。
# Match this to the file owner of groonga database files if groonga-httpd is
# run as root.
user groonga groonga;
設定ファイルを変更したら、サーバーを再起動します。
なお、3.0.1以降ではデフォルトで有効となっているため、groongaユーザーのままで運用する場合は、上記の操作は不要です。
Debian/Ubuntuの場合:
% sudo service groonga-httpd restart
Fedoraの場合:
% sudo systemctl restart groonga-httpd
サーバーを再起動した後で、以下のようにしてプロセスを確認します。
% sudo service groonga-httpd restart
* Restarting a HTTP server for groonga which provides full-text search engine and column store groonga-httpd [ OK ]
% ps -ef|grep groonga
root 6542 1 0 11:32 ? 00:00:00 nginx: master process /usr/sbin/groonga-httpd
groonga 6544 6542 0 11:32 ? 00:00:00 \_ nginx: worker process
先ほどとは違って、worker processというのがgroonga-httpdの下にぶらさがっているのがわかります。
では、先程と同様にブラウザからhttp://localhost:10041にアクセスしてみてください。
無事、管理画面が表示されるはずです。
まとめ
groonga-httpdをセットアップしたときに、データベースにアクセスするユーザーとその権限が一致しないと失敗するというハマりポイントとその対策について紹介しました。
Groongaに興味を持ったなら、まずはインストールして試してみてください。
チュートリアルも用意しています。