The Sixwish project

CentOS 5 PostgreSQL Setting

PostgreSQL

仕事でもっともよく使うデータベース。
ここ最近までは、ソースコードからインストールしていたけれど、バージョン的にも問題はなさそうなので、お手軽にrpmからインストールする。

ここでは、「CentOS 5 Sixwish 標準インストールマニュアル、標準最小構成化マニュアル」並びに「Xen Domain-U関連」の最小構成構築の手順に従って構築された環境であることを前提としています。
そのため、異なる方法でインストールした場合は、状況が少し異なるので読替えるなどしてください。
なお、ここでの表記は「Xen Domain-U関連」に記載されている「CentOS 5 on Xen(CnetOS5) Domain-U用最小化手順仕上げ」まで完了した状態から始めている例です。

インストール

yum経由でインストールする。
yum search postgresqlあたりで検索をかけると、いろいろなパッケージが出てくるが、必要となるのはpostgresql-serverなので要注意。
postgresqlが本命のような気もするであろうけれど、こっちはクライアントバイナリとライブラリしか詰まっていないのです。DBサーバは無いけれど、他のサーバーにあるDBにアクセスしたい時は、逆にこれだけ入れてあげればOK。

前置きはこの程度にして、以下手順。

[root@sixwish ~]# yum -y install postgresql postgresql-libs postgresql-server
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
  中略

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 postgresql              i386       8.1.8-1.el5      updates           2.8 M
 postgresql-libs         i386       8.1.8-1.el5      updates           196 k
 postgresql-server       i386       8.1.8-1.el5      updates           4.0 M

Transaction Summary
=============================================================================
Install      3 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 7.0 M
Downloading Packages:
(1/3): postgresql-server- 100% |=========================| 4.0 MB    xx:xx
(2/3): postgresql-8.1.8-1 100% |=========================| 2.8 MB    xx:xx
(3/3): postgresql-libs-8. 100% |=========================| 196 kB    xx:xx
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: postgresql-libs              ######################### [1/3]
  Installing: postgresql                   ######################### [2/3]
  Installing: postgresql-server            ######################### [3/3]

Installed: postgresql.i386 0:8.1.8-1.el5 postgresql-libs.i386 0:8.1.8-1.el5 postgresql-server.i386 0:8.1.8-1.el5
Complete!
[root@sixwish ~]#

これでインストール完了です。

初期設定

今回はSELinuxがenabledになっているので、initdbするにも一苦労なので、initスクリプト任せで設定してしまいます。

[root@sixwish ~]# service postgresql start
データベースを初期化中:                                    [  OK  ]
postgresql サービスを開始中:                               [  OK  ]
[root@sixwish ~]# su - postgres
-bash-3.1$ psql -l
        List of databases
   Name    |  Owner   | Encoding
-----------+----------+----------
 postgres  | postgres | UTF8
 template0 | postgres | UTF8
 template1 | postgres | UTF8
(3 rows)

-bash-3.1$ logout
[root@sixwish ~]#

これで、initdbが終わり、initdbで作成されるファイルに対してSELinuxのラベル付けが完了するわけです。
これを手動で行う場合は、いろいろと調べてからやらないとならないのでお勧めできません。

初期化と文字コード

OSがutf-8ベースになったので、PHPを初め、軒並みutf-8で統一しているので、個人的には何も行うことなく初期化の手順を踏めますが、そうでない場合は、初期化前に行うことがあれこれと……

例えば、EUC-JPで使う事が前提となっている場合は、/etc/rc.d/init.d/postgresqlのファイル中からinitdbを探して、初期化オプションに--encoding=EUC-JP --no-localeをつけないと、createdbしたときに問答無用でutf-8になってしまうので要注意。

もっとも、createdbする時に、オプション指定すればいいだけなんですがね……

サービスの登録

起動時に自動的にサービスが開始するようにしておきます。

[root@sixwish ~]# chkconfig postgresql on
[root@sixwish ~]# chkconfig --list postgresql
postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@sixwish ~]# 

無駄に動かしっぱなしでも仕方が無いので、一旦止めておきます。

[root@sixwish ~]# service postgresql stop
postgresql サービスを停止中:                               [  OK  ]
[root@sixwish ~]#

とりあえず、ここまで。