PostgreSQLの設定

WIKIPLUSでは、データベースにはPostgreSQLが必須です。

ここでは、PostgreSQLの設定方法をご案内します。

WIKIPLUSのデータベース利用について

WIKIPLUSのデータベースには、インスタンス情報やアカウント情報、承認フローの情報などが保存されます。コンテンツデータは含まれないため、比較的負荷は軽いものとなります。

セットアップ

ここでは、PostgreSQL 9.4がインストールされた直後の状態を例として、初期設定を含めてご案内します。

データベースクラスタの初期化

# /etc/init.d/postgresql-9.4 initdb

設定ファイルの編集

/var/lib/pgsql/9.4/data/pg_hba.conf

以下はIPv4のみを設定した際の一例です。サーバーの設計やポリシーにより変更してください。

WIKIPLUSでは、全体で1つのデータベースを使用します。

local   all         postgres                                    trust
host    all         postgres            127.0.0.1/32            trust
host    sameuser        all             127.0.0.1/32            password
local   sameuser        all                                     password
/var/lib/pgsql/9.4/data/postgresql.conf

TCPリスニングの設定を行います。

また、動作するApache / PHPのインスタンスの数(preforkならMaxClient、FastCGIなら同時起動の数)に余裕を加えてmax_connectionの数を設定する必要があります。

...
listen_addresses = 'xx.yy.zz.ww'  # what IP address(es) to listen on;
                                  # comma-separated list of addresses;
                                  # defaults to 'localhost'; use '*' for all
                                  # (change requires restart)
port = 5432                       # (change requires restart)
max_connections = 100             # (change requires restart)
...

PostgreSQLサーバーの起動と、データベース・ユーザーの作成

PostgreSQLを起動し、「wikiplus」というユーザーと同名のデータベースを作成します。

# service postgresql-9.4 start
# chkconfig postgresql-9.4 on 
$ /usr/pgsql-9.4/bin/createuser -e -h localhost -U postgres -D -E -P -R -S wikiplus
$ /usr/pgsql-9.4/bin/createdb -e -h localhost -U postgres -E UTF8 -O wikiplus -T template0 wikiplus

作成したユーザーのパスワードは、後ほどWIKIPLUSの設定ファイル(server-config.yml)に記述します。

接続の確認

WIKIPLUSサーバーからデータベースに接続できるかを確認します。

$ /usr/pgsql-9.4/bin/psql -h 127.0.0.1 -U wikiplus -W
ユーザ wikiplus のパスワード: 
psql (9.4.4)
"help" でヘルプを表示します.

wikiplus=> \q

(参考)Out Of Memoryが発生する場合は

WIKIPLUSとPostgreSQLを同サーバーにインストールした場合、Apacheのインスタンスがメモリを使用し過ぎることでPostgreSQLがOut Of Memoryとなる場合があります。

その際は、以下を参考にチューニングしてください。

  • ApacheのMaxClientなどを調整する
  • limitsやcgroupsなどを利用し、PostgreSQLのメモリを確保する