PostgreSQL 9.4.4 をソースからインストールする手順。初期設定まで

少し古い環境ですが、CentOS 5.6 に PostgreSQL 9.4.4 をソースからインストールする際の手順です。とはいっても CentOS 6 になっても手順は変わらないかと。

コマンドの細かな説明は端折りまくりますのでご了承ください。。。。
(メモだから。メモだから。)

インストールする

とりあえずRPM版のPostgreSQLがインストールされていないかを念の為に確認しておきます。あれば `rpm -e` で削除。

$ rpm -qa | grep postgres
postgresql-libs-8.1.23-1.el5_6.1
postgresql-libs-8.1.23-1.el5_6.1

ライブラリのみなので今回は削除しません。

続いてダウンロードとインストールまで一気に。
特に configure 時のオプションは付けません。

$ cd /usr/local/src/
$ wget https://ftp.postgresql.org/pub/source/v9.4.4/postgresql-9.4.4.tar.gz
$ tar -xzf postgresql-9.4.4.tar.gz
$ cd postgresql-9.4.4
$ ./configure
$ gmake
 ↑
 結構時間がかかる....
$ gmake install
...........
.........
....
PostgreSQL installation complete.

ここまででとりあえずのインストールが完了です。
次はOSユーザーの作成と初期設定。

OS環境の作成

OSアカウントを作成して、PostgreSQL用のデータディレクトリとログディレクトリを作成します。

$ adduser postgres
$ passwd postgres
$ mkdir /usr/local/pgsql/data
$ mkdir /usr/local/pgsql/pg_log
$ chown postgres:postgres /usr/local/pgsql/data
$ chown postgres:postgres /usr/local/pgsql/pg_log

postgresqlユーザーの環境変数を変更して PostgreSQL のパスを通します。

$ su - postgres
$ vi ~/.bash_profile

PATH=$PATH:$HOME/bin
↓ 変更
PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin

$ source .bash_profile

ここまででOS側の準備が完了です。
続いてデータベースの初期化など。

データベースの初期化と初期設定

データベースを初期化して作成します。
ちなみに文字コードはUTF-8でいってみたいと思います。

$ initdb --encoding=UTF-8 --locale=ja_JP.UTF-8 -D /usr/local/pgsql/data

続いて初期設定。

$ cp /usr/local/pgsql/data/postgresql.conf /usr/local/pgsql/data/postgresql.conf.org
$ vi /usr/local/pgsql/data/postgresql.conf

とりあえず下記設定を設定ファイルの最上部に追記します。

# -----------------------------
# Custom configuration
# -----------------------------
deadlock_timeout = 10000
listen_addresses = '*'
log_checkpoints = on
log_connections = on
log_directory = '../pg_log'
log_disconnections = on
log_filename = 'postgresql-%Y-%m.log'
log_line_prefix = '%t %d '
log_lock_waits = on
log_min_duration_statement = 30s
log_min_error_statement = error
log_statement = none
log_temp_files = 0
logging_collector = on
track_activities = on

以上で初期設定までが完了です。
必要に応じて [/bash]pg_hba.conf[/bash] を修正して、接続許可のネットワークを変更してください。

起動してみてベンチマーク

起動スクリプトを作成します。

$ su -
$ cp /usr/local/src/postgresql-9.4.4/contrib/start-scripts/linux /etc/rc.d/init.d/postgres
$ chmod 755 /etc/rc.d/init.d/postgres
$ /sbin/chkconfig --add postgres

いざ起動!

$ /etc/rc.d/init.d/postgres start
Starting PostgreSQL: ok
$ ps ax | grep post
11506 ?        S      0:00 /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
11511 ?        Ss     0:00 postgres: logger process
11513 ?        Ss     0:00 postgres: checkpointer process
11514 ?        Ss     0:00 postgres: writer process
11515 ?        Ss     0:00 postgres: wal writer process
11516 ?        Ss     0:00 postgres: autovacuum launcher process
11517 ?        Ss     0:00 postgres: stats collector process
11519 pts/1    R+     0:00 grep post

無事に起動していますので、最後にベンチマークをしてみて動作を確認します。

$ cd /usr/local/src/postgresql-9.4.4/contrib/pgbench/
$ make
$ make install
$ su - postgres
$ /usr/local/pgsql/bin/createdb bench
$ psql -l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 bench     | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
 postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
 template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

$ /usr/local/pgsql/bin/pgbench -i bench
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
creating tables...
100000 of 100000 tuples (100%) done (elapsed 0.13 s, remaining 0.00 s).
vacuum...
set primary keys...
done.

$ /usr/local/pgsql/bin/pgbench bench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 1
number of threads: 1
number of transactions per client: 10
number of transactions actually processed: 10/10
latency average: 0.000 ms
tps = 679.117148 (including connections establishing)
tps = 1012.658228 (excluding connections establishing)

キチンとベンチマークも動きました。
とりあえずこれでソースからのインストールは完了。

コメントを残す

メールアドレスが公開されることはありません。