少し古い環境ですが、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)
キチンとベンチマークも動きました。
とりあえずこれでソースからのインストールは完了。