PostgreSQLでの運用

以下を踏まえた上でご利用ください。

  • 外部DB運用はDBモジュールロードにとても時間がかかります。先に高速動作を設定してください。
  • 標準のText-DBはよくテストされていて、よほど多くの記事を扱わない限り十分なパフォーマンスがあります。

adiaryの運用では、MySQLよりもPostgreSQLのほうがよくテストされています。

準備

adiaryをインストールするサーバに、PostgreSQLのクライアントライブラリ(DBD::Pg)をインストールしてください。

# apt-get install libdbd-pg-perl

設定

まずPostgreSQLに、adiary用のアカウントと、そのアカウントが所有するデータベースを作成してください。

その際、データベースの文字コードはutf8にしてください

次に adiary.conf.cgiを設定します。

# テキストDBの場合
#<$DB = loadpm('DB_text', "<@data_dir>db/")>	←コメントアウト

# PostgreSQL の場合(データベース名、ユーザー名、パスワード)
<$DB = loadpm('DB_pg', 'database=adiary', 'adiary', 'test', {Pool=>1} )>

ローカル以外のPostgreSQLサーバに接続する場合のサンプル。

<$DB = loadpm('DB_pg', 'database=adiary;host=pgsql.example.com', (略))>
<$DB = loadpm('DB_pg', 'database=adiary;port=12345',(略))>
<$DB = loadpm('DB_pg', 'database=adiary;host=10.45.67.89;port=12345',(略))>

サーバの環境設定メモ

  1. PostgreSQL をインストールします。
    # apt-get install postgresql
    
  2. データベースを初期化(rootでは実行できません)
    最近のディストリビューションはデーモンを起動すれば勝手に作成してくれます。
    pgsql~$ initdb /data/directory --locale=ja_JP.UTF8
    
  3. スーパーユーザー名と同一のデータベースを作成します。
    pgsql~$ createdb pgsql
    
  4. コンソールに入ります。
    pgsql~$ psql [database name] [user name]
    
  5. コンソール上で、pgsql ユーザーにパスワードを設定します。
    pgsql=# ALTER USER pgsql ENCRYPTED PASSWORD 'password';
    
  6. 一度コンソールを脱出し、データベースディレクトリの pg_hba.conf を編集します。
    変更前)local   all    all           trust
    変更後)local   all    all           md5
    
    trust となっている部分はすべて md5 に変更する(そうしないとパスワード未承認でつながってしまう)。
  7. 変更したら、PostgreSQL デーモンを再起動します。
  8. 再びコンソールに入ります
    pgsql~$ psql pgsql pgsql
    
  9. adiary用のユーザーとデータベースを作成します。
    pgsql=# CREATE USER adiary ENCRYPTED PASSWORD 'password';
    pgsql=# CREATE DATABASE adiary OWNER=adiary ENCODING 'UTF8';
    

コマンドのメモ

データベース一覧(文字コード付)

pgsql~$ psql -l
OK キャンセル 確認 その他