PostgreSQLインストール Version 9.0.x with CentOS 6 or 7 2016/12

グループとユーザ、インストールディレクトリの作成。
sudo groupadd postgres
sudo useradd -g postgres postgres
sudo passwd postgres
sudo mkdir /usr/local/pgsql
sudo chown postgres.postgres /usr/local/pgsql
ソースの取得と改ざん確認。
su - postgres
mkdir src
cd src/ 
wget https://ftp.postgresql.org/pub/source/v9.6.1/postgresql-9.6.1.tar.gz
wget https://ftp.postgresql.org/pub/source/v9.6.1/postgresql-9.6.1.tar.gz.md5
md5sum --check postgresql-9.6.1.tar.gz.md5
※ md5のハッシュ値をダウンロードしなくても、md5sum postgres-x.x.x.tar.gz.md5 でハッシュ値を計算してブラウザ上の値と見比べればOK。

解凍、コンパイルとインストール。SSLの場合は別途。
tar xzvf postgresql-x.x.x.tar.gz
cd postgresql-x.x.x
./configure
/* インストール先を/usr/local/pgsql以外に変更する場合は、$ ./configure --prefix=/install/dir */
make
make check
sudo make install
CentOSをミニマムインストールしてコンフィギュアでエラーの場合
checking for gcc... no -> # yum install gcc
checking for library containing readline... no -> # yum install readline-devel
checking for inflate in -lz... no -> # yum install zlib-devel

環境変数の設定。~postgresql/.bash_profileの末尾へ追加。
export PATH=$PATH:/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
. ~/bash_profile

データベースクラスタの初期化
initdb -D /usr/local/pgsql/data --no-locale
テスト起動
pg_ctl start
Starting PostgreSQL: ok
netstat -atp | grep postgres
tcp 0 0 localhost.localdom:postgres *:* LISTEN xxxxx/postmaster
pg_ctl stop
Stopping PostgreSQL: ok
起動設定(CentOS6)
sudo cp ~postgres/src/postgresql-x.x.x/contrib/start-scripts/linux /etc/init.d/postgresql
sudo vi /etc/init.d/postgresql
# Where to keep a log file
#PGLOG="$PGDATA/serverlog" # ログ設定を変更 : postgresql.confで設定。
PGLOG="/dev/null"
sudo chmod +x /etc/init.d/postgresql
sudo chkconfig --add postgresql
sudo chkconfig postgresql on
sudo chkconfig --list postgresql
postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sudo service postgresql start
Starting PostgreSQL: ok
sudo service postgresql stop
Stopping PostgreSQL: ok
起動設定 (CentOS7) PostgreSQL用のサービスファイルを作成する。
$ su -
# vi /lib/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGPORT=5432
Environment=PGDATA=/usr/local/pgsql/data
OOMScoreAdjust=-1000

ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -s

TimeoutSec=300

[Install]
WantedBy=multi-user.target
サービス設定と起動確認
# systemctl enable postgresql
# systemctl start postgresql.service
# systemctl status postgresql.service
# systemctl stop postgresql.service
ファイアーウォールの設定 : 外部からアクセスの必要がある場合 (CentOS6)
iptables -A INPUT -p tcp --dport=5432 -j ACCEPT
iptables -A OUTPUT -p tcp --sport=5432 -j ACCEPT
ファイアーウォールの設定 : 外部からアクセスの必要がある場合(CentOS7)
firewall-cmd --permanent --zone=public --add-service=postgresql
firewall-cmd --reload
ユーザとデータベースの作成。
$ createuser user_1
$ createdb -E UTF-8 -O user_1 -T template0 user1_db
※ 日本語を使うときはUTF-8で

設定ファイル。
pg_hba.conf アクセス設定
postgresql.conf 機能設定
listen_address = '*' にしないと外部から接続できないことに注意。
※ SSLを使用するためには別途設定が必要。