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. postgresユーザーになります。
    # su postgres
    
  3. コンソールに入ります。
    postgres~$ psql
    
  4. コンソール上で、pgsql ユーザーにパスワードを設定します。
    postgres=# ALTER USER postgres ENCRYPTED PASSWORD 'password';
    
  5. 一度コンソールを脱出し、データベースディレクトリの pg_hba.conf に以下を追加します。必要のない認証設定は削除しても構いません。peerはUnix USERと同一のときに許可する設定です。
    # TYPE  DATABASE	USER	ADDRESS METHOD
    local	all		all		md5
    
  6. 変更したら、PostgreSQL デーモンを再起動します。
  7. 再びコンソールに入ります
    postgres~$ psql postgres postgres
    
  8. adiary用のユーザーとデータベースを作成します。
    postgres=# CREATE USER adiary ENCRYPTED PASSWORD 'password';
    postgres=# CREATE DATABASE adiary OWNER=adiary ENCODING 'UTF8';
    

コマンドのメモ

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

postgres~$ psql -l