PostgreSQLのインストール
PostgreSQLインストール時の設定メモです。
環境情報
- CentOS Linux release 7.6.1810 (Core)
- PostgreSQL 10.7
PostgreSQLの初期設定
必要パッケージのインストール
$ sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
clientパッケージをインストール。
$ sudo yum -y install postgresql10 $ psql --version psql (PostgreSQL) 10.7
serverパッケージのインストール。
$ sudo yum install -y postgresql10-server $ sudo yum install -y postgresql10-contrib $
OSのロケールとタイムゾーン設定
作成されるデータベースは、OSに設定されたロケールとタイムゾーンを参照するため、OSの設定を日本用に変更しておきます。
日本語用ロケールのモジュールをインストール。
$ sudo yum reinstall -y glibc-common $ $ localectl list-locales | grep ja_JP.utf8 ja_JP.utf8
ロケールを ja_JP.utf8
に。
$ sudo localectl set-locale LANG=ja_JP.utf8 $ $ sudo localectl set-keymap jp106 $ $ localectl status System Locale: LANG=ja_JP.utf8 VC Keymap: jp106 X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp
タイムゾーンを Asia/Tokyo
に。
$ sudo timedatectl set-timezone Asia/Tokyo
OSユーザ postgres
の設定
パッケージをインストールすることで、OSユーザ postgres
が作成されています。このOSユーザにsudo権限を追加。
$ sudo visudo ... root ALL=(ALL) ALL postgres ALL=(ALL) NOPASSWD: ALL ...
postgres
OSユーザにスイッチ。
$ sudo su - postgres
PostgreSQLデータベースの初期化/起動
データベースクラスタの新規作成。
$ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb Initializing database ... OK
ログ /var/lib/pgsql/10/initdb.log
データベースシステム内のファイルの所有者は"postgres"となります。 このユーザがサーバプロセスも所有する必要があります。 データベースクラスタはロケール"ja_JP.utf8"で初期化されます。 そのためデフォルトのデータベース符号化方式はUTF8に設定されました。 initdb: ロケール"ja_JP.utf8"用の適切なテキスト検索設定が見つかりません デフォルトのテキスト検索設定はsimpleに設定されました。 データベージのチェックサムは無効です。 既存のディレクトリ/var/lib/pgsql/10/dataの権限を修正します ... 完了 サブディレクトリを作成します ... 完了 max_connectionsのデフォルト値を選択します ... 100 shared_buffersのデフォルト値を選択します ... 128MB 動的共有メモリの実装を選択します ... posix 設定ファイルを作成します ... 完了 ブートストラップスクリプトを実行します ... 完了 ブートストラップ後の初期化を行っています ... 完了 データをディスクに同期します...完了 成功しました。以下のようにしてデータベースサーバを起動できます。 /usr/pgsql-10/bin/pg_ctl -D /var/lib/pgsql/10/data/ -l <ログファイル> start
自動起動設定の有効化。
$ sudo systemctl enable postgresql-10
起動。
$ sudo systemctl start postgresql-10 $ $ ps -aef | grep postgres root 15113 14208 0 13:59 pts/0 00:00:00 su postgres postgres 15117 15113 0 13:59 pts/0 00:00:00 bash postgres 15268 1 0 14:11 ? 00:00:00 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/ postgres 15270 15268 0 14:11 ? 00:00:00 postgres: logger process postgres 15272 15268 0 14:11 ? 00:00:00 postgres: checkpointer process postgres 15273 15268 0 14:11 ? 00:00:00 postgres: writer process postgres 15274 15268 0 14:11 ? 00:00:00 postgres: wal writer process postgres 15275 15268 0 14:11 ? 00:00:00 postgres: autovacuum launcher process postgres 15276 15268 0 14:11 ? 00:00:00 postgres: stats collector process postgres 15277 15268 0 14:11 ? 00:00:00 postgres: bgworker: logical replication launcher postgres 15280 15117 0 14:11 pts/0 00:00:00 ps -aef postgres 15281 15117 0 14:11 pts/0 00:00:00 grep postgres
確認
データベースに接続し、利用されているロケールと文字コードを確認。
$ psql psql (10.7) Type "help" for help. postgres=# \l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限 -----------+----------+------------------+------------+-------------------+----------------------- postgres | postgres | UTF8 | ja_JP.utf8 | ja_JP.utf8 | template0 | postgres | UTF8 | ja_JP.utf8 | ja_JP.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.utf8 | ja_JP.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (3 行) postgres=# show timezone; TimeZone ---------- Japan (1 行)