PostgreSQLインストール Version 10.0.x with Ubuntu 16.04 2018/2

コンパイルに必要なライブラリのインストール
# GNU Readline
sudo apt-get install libreadline6-dev
# zlib
sudo apt-get install zlib1g zlib1g-dev
# OpenSSL
sudo apt-get install libssl-dev
# bison
sudo apt-get install bison
# flex
sudo apt-get install flex
グループとユーザ、インストールディレクトリの作成。
# ユーザの追加
sudo adduser postgres
# グループの追加
sudo adduser postgres postgres
sudo mkdir /usr/local/pgsql
sudo chown postgres.postgres /usr/local/pgsql
ソースの取得とコンパイル、インストール。
su - postgres
git clone git://git.postgresql.org/git/postgresql.git
cd postgres
git checkout master
./configure --with-openssl --enable-debug
make
make check
make install
sudo make install
環境変数の設定。~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
起動設定
PostgreSQL用のサービスファイルを作成する。
sudo 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
サービス設定と起動確認
sudo systemctl enable postgresql
sudo systemctl start postgresql.service
sudo systemctl status postgresql.service
sudo systemctl stop postgresql.service
ユーザとデータベースの作成。
createuser user_1
createdb -E UTF-8 -O user_1 -T template0 user1_db
※ 日本語を使うときはUTF-8で 設定ファイル。
pg_hba.conf アクセス設定
postgresql.conf 機能設定
listen_address = '*' にしないと外部から接続できないことに注意。